JPush极光推送Unity插件iOS设备无法获取DeviceToken
2017-12-18 15:12
609 查看
前言:
最近在使用JPush进行极光推送。Unity插件GitHub地址https://github.com/jpush/jpush-unity3d-plugin问题描述:
但是发现了一个问题,按照官方文档操作,最终仍然无法获取DeviceToken,检查了多次,集成了多次,仍然无法获取一直报Not get deviceToken yet. Maybe: your certificate not configured APNs? or current network is not so good so APNs registration failed? or there is no APNs register code? Please refer to JPush docs.
问题定位:
在确认了正确按照集成文档操作,生产证书和开发证书都没问题后,使用官方给出的F&A中关于DeviceToken的方法:
出现Not get deviceToken yet. Maybe: your certificate not configured APNs?...错误日志时如何排除问题?
如果出现上述日志,则说明一段时间内都无法获取device token,那么:确认你的app配置了apns权限,如果未配置apns权限,则应该会出现此错误提示。
确认你的app运行在ios真机而非模拟器上,且通知中心中对应app的通知权限没有完全关闭(alert/sound/badge至少有一个权限是打开的)。
确认你的网络状况,与apple的服务器的连接是通过tcp的 5223端口连接,确认你网络的对应端口是否可用,可通过下列命令来确认这点:
telnet 1-courier.push.apple.com 5223
在代码中可在以下两个函数中断点以确认device token的获取状态。
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken; - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error;
如果app运行进入 didFailToRegisterForRemoteNotificationsWithError 则说明app的APNS权限问题或者app运行在模拟器,参考 证书设置文档。
如果app运行进入didRegisterForRemoteNotificationsWithDeviceToken 则说明运行正常,请确认你在此函数中的代码中有将token传递给jpush的调用:
[JPUSHService registerDeviceToken:deviceToken];
如果以上两个registerRemoteNotification的函数都未进入, 请确认你的代码中有注册申请apns的函数调用:
[JPUSHService registerForRemoteNotificationTypes:];
如果上述情况都已确认且未进入第4步的任意回调函数,则可以判断无法获取token的原因在于设备与apple的网络连通性问题(注:一个设备只有在未申请过token的情况下才会需要与apple的网络交互来获取token,已经获取过某一环境token的设备在无网络的情况下也能获取到对应环境的token(环境分为 开发/生产)),这种情况下切换网络能够在大部分情况下解决此问题。
如果仍然有问题,请将上述步骤的结果以邮件附件的形式发送到JPush支持邮箱,我们将协助你解决此问题。
结果还是不行!
再次看了下集成的代码,其中在deviceToken函数回调函数前:
查找了UNITY_USERS_REMOTE_NOTIFICATIONS的定义,在Preprocessor.h中
该值在Unity5.3.2前默认为1,但是当前使用的Unity2017版本,默认为0!也就是说集成的函数中回调函数根本没进入!
解决方案:
此时在按照集成文档完成后,证书设置正常,把该值设置为1,在XCode中显示deviceToken获取正常。接下来享受JPush带来的便捷吧。
相关文章推荐
- iOS 推送 获取手机设备的 deviceToken
- Unity工程导出iOS包,使用推送,deviceToken获取不到的解决办法
- iOS 推送 获取手机设备的 deviceToken
- iOS 推送 获取手机设备的 deviceToken
- iOS 10推送适配问题 报错获取不到deviceToken
- ionic 之cordova 极光推送jpush和百度定位插件结合使用之定位失效问题解决办法
- ios app 推送功能 JPush极光推送的使用
- ios开发--极光推送(jpush)遇坑1---导入sdk
- IOS 消息推送 获取DeviceToken
- ionic应用集成极光推送插件jpush
- 极光推送第一次进入APP无法获取RegistrationID
- 李洪强iOS开发之极光推送JPush
- iOS 最新版极光推送通知集成图文教程(JPush-3.0.7)
- iOS8 获取推送的设备token(deviceToken)
- Xamarin.iOS推送deviceToken获取
- iOS为什么获取不到设备的DeviceToken
- iOS如何获取设备的 DeviceToken
- iOS推送获取不到设备token: 未找到应用程序的“aps-environment”的权利字符串
- 极光推送IOS无法推送到生产环境问题的解决
- ionic集成极光推送插件-iOS