上云无忧 > 文档中心 > 百度智能云移动APP推送服务Android常见问题QA
移动APP推送服务
百度智能云移动APP推送服务Android常见问题QA

文档简介:
推送的接口调用问题,请参照移动APP推送SDK使用指南,基本都能在使用指南中找到接口的调用方法,接口的返回值获取,以及异常的一些说明。 本文档主要针对集成指南中没有提到的一些问题进行说明,以便开发能够通过自查,快速解决集成中遇到的一些其他问题。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

推送的接口调用问题,请参照移动APP推送SDK使用指南,基本都能在使用指南中找到接口的调用方法,接口的返回值获取,以及异常的一些说明。

本文档主要针对集成指南中没有提到的一些问题进行说明,以便开发能够通过自查,快速解决集成中遇到的一些其他问题。

1. SDK初始化后,调用方法化返回12

隐私协议方法没有被调用,需要在初始化之前调用TH.setAgreePolicy方法,同意隐私协议。

2. SDK初始化后,调用方法返回4

1)查看手机网络是否正常,可以切换到移动网络试下,排查下网络的影响。

2)查看移动APP推送SDK集成是否正确,推送SDK的appkey和secritykey配置是否正确,检查app包名,是否与上传的应用保持一致。

3)如果确认推送SDK集成正常,可以打开移动APP推送的debug开关,看下推送的相关日志。打开debug开关的方法如下: TH.tinvoke(100019, "setDebug", new Class[] { boolean.class }, true);

4)确定下SDK是否调用延迟初始化,如果调用延迟初始化,查看下延迟时间,单位为秒,不是毫秒,请确认下是否正确。

3.发送消息后收不到

1)查看应用的通知栏开关是否打开,如果没有打开,请打开通知栏开关,并重新启动应用。

2)检查手机网络是否正常,可以切换到移动网络测试一下。

3)确认手机当前模式是正常模式,部分手机在低电量、勿扰模式、省电模式下,会对后台进行一系列网络和活动的限制。

4)4.0以上的系统,如果在设置里去掉了显示通知的选项,是展示不出来通知的。

5)目前第三方推送都无法保证关闭应用过后还可以收到推送消息,这个是手机定制ROM的限制问题,一切消息的推送都需要建立在应用service能够正常联网运行的基础上。

6)如果是华为手机,请把应用加入“允许后台运行的程序”。因手机关屏休眠后会杀掉后台不受保护的进程。

7)如果是小米手机,在“设置—通知栏设置---自定义通知”里,可以针对单个应用进行通知栏展示设置,“显示通知栏”关闭后,则不会在通知栏里展示通知消息。

8)小米手机在后台接收不到消息,则需要配置一下:在 安全中心 - 授权管理 - 自启动管理,把应用的自启动打开就可以了。

9)如果是 oppo、vivo等手机需要手动开启通知栏权限,并重新启动应用程序。

4.厂商通道发送消息后收不到

1)所用推送SDK是否为厂商通道版本,如果不是厂商通道版本,请联系商务获取厂商通道版本的推送SDK,官网上现在的SDK,默认是不带厂商通道的。

2)核对自己的手机型号是否为小米,oppo,vivo,华为,魅族五大厂商,只有五大厂商的手机才支持厂商通道,其他的不支持。

3)是否已经将自己申请的每个厂商通道的APPKEY,APPID发给移动APP推送服务端进行配置,如果后台不配置,厂商通道是无法生效的。

4)查看厂商通道的配置文档,是否按照配置文档进行了相关配置,check下配置的信息是否正确。

5)打开debug开关,PUSH_SDK tag下的日志,看是否有 Register [vendor:相关日志,如果没有改日志说明厂商通道注册失败,请联系技术支持人员进行解决。

6)如果是有的厂商可以收到消息,有的厂商收不到消息,可以先通过厂商测提供的问题列表进行排查,一般都能在问题列表中找到存在的问题,如果实在找不到问题,再联系技术支持人员进行解决。厂商通道的问题列表,具体参照1.2章节提供的文档中每个厂商的FAQ。

5)如果厂商通道配置没有问题,但是还是收不到推送消息 首先在初始化方法后,调用如下方法把debug开关打开 TH.tinvoke(100019, "setDebug", new Class[] { boolean.class }, true); 调用如下方法,打印PushUid

TH.tinvoke(100019, "getPushUid",new Callback() {  
	@Override  
	public Object onEnd(Object...arg0){  
		System.out.println(arg0[0]);
		return null;  
	}
@Override 
	public Object onError(Object...arg0) {  
		return null;  
	}  

});

最后,将PUSH_SDK TAG下的log信息,appkey,以及getPushUid的返回结果,发给移动APP推送技术支持进行问题定位。

5.华为厂商通道收到消息后点击无反应

这个问题主要原因是在华为厂商通道点击如果配置了有特殊字符的参数,会导致json解析失败,该问题已经在推送SDK3.5.6.0之后的版本中修改,请集成最新版本的SDK即可解决。

6.华为厂商通道打开指定页面,回到后台,页面从最近任务列表中消失

主要问题在HWPushActivity的excuteFromRecentTask为true属性导致,该问题已经在推送SDK3.5.7.2版本以后修改,请集成最新版本的SDK解决。

7.华为,OPPO厂商通道通知栏点击后,应用启动过慢的问题

华为厂商通道:

需宿主在Manifest里面注册代理HWPushActivity信息,需要将代理HWPushActivity的theme替换为宿主LauncherActivity的theme

<activity
android:name="com.baidu.techain.push.HWPushActivity"
android:excludeFromRecents="true"
tools:replace="android:theme"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="com.hw.push"
android:scheme="vendors" />
</intent-filter>
</activity>

OPPO厂商通道:

需宿主在Manifest里面注册代理OPPOPushActivity信息,需要将代理OPPOPushActivity的theme替换为宿主LauncherActivity的theme。

此类问题主要针对宿主的初始化过多,造成应用Activity启动过慢的问题优化。theme替换的意义在于使用宿 主的android:windowBackground来优化展示,请集成方根据具体情况替换。

8.魅族厂商通道无法注册,并出现processMessage error Parcelable

1)编译时要禁用R8优化。

2)魅族厂商通道push消息结构在编译期间被动态修改,导致序列化失败,无法注册成功,如果有在编译期间动态插桩逻辑,请过滤掉魅族厂商通道包下的所有类即可。

9.什么是自定义铃声?自定义铃声怎么用?自定义铃声有什么注意事项?

什么是自定义铃声?

通过预设通知的channel和铃声,达到通知到达客户端的时候,产生不同的声音提醒的效果

移动APP推送支持,自有通道和华为小米的自定义铃声

  1. push自有通道在线,通过自有通道下发通知,支持自定义通知铃声;
  2. push自有通道不在线,通过厂商通道下发,华为,小米支持自定义通知铃声,其他厂商不支持使用原有系统铃声;

自定义铃声怎么用?

“自定义通知铃声”接入方式:

  1. 接入方需提前把自定义的铃声预制在Android App的raw目录下
  2. 调用移动APP推送openApi接口 传入自定义铃声,字段参见API接口 Android8.0以上存在,NotificationChannel的概念,创建通知渠道后,便无法更改通知行为(铃声,震动方式),此时用户可在设置中修改;

自定义铃声有什么注意事项?

为了保证自定义铃声能够及时生效,在使用厂商通道的自定义铃声时,需要调用如下代码,提前初始化相应的通道和铃声文件

private void initNotifyChannel(String id, String name, String sound) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            // 通知渠道的id 这个地方只要一直即可
            // 用户可以看到的通知渠道的名字.
            // 用户可以看到的通知渠道的描述
            String description = "notification description";
            int importance = NotificationManager.IMPORTANCE_HIGH;
            NotificationChannel mChannel = new NotificationChannel(id, name, importance);
            // 配置通知渠道的属性
            mChannel.setDescription(description);
            // 设置通知出现时的闪灯(如果 android 设备支持的话)
            mChannel.enableLights(true);
            mChannel.setLightColor(Color.RED);
            // 自定义声音
            Uri uri = Uri.parse("android.resource://" + getPackageName() + "/raw/" + sound);
            Log.d("uri", (uri == null) + " " + uri.isRelative());
            mChannel.setSound(uri, null);
            // 设置通知出现时的震动(如果 android 设备支持的话)
            mChannel.enableVibration(true);
            mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
            //最后在notificationmanager中创建该通知渠道
            mNotificationManager.createNotificationChannel(mChannel);
        }
    }
相似文档
  • 为什么部分新创建的应用没有图标? 由于您的应用安装包缺少图标或者不是一个正常的应用包格式,系统未能正常解析出您的应用图标,如果您需要修复应用图标问题,请联系商务。
  • Android平台SDK对手机和操作系统有哪些要求? SDK支持Android 2.2及以上版本的手机系统,手机必须要有网络(GPRS、3G、4G或Wifi网络等)。 推送服务收费吗? 推送服务完全免费,部分vip功能收费使用。
  • 厂商通道是对自用通道长连接推送的有力补充,在应用强停状态下,消息可通过厂商通道触达用户,从而提高消息的到达率。移动APP推送后台所需的厂商通道信息如下。
  • 背景: 为支持推送开发者做业务统计,推送云端提供http 回调功能,用户提供回调地址A,推送云端对消息到达或点击情况做聚合,并回调用户所提供的地址A,方便用户做推送消息的统计和分类。
  • 功能说明: 在实际接入和使用过程中,我们常常遇到设备收不到推送消息的问题,除了已经提供的帮助文档 Android常见问题 和 服务端常见问题之外,平台还提供了查询推送事件功能,在对特定设备进行标注后,该设备的后续相关推送事件会被记录,并可以在平台展示,方便开发者排查使用中遇到的问题。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部