转自: http://www.cnblogs.com/zxykit/p/5207498.html
Xcode7推送报错。Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用程序的“aps-environment”的授权字符串" UserInfo=0x15f81360 {NSLocalizedDescription=未找到应用程序的“aps-environment”的授权字符串}
有些设备可以获取deviceToken,有些设备获取不到,就报“3000” 错误。暂时发现对iOS9的是可以获取的,iOS9以前是不可以的。现在列举一下可能出错的地方。
工具/原料
- 编译环境:Xcode 7.1
- Mac操作系统:OS X 10.11
方法/步骤
-
1
证书问题:
1.证书未正确生成,要先确保App IDs的推送使能Push Notifications是Enabled;
2.生成开发环境APNs Development iOS或生产环境APNs Production iOS的推送证书,正确制作.p12文件;
3.要确保Provisioning Profiles是设置过App IDs和生成推送证书后更新过的,下载最新的Profiles文件。
-
2
项目问题:
1.工程-TARGETS-general->Bundle identifier要和证书上的一致;
2.工程-TARGETS-general-> team要选中app所用的证书;
3.注册DeviceToken时要将代码放在AppDelegate.m文件didFinishLaunchingWithOptions内;
4.要区分iOS8前和iOS8之后的注册方法;
5.监听注册结果(成功/失败)。(如图)
-
3
Xcode7问题:
Xcode7使用推送,可能要打开手动设置一下,也可能不用设置,这个状况比较特殊。工程-TARGETS-Capabilities,里面列举多个Apple服务功能项,找到Push Notifications设置开启:ON。这里也是需要证书的,选择的时候要注意要喝项目的一致。(操作如图)
-
4
还不行的话,那就尝试:
步骤1:删除本地证书,清空废纸篓;
步骤2:项目 Product - clean一下,再完全关闭Xcode,
步骤3:删除苹果开发者中心上的Certificates, Identifiers & Profiles
证书,重新创建;
步骤4:下载新的证书,双击打开导入Xcode。