iOS常见问题归纳

1. iOS控制台推送不成功。

使用控制台推送时,经常遇到有“网络异常,请稍后重试”等异常信息,这可能是因为推送请求过多,服务器通道堵塞导致,建议稍后重新推送一下。如果问题一直出现,请您获取requestid与客服联系。通过浏览器获取requestid的方法如下。 1、这里使用Chrome浏览器为例,在控制台新建消息页面点击右键,选择inspect工具。

2、点击Network-XHR选项,这时点击控制台的推送按钮,如果是广播推送的话,可以在下方的all文件中看到request_Id和其他服务器返回的结果,对应单播的话,文件名为single_device,组播的话文件名为tags。errorcode和信息都会展示供开发者调试。

2. 推送显示“客户端异常,请重新安装”的问题。(iOS bad device token)

解决办法如下:

1、确认注册接口中传入的BPushMode参数跟调试模式匹配。即确认注册接口的BPushMode参数 +(void)registerChannel:(NSDictionary)launchOptions apiKey:(NSString )apikey pushMode:(BPushMode)mode withFirstAction:(NSString )leftAction withSecondAction:(NSString )rightAction withCategory:(NSString *)category isDebug:(BOOL)isdebug 如果是使用开发模式demo进行测试,请将BPushMode设置为BPushModeDevelopment,生产模式demo请设置为BPushModePruduction。

2、确认证书文件是否有效。您需要在苹果开发者中心(developer.apple.com)和D推Push控制台中确保证书有效(参考iOS SDK开发文档第七章验证pemi证书),确认证书开启了推送功能。 在调试开发模式demo时,配置Xcode – TRGETS - Build Setting 项中的Provisioning Profile时需要手动指定包含推送功能的文件,否则会收不到消息。 友情提示:需要测试生产模式的推送功能,您需要将应用上线APP Store,或者创建ad-hoc的证书,或者创建企业版(299$)的证书才能进行测试。(详情请参考iOS SDK开发文档第七章)。

3. iOS推送接收不到通知可能有那些原因,如何定位?

  1. 确认您的应用在苹果开发者网站上已经正确配置了APNs,并且下载安装了APNs证书;

  2. 请使用设备来测试推送。模拟器是获取不到device token的,所以不能进行绑定,当然也不能进行推送测试。 满足以上前提条件时,核对以下步骤:

  3. 确认修改了BPushConfig.plist的API_KEY是正确的应用;

  4. 正确调用bindChannel,并成功返回appid、userid和channelid,而且appid请确认是正确的应用;

  5. 在管理界面的推送设置里,成功上传.pem格式的APNs开发证书和生产证书(只测试开发版可以不需要生产证书,pem证书大小约为4K,并且fileencoding必须为utf8);

  6. BPushConfg.plist中的PRODUCT_MODE,如果是测试开发版请设置为NO,生产版设置为YES;

  7. 修改BPushConfg.plis的配置后,请卸载应用再安装;

  8. iOS推送只支持通知,并且在推送通知时,请正确勾选推送的是开发模式还是生产模式;

  9. 如果在您的应用中还推送不了,请先用sdk自带的demo进行调试,再次确认1~6步。

4. iOS推送到达率低的问题。

单播推送只要是推送成功,一般不存在到达率低的问题,都是秒级到达,极少情况下有延迟比如切换设备网络。 广播和组播到达会有一定的延迟,在推送高峰期延迟时间会比较长,但设备一定会收到消息,请确认设备一段时间之后可以收到消息推送。如果一段时间之后仍然没有收到消息请联系客服。

5. iOS 9开发模式收不到推送,有些系统推送成功却收不到消息的问题。

在调试开发模式的推送时,配置Xcode – TRGETS - Build Setting中的Provisioning Profile 时需要手动指定包含推送功能的证书,否则无法接收消息。具体可以参考下图:

配置过程中,如果有错误提示,请把路径~/Library/MobileDevice/Provisioning Profiles 下的profiles 全部删除,退出Xcode,清空废纸篓,下载最新有效的包含推送功能的Provisioning Profile,双击文件进行配置。

6. 控制台返回30608错误,提示绑定关系不存在的问题。

绑定关系不存在时,请确认是否已经绑定成功,是否返回channel_id 等信息。绑定关系中的devicetoken可能与推送模式不匹配。如果是开发模式请将BPushMode设置为BPushModeDevelopment,生产模式请设置为BPushModePruduction。

7. 证书验证失败的问题。

请参考开发文档第七章的方式进行验证证书,如果证书有效,请重新打开浏览器,重新上传证书。如果证书仍然失败,请联系客服。

8. 非idfa版本中包含的广告标识符的库。

提交APPstore的时候需要,在提交审核的时候有个是否应用了idfa的选项,勾选后,再勾选使用idfa是由于先前投放的广告那项即可)。请使用最新的iOS版本。

9. 重复消息:消息弹框有两次,响音有两次,但通知栏显示仅为一条消息。

这个问题是苹果iOS 9.0的系统bug,重启设备即可恢复正常。

10. 无法回调获取channelid,绑定失败

确保函数可以正常获取devicetoken:

-(void)application:(UIApplication )application didRegisterForRemoteNotificationsWithDeviceToken:(NSData )deviceToken

使用的第三方SDK可能会复写此函数,导致devicetoken获取不正常,请参考push demo进行调试。