flutterupushplugin 0.0.4 flutterupushplugin: ^0.0.4 copied to clipboard
一个使用u meng push(友盟推送flutter版)的flutter插件。
UmengPush Flutter Plugin #
安装 #
在工程 pubspec.yaml 中加入 dependencies
dependencies:
flutterupushplugin: ^0.0.4
配置 #
Android: #
第一步: #
在 android/app/build.gradle
中添加下列代码:
注意manifestPlaceholders
里面的值格式一定是:@xxxxxx,@不能省略,省略了就会注册失败。
android: {
....
defaultConfig {
applicationId "替换成自己应用 ID"
...
manifestPlaceholders = [
UMENG_APPKEY : "@替换成UMENG_APPKEY",
UMENG_MESSAGE_SECRET : "@替换成UMENG_MESSAGE_SECRET",
UMENG_CHANNEL : "UMENG",
XIAOMI_APPID : "@替换成XIAOMI_APPID",
XIAOMI_APPKEY : "@替换成XIAOMI_APPKEY",
VIVO_APPKEY : "@替换成VIVO_APPKEY",
VIVO_APPID : "@替换成VIVO_APPID",
OPPO_APPSECRET : "@替换成OPPO_APPSECRET",
OPPO_APPKEY : "@替换成OPPO_APPKEY",
HUAWEI_APPID :"@替换成HUAWEI_APPID",
MEIZU_APPID :"@替换成MEIZU_APPID",
MEIZU_APPKEY : "@替换成MEIZU_APPKEY"
]
}
}
如果没有申请某个厂商通道,就不用配置,例如:没有申请OPPO推送,就放空处理
android: {
....
defaultConfig {
applicationId "替换成自己应用 ID"
...
manifestPlaceholders = [
UMENG_APPKEY : "@替换成UMENG_APPKEY",
UMENG_MESSAGE_SECRET : "@替换成UMENG_MESSAGE_SECRET",
UMENG_CHANNEL : "UMENG",
XIAOMI_APPID : "@替换成XIAOMI_APPID",
XIAOMI_APPKEY : "@替换成XIAOMI_APPKEY",
VIVO_APPKEY : "@替换成VIVO_APPKEY",
VIVO_APPID : "@替换成VIVO_APPID",
OPPO_APPSECRET : "",//没有申请OPPO推送,就放空处理
OPPO_APPKEY : "",//没有申请OPPO推送,就放空处理
HUAWEI_APPID :"@替换成HUAWEI_APPID",
MEIZU_APPID :"@替换成MEIZU_APPID",
MEIZU_APPKEY : "@替换成MEIZU_APPKEY"
]
}
}
第二步: #
1.主项目的启动类一定要要继承 UPushMainActivty
,例如:
public class MainActivity extends UPushMainActivty {
}
2.自定义Recevier组件受魅族接入方式限制,必须在包名目录实现一个自定义Recevier,继承自MeizuPushReceiver,例如:
public class MeizuTestReceiver extends MeizuPushReceiver {
}
然后在AndroidManifest.xml中配置该Recevier,例如:
<!--魅族push应用定义消息receiver声明 -->
<receiver android:name="${applicationId}.MeizuTestReceiver">
<intent-filter>
<!-- 接收push消息 -->
<action android:name="com.meizu.flyme.push.intent.MESSAGE" />
<!-- 接收register消息 -->
<action android:name="com.meizu.flyme.push.intent.REGISTER.FEEDBACK" />
<!-- 接收unregister消息-->
<action android:name="com.meizu.flyme.push.intent.UNREGISTER.FEEDBACK" />
<!-- 兼容低版本Flyme3推送服务配置 -->
<action android:name="com.meizu.c2dm.intent.REGISTRATION" />
<action android:name="com.meizu.c2dm.intent.RECEIVE" />
<category android:name="${applicationId}"></category>
</intent-filter>
</receiver>
3. 厂商对后台进程做了诸多限制。若使用一键清理,应用的channel进程被清除,将接收不到推送。为了增加推送的送达率,接入厂商托管弹窗功能。通知将由厂商系统托管弹出,点击通知栏将跳转到指定的Activity。该Activity需继承自UPushOffLineNotificationActivity,例如: #
public class MipushTestActivity extends UPushOffLineNotificationActivity {
}
然后在AndroidManifest.xml中配置该 MipushTestActivity,例如:
<activity
android:name="${applicationId}.MipushTestActivity"
android:launchMode="singleTask"
android:exported="true"/>
4.做SDK代码初始化工作,所以自定义的Application需集成 UPushApplication,例如: #
public class MyApplication extends UPushApplication {
}
然后在AndroidManifest.xml中配置该MyApplication,例如:
<manifest>
...
<application
android:name="替换成自己应用的包名.MyApplication"
>
</manifest>
注册成功标记 #
小米Push通道
注册成功后会在tag:MiPushBroadcastReceiver下面打印log: onCommandResult is called. regid= xxxxxxxxxxxxxxxxxxxxxxx接收到小米消息则会打印log: onReceiveMessage,msg= xxxxxxxxxxxxxxxxxxxxxxx
华为Push通道
注册成功后会在tag:HuaWeiReceiver下面打印log: 获取token成功,token= xxxxxxxxxxxxxxxxxxxxxxx接收到华为消息则会打印log: HuaWeiReceiver,content= xxxxxxxxxxxxxxxxxxxxxxx
魅族Push通道
注册成功后会在tag:tag:MeizuPushReceiver下面打印log: onRegister, pushId=xxxxxxxxxxxxxxxxxxxxxxx
OPPO厂商通道
是否注册成功, 可以通过过滤OppoPush关键字查看, 注册成功会打印onRegister regid=**相关日志, 否则检查参数是否正确填入
vivo Push通道
是否注册成功, 可以通过过滤PushMessageReceiver关键字查看