# SLUPush **Repository Path**: Sun.start/SLUPush ## Basic Information - **Project Name**: SLUPush - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-11 - **Last Updated**: 2021-10-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 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() //注册动作 } } ``` [具体清单文件配置三方配置请查看官方文档](https://developer.umeng.com/docs/67966/detail/98589) *三方渠道接收消息用(不使用不实现就好)* ``` 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(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 mapData) : super(mapData); @override void createDataByMap(Map 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](https://pub.flutter-io.cn/packages/u_push_plugin/example)