u_push_plugin 0.0.9 u_push_plugin: ^0.0.9 copied to clipboard
友盟推送Plugin
u_push_plugin #
友盟推送Plugin
备注(插件当前处于开发阶段不开放使用,仅供测试) #
Getting Started #
Android端 #
注意 由于UmengNotifyClickActivity原因,gradle配置使用
api 'com.umeng.umsdk:push:6.1.0'
api 'com.umeng.umsdk:agoo-accs:3.3.8.8-open-fix2'
如导致依赖冲突 请在主项目gradle中进行依赖配置
首先声明自定义 Application
class RApplication :FlutterApplication(){
override fun onCreate() {
super.onCreate()
//注册友盟推送
PushManager.instance.initUPush(this,"YourKey","YourSecret")
///三方渠道注册 如果没有对应平台不实现对应方法就好
OtherPlatformBuilder.Builder(this)
.initHuawei() //注册华为
.initMeiZu("", "") //注册魅族
.initOppo("", "") //注册oppo
.initVivo() //注册vivo
.initXiaoMi("", "") //注册小米
.build().register() //注册动作
}
}
三方渠道接收消息用(不使用不实现就好)
class NotifyActivity : UmengNotifyClickActivity() {
var message = ""
override fun onMessage(p0: Intent?) {
//接收到代码,然后做你想做的
//由于FlutterActivity所以导致无法在main中进行接收,曲线救国,如果有更好的方法也希望您能提供哦
//此处我是将activity设置为全透明,并在此处获取数据进行跳转
//以下代码仅供参考
val body = p0?.getStringExtra("body")
var intent = Intent()
val data = Gson().fromJson<PushData>(body,PushData::class.java)
intent.putExtra("message",data.extra.message)
intent.putExtra("type",data.extra.type)
intent.setClass(this,MainActivity::class.java)
startActivity(intent)
finish()
}
}
...
///如果是三方渠道冷启动时,还需要在MainActivity中实现数据整合,我是在onCreate中实现的
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
intent.extras?.run {
keySet().forEach {
this[it]?.run {
MessageManager.instance.addColdStarData(it, this.toString());
}
}
MessageManager.instance.buildMessageMap();
}
}
MainActivity中重写onNewIntent方法
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
MessageManager.instance.setIntentJson(intent)
}
flutter 端 #
开启友盟消息监听回调
UPushPlugin.initMessageListener();
开启的登陆完成监听(由于登录注册是异步的,防止主动获取时无法获取到)
UPushPlugin.initRegisterListener((value) {
deviceToken = value.message;
setState(() {});
});
消息监听
UPushPlugin.initMessageResultListener((value) {
MessageData(value);
setState(() {
message = MessageData(value).message;
});
});
后台进入,冷启动主动获取数据
UPushPlugin.getCacheMessage().then((value) {
if(value.isNotEmpty){
setState(() {
message = MessageData(value).message;
});
}
});
主动获取deviceToken
deviceToken = await UPushPlugin.getDeviceToken();
回传信息数据转dart
class MessageData extends BaseMessageData{
String message;
int type;
MessageData(Map<dynamic, dynamic> mapData) : super(mapData);
@override
void createDataByMap(Map<dynamic, dynamic> mapData) {
message = mapData["message"];
type = int.parse(mapData["type"]) ;
}
}
关闭消息推送
await UPushPlugin.closePush();
//回参
class ToggleData{
bool success;
String message;
ToggleData(this.success, this.message);
@override
String toString() {
return 'ToggleData{success: $success, message: $message}';
}
}
开启消息推送
await UPushPlugin.openPush();
//回参
class ToggleData{
bool success;
String message;
ToggleData(this.success, this.message);
@override
String toString() {
return 'ToggleData{success: $success, message: $message}';
}
}
别名设置及标签设置以及log相关见example example