JPush极光推送Unity插件iOS设备无法获取DeviceToken

前言:

最近在使用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带来的便捷吧。

猜你喜欢

转载自blog.csdn.net/mango9126/article/details/78833015