环境:自定义离线基座SDK2.8.11, Androidstudio, 魅族16 plus, Android 8.0
-
1.配置第三方推送-个推
https://nativesupport.dcloud.net.cn/AppDocs/usemodule/androidModuleConfig/push?id=%e4%b8%aa%e6%8e%a8%e6%8e%a8%e9%80%81
上面这个是dcloud在个推上封装的一层,但是应用离线情况下,还依然需要按照个推的文档 去集成各个厂商 -
2.第三方厂商渠道推送集成:小米、华为、oppo 都已经成功(个推官方文档)、魅族失败
-
3.魅族配置经过如下
-
3.1 GetuiSDK-support-MZP-<version>.jar 复制到 app 模块⽬录下的 libs ⽂件夹中
-
3.2 在 app/build.gradle ⽂件中的 android.defaultConfig 块中添加 manifestPlaceholders 块,配置推送辅助 SDK 相关的应⽤参数
// 魅族相关应用参数 MEIZU_APP_ID : "", MEIZU_APP_KEY: "",
-
3.3 在 AndroidManifest.xml 中需要正确配置个推 SDK 所需的 Service、Activity、以及 BroadcastReceiver 等组件。
<meta-data android:name="MEIZUPUSH_APPID" android:value="MZ_${MEIZU_APP_ID}" /> <meta-data android:name="MEIZUPUSH_APPKEY" android:value="MZ_${MEIZU_APP_KEY}" /> <service android:name="com.meizu.cloud.pushsdk.NotificationService" android:exported="true" android:process=":pushservice" /> <receiver android:name="com.meizu.cloud.pushsdk.SystemReceiver" android:process=":pushservice"> <intent-filter> <action android:name="com.meizu.cloud.pushservice.action.PUSH_SERVICE_START" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> <receiver android:name="com.igexin.sdk.FlymePushReceiver" android:process=":pushservice"> <intent-filter> <action android:name="com.meizu.flyme.push.intent.MESSAGE" /> <action android:name="com.meizu.flyme.push.intent.REGISTER.FEEDBACK" /> <action android:name="com.meizu.flyme.push.intent.UNREGISTER.FEEDBACK" /> <action android:name="com.meizu.c2dm.intent.REGISTRATION" /> <action android:name="com.meizu.c2dm.intent.RECEIVE" /> <category android:name="${applicationId}" /> </intent-filter> </receiver>
-
3.4 请在 manifest 根标签下加⼊辅助 SDK 所必需的权限
<permission android:name="${applicationId}.push.permission.MESSAGE" android:protectionLevel="signature" /> <permission android:name="${applicationId}.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.meizu.flyme.push.permission.RECEIVE" /> <uses-permission android:name="com.meizu.c2dm.permission.RECEIVE" /> <uses-permission android:name="${applicationId}.push.permission.MESSAGE" /> <uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
华为,oppo、小米配置都是这个流程,只是内容不一样,魅族配置结束,我打包测试推送
结果: android studio中魅族手机启动打包的应用,pushService都没起来,更别谈获得cid,
以及后续的推送了联系个推的技术人员,他们告知魅族系统存在杀死默认的推送服务情况,
还是可以保险自己定义一个,如下: -
4.配置推送服务
为了让推送服务在部分主流机型上更稳定运行,从 2.9.5.0 版本开始,个推支持第三方应用配
置使用自定义 Service 来作为推送服务运行的载体。
在项目源码中添加一个继承自 com.igexin.sdk.PushService 的自定义 Service:package com.getui.demo.service; // 仅 2.13.1.0 及以上版本才能直接 extends PushService,低于此版本请延用之前实现方式 public class DemoPushService extends com.igexin.sdk.PushService { }
在 AndroidManifest.xml 中添加上述自定义 Service,(使用 maven 集成,android:process
属性必须为 pushservice。手动集成方式也请保证与其他组件进程名一致)如下:<service android:name="com.getui.demo.service.DemoPushService" android:exported="true" android:label="PushService" android:process=":pushservice"/>
按照步骤4之后,依然还是pushservice收不到,这个问题求助下!附带个推的官方文档链接:http://docs.getui.com/getui/mobile/android/androidstudio/
1 个回复
DCloud_Android_DQQ
问题已沟通解决。
1 题主使用的是 个推sdk,自定义进程的进阶玩法。 建议使用unipush 替代之。就不会有相关的麻烦了。
2 最终加上了手动初始化 自定义服务的代码解决了问题。