u_push_plugin 0.0.4 u_push_plugin: ^0.0.4 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()
}
}
- activity中重写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"]) ;
}
}