iOS10推送适配常见问题

写在最前面

各位调试的时候一定要用真机,模拟器是获取不了 token 的

问题一:不能注册

交代下使用的设备:
xcode:Version 8.0 (8A218a)
手机: iphone6(10.0)
jpush版本:2.1.7

iOS10 近期我们 app 要上架,但是在调试的过程中发现了一个问题,ios 10手机不能注册通知了(ios 9的手机可以),我们使用的是极光的2.1.7版本,运行的时候总是报错.

1.did Fail To Register For Remote Notifications With Error: 
Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用程序的“aps-environment”的授权字符串"
UserInfo={NSLocalizedDescription=未找到应用程序的“aps-environment”的授权字符串}

2. | JPUSH | W - [JPUSHClientController] 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.

看了极光的论坛,推荐解决方案是:升级到xcode8之后,手机为ios10系统,测试时出现警告,打开这个论坛,答案在五楼的一个博客里面.

步骤如下图:

选中 tagets点击 capabilities


iOS10推送适配常见问题_第1张图片
Snip20161011_1.png

然后自动生成如下文件


iOS10推送适配常见问题_第2张图片
Snip20161011_4.png

对应两种状态: development和 production, 然后再运行,即可获取成功获取 token 了

果然问题解决了,可以注册了;

问题二:极光2.1.9版本用 xcode7打包, iOS10接收不到通知问题

交代下使用的设备:
xcode:Version 7.1
手机: iphone6(10.0)
jpush版本:2.1.9

这个问题有两个方案:
  • 1.升级 xcode 7成 xcode8,xcode 8按照问题一设置就可以(推荐)
  • 2.使用2.1.9以前版本(不推荐,2.1.9以前版本地址)
下面来说下原因:

由于极光2.1.9更新了对 iOS10的支持,会自动识别 iOS10的方法,如果使用 iOS10极光使用的新的UserNotifications框架的,这需要做问题一中的配置才能使用.

所以还是建议升级 Xcode 8;况且 iOS10字体变了, label 可能显示不全,需要 xcode 8 才可以看到字体的变化;可能老板以后想使用 iOS 10 通知新特性;所以说是跑不掉的,升级 Xocde 8吧;

#ifdef NSFoundationVersionNumber_iOS_9_x_Max
    JPUSHRegisterEntity * entity = [[JPUSHRegisterEntity alloc] init];
    entity.types = UNAuthorizationOptionAlert|UNAuthorizationOptionBadge|UNAuthorizationOptionSound;
    entity.categories =[self setUpCategory];
    
    
    [JPUSHService registerForRemoteNotificationConfig:entity delegate:self];
#endif

问题三:提交 app store 审核打包entitlements里面的APS Environment要不要改

由于篇幅比较长,先给出答案:不需要改,xcode 会根据你打包环境的不同,修改成对应的 production 或development;即使你随意改成了任意字符(例如:123), xcode 也会帮你改回来

交代下使用的设备:
xcode:Version 8.0 (8A218a)
手机: iphone5(9.3)
jpush版本:2.1.7

iOS10推送适配常见问题_第3张图片
APS Environment

1. 网上资料:

  • 1.网上有很多说这个要改成production
    stackOverFlow连接:Post iOS10 / Xcode 8.0 “Missing Push Notification Entitlement” error after build for iTunes Store
iOS10推送适配常见问题_第4张图片
Paste_Image.png
  • 2.有的说不要改

stackOverFlow连接:xcode 8 push notification capabilities and entitlements file setting

iOS10推送适配常见问题_第5张图片
Paste_Image.png

但是这个是饭碗的事情,万一推送不成功,或者苹果拒绝了;所以我得自己亲自试一下.
于是我打了一个 adhoc 的包没有修改APS Environment,还是development
装在手机上,使用生产环境推送;竟然成功了.

2. 验证 ipa 包里面的mobileprovision中的 aps Environment

这里就开始尴尬了,就在想可能会有以下两种可能:
1.使用development也可以,不需要修改成production
2.或者打包的时候,xcode 会帮我改成production

2.1.生产环境

所以我就打开了刚才的 ipa 包,查找里面的mobileprovision文件,过程如下

iOS10推送适配常见问题_第6张图片
iOS10推送适配常见问题_第7张图片
Snip20160929_20.png
iOS10推送适配常见问题_第8张图片
Snip20160929_21.png

找到**mobileprovision **文件后;xcode打开啥也没有看到, sublime打开发现一堆乱码;改成 txt 格式还是打不开.

iOS10推送适配常见问题_第9张图片
sublime打开

这个时候就蛋疼了,那怎么办;就去搜了下怎么打开 mobileprovision,皇天不负有心人,终于找到一篇文章代码签名探析,里面有打开方案

$ security cms -D -i example.mobileprovision
这个命令会输出签名信息中的内容,如果你亲自试一下,接下来你会得到一个 XML 格式的 plist 文件内容输出。

Snip20160930_29.png
iOS10推送适配常见问题_第10张图片
Paste_Image.png
2.2测试环境

注意:您可以打个普通的开发环境的测试包,终端查看里面的内容,你会发现里面是development

iOS10推送适配常见问题_第11张图片
Paste_Image.png

3.注意:如果用户手动去改aps Environment,会怎么样呢?

答:用户不管怎么改都是没有用的,因为 mobileprovision里面又会改回来.

3.1. 测试环境
iOS10推送适配常见问题_第12张图片
Snip20160930_6.png
iOS10推送适配常见问题_第13张图片
Paste_Image.png
3.2. Ad Hoc环境
Snip20160930_9.png
iOS10推送适配常见问题_第14张图片
Snip20160930_8.png

小结

所以可以得出结论:xcode 会自动帮我们改aps Environment对应的value,不用手动改

问题四:使用 xcode自定义推送声音;ios 9 设备可以,但是 ios 10 设备还是使用的系统的声音

  • 是否是xcode连接手机覆盖安装了app
  • 如果是第一次安装应用,应该是可以收到自定义声音的
  • 但是不卸载的情况下,xcode连接手机覆盖安装app,就恢复默认了,这是Xcode的一个bug

iOS自定义声音没了
iOS 如何推送自定义声音

总结

  1. 建议使用 xcode8来打包适配 iOS10,可以早发现问题早解决
  2. 推送开关记得要打开;**capabilities **里面Background Modes-->remote notification&push notification
  3. 提交 app store时候entitlements里面的APS Environment不要改,xcode 会帮你修改

写在最后

  1. 目前我们 app已经在审核了,过几天既可以知道结果了(更新:app已经过Apple 审核了
    )
  2. 还没有试下 iOS 10的手机,明天去试下(更新:试了下,是可以的)
  3. 我会实时更新我的情况,有问题可以回复我哦.

在搜索打开 provison 的时候,搜了好久都没有答案;总结下关键词少点好;
下面是搜索过程

iOS10推送适配常见问题_第15张图片
Snip20160930_25.png
iOS10推送适配常见问题_第16张图片
Snip20160930_27.png
iOS10推送适配常见问题_第17张图片
Snip20160930_24.png

你可能感兴趣的:(iOS10推送适配常见问题)