x***@126.com
x***@126.com
  • 发布:2020-11-20 14:38
  • 更新:2020-11-20 15:55
  • 阅读:1265

【Android】离线SDK基座中配置个推(离线情况下),厂商推送,魅族PushService无法起来问题

分类:ASK社区

环境:自定义离线基座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/

2020-11-20 14:38 负责人:DCloud_Android_DQQ 分享
已邀请:
DCloud_Android_DQQ

DCloud_Android_DQQ

问题已沟通解决。

1 题主使用的是 个推sdk,自定义进程的进阶玩法。 建议使用unipush 替代之。就不会有相关的麻烦了。
2 最终加上了手动初始化 自定义服务的代码解决了问题。

该问题目前已经被锁定, 无法添加新回复