各位调试的时候必定要用真机,模拟器是获取不了 token 的ios
交代下使用的设备:
xcode:Version 8.0 (8A218a)
手机: iphone6(10.0)
jpush版本:2.1.7git
iOS10 近期咱们 app 要上架,可是在调试的过程当中发现了一个问题,ios 10手机不能注册通知了(ios 9的手机能够),咱们使用的是极光的2.1.7版本,运行的时候老是报错.github
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系统,测试时出现警告,打开这个论坛,答案在五楼的一个简书博客里面.xcode
选中 tagets点击 capabilitiesapp
Snip20161011_1.png框架
而后自动生成以下文件iphone
Snip20161011_4.pngpost
对应两种状态: development和 production, 而后再运行,便可获取成功获取 token 了测试
果真问题解决了,能够注册了;字体
交代下使用的设备:
xcode:Version 7.1
手机: iphone6(10.0)
jpush版本: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
因为篇幅比较长,先给出答案:不须要改,xcode 会根据你打包环境的不一样,修改为对应的 production 或development;即便你随意改为了任意字符(例如:123
), xcode 也会帮你改回来
交代下使用的设备:
xcode:Version 8.0 (8A218a)
手机: iphone5(9.3)
jpush版本:2.1.7
APS Environment
Paste_Image.png
stackOverFlow链接:xcode 8 push notification capabilities and entitlements file setting
Paste_Image.png
可是这个是饭碗的事情,万一推送不成功,或者苹果拒绝了;因此我得本身亲自试一下.
因而我打了一个 adhoc 的包没有修改APS Environment,仍是development
装在手机上,使用生产环境推送;居然成功了.
这里就开始尴尬了,就在想可能会有如下两种可能:
1.使用development也能够,不须要修改为production
2.或者打包的时候,xcode 会帮我改为production
2.1.生产环境
因此我就打开了刚才的 ipa 包,查找里面的mobileprovision文件,过程以下
Snip20160929_20.png
Snip20160929_21.png
找到mobileprovision 文件后;xcode打开啥也没有看到, sublime打开发现一堆乱码;改为 txt 格式仍是打不开.
sublime打开
这个时候就蛋疼了,那怎么办;就去搜了下怎么打开 mobileprovision,皇天不负有心人,终于找到一篇文章代码签名探析,里面有打开方案
$ security cms -D -i example.mobileprovision
这个命令会输出签名信息中的内容,若是你亲自试一下,接下来你会获得一个 XML 格式的 plist 文件内容输出。
Snip20160930_29.png
Paste_Image.png
2.2测试环境
注意:您能够打个普通的开发环境的测试包,终端查看里面的内容,你会发现里面是development
Paste_Image.png
答:用户无论怎么改都是没有用的,由于 mobileprovision里面又会改回来.
3.1. 测试环境
Snip20160930_6.png
Paste_Image.png
3.2. Ad Hoc环境
Snip20160930_9.png
Snip20160930_8.png
因此能够得出结论:xcode 会自动帮咱们改aps Environment对应的value,不用手动改
Background Modes-->remote notification
&push notification
在搜索打开 provison 的时候,搜了很久都没有答案;总结下关键词少点好;
下面是搜索过程
Snip20160930_25.png
Snip20160930_27.png
Snip20160930_24.png