在Xcode 11 beta和iOS 13 beta中iOS端使用SDK V1.9.8及更低的版本,出现无法将返回的deviceToken上传到CloudPush服务器的问题,以至于最终推送通知失败。相关代码如下。
/** * iOS系统方法APNS注册成功回调,在该方法中, 将返回的deviceToken上传到CloudPush服务器。 * 备注:在开发环境测试时,iOS 13+系统个别设备上初次安装有概率不会调用该方法,以至于没有获取到token,则上报失败。 * 这是苹果系统的原因(期待他们的修复),一般线上不会出现该问题,如果测试中出现该问题: * 1.检查设备网络是否正常。 * 2.删除App重新安装测试下。 * 3.拔掉数据连接线,重新连接, 删除App,重新安装测试下。 * 4.删除App,更改下bundleid编译运行下,之后在切换原先的bundleid编译运行测试下。 * 5.打开手机设备通用页面,在底端关机,然后重启。 * 6.是否在其他地方重写了该方法;是否集成过信鸽。 * * 备注:在iOS 9以后每次删除App,然后重新安装App,deviceToken都会发生改变。 * 如果调用了该方法,但是SDK依旧获取不到deviceToken,需要您检查一下SDK的版本是否大于1.9.8的版本。 * */- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { NSLog(@"Upload deviceToken to CloudPush server."); [CloudPushSDK registerDevice:deviceToken withCallback:^(CloudPushCallbackResult *res) { if (res.success) { NSLog(@"Register deviceToken success, deviceToken: %@", [CloudPushSDK getApnsDeviceToken]); } else { NSLog(@"Register deviceToken failed, error: %@", res.error); } }];}
需要您将SDK版本升级到1.9.9~2.0版本,移动研发平台EMAS控制台上已发布该版本,并且cocoaPods也更新到该版本。您的代码中不需做任何改动,SDK中更新的代码如下所示。
**说明 **
您可以根据项目需要指定SDK版本,具体请参见Podfile Syntax Reference。
新的SDK版本,上下兼容,适配iOS任何版本,建议您更换升级。
# include <arpa/inet.h>// 将APNS返回的deviceTokenData转换为标准的deviceToken String。+ (NSString *)translateDeviceToken:(NSData *)deviceToke
更多官方信息
EMAS官网介绍:https://www.aliyun.com/product/emas
Devops:https://www.aliyun.com/product/emascrash/mobile_devops
移动热修复:https://www.aliyun.com/product/hotfix
移动测试:https://www.aliyun.com/activity/emas/mqcexpert
移动推送:https://www.aliyun.com/product/cps
HTTPDNS:https://www.aliyun.com/product/httpdns
EMAS 控制台: https://emas.console.aliyun.com/products
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。