为了更好地服务开发者,此次我们针对个推消息推送iOS版使用中可能出现的一些常见问题做了整理,提供了一些比较方便掌握的解决方法,希望能帮助到大家。
1. iOS推送流程是什么样的?
iOS下发的消息分两部分:一部分是通过APN的通知栏消息;另一部分通过个推通道的透传消息。这两部分是服务端推送代码里面由APP开发者自己设定的,分别是两种不同的方法:1)如果消息下发的时候,客户端是在后台、锁屏、或者APP被杀掉(也就是客户端是离线)的状态,将会收到APN的通知,透传消息就会处于离线状态,此时只有下次在线的时候(也就是下次应用到前台的时候)才会下发;2)如果下发的时候应用在前台的,就直接走个推通道下发透传消息,客户端自定义处理透传展示。
2. iOS 客户端推送收不到APN通知栏提醒怎么办?
首先,请您检查一下客户端是否有获取到devicetoken,如果获取不到,检查客户端iOS 的APN注册是否成功,证书打包是否正确;如果获取到了,用当前客户端获取的devicetoken 去平台上传证书的地方进行测试,查看返回成功还是无效。如果返回无效,请排查客户端环境与上传的证书环境,builderID 是否一致;如果返回成功,则需要卸载重装客户端,然后打开应用到前台,保持CID在线,再退到后台推送测试。
3. iOS自定义通知铃声如何设置?
把制作好的铃声添加到项目的main bundle中后,在项目设置中 Build Phases–Copy Bundle Resources 中添加您添加的声音文件(铃声文件不能超过30s),服务端APN设置的sound设置成您的铃声文件名。
4. iOS客户端角标如何自增自减?
开发者可以调用:application.applicationIconBadgeNumber获取到角标数;然后通过 [application setApplicationIconBadgeNumber:]设置当前的角标;通过个推[GeTuiSdk setBadge:]将角标同步给个推服务器;服务端透传消息模板,通过APNPayload类的setAutoBadge方法设置"+1"、"-1"、"1"等,实现角标的自动增减
5. 如何解决iOS创建的本地消息,不显示标题,只有内容的问题?
在透传模板APNPayload.DictionaryAlertMsg高级字典模式中加上Title。
6. 为什么iOS进入后台后收不到推送?(代码APNs已经配置)
首先根据客户端devicetoken测试,判断环境是否一致,如果能收到测试消息,说明环境一致,接着需要排查下发日志,可以提供下发信息给到技术支持进行排查。
7. 为什么APN统计数据没有展示、点击数?
Apple在iOS 10中新增了Notification Service Extension机制,在集成个推消息推送SDK时,可以添加Notification Service Extension,并在Extensions中添加 GtExtensionSdk 的统计接口,实现消息展示回执统计功能。
8. iOS透传消息推送过程中,在APP没有启动的情况下发送透传消息(未经APNs),用户启动APP后,可以通过GeTuiSdkDidReceivePayloadData获取消息吗?
只要用户在消息有效离线时间内启动APP,就可以获取。
9. iOS集成时,GTExtensionSDK.framework是否必须,可以不集成SDK吗?
个推支持 iOS 10 多媒体推送和APNs的展示、点击数统计,不集成对推送没有影响。
10. iOS自定义参数消息如何设置?
首先,服务端设置APN代码时通过addCustomMsg参数,参照php的代码 ,添加APN自定义参数。然后,当客户端收到APN通知栏提醒并点击会触发客户端didreceiveremotenotification方法,获取payload参数数据,获取到之后便可以自己解析处理跳转。
11. iOS开发环境推送是否有限制?
有限制,开发环境下离线走苹果APNs通道推送1000条。
12. 苹果手机播放音频时,从后台进入前台,音频被中断怎么解决?出现报错:[avas] AVAudioSession.mm:1177:-[AVAudioSession setActive:withOptions:error:]: Deactivating an audio session that has running I/O. All I/O should be stopped or paused prior to deactivating the audio session.
可以通过设置客户端API方法runBackgroundEnable的参数来处理。runBackgroundEnable表示是否允许SDK后台运行(YES=允许,NO=拒绝),请将参数设为NO。