读取 iPhone 推送通知的设备令牌

Posted

技术标签:

【中文标题】读取 iPhone 推送通知的设备令牌【英文标题】:Read Device Token for iPhone Push Notification 【发布时间】:2012-07-18 10:15:24 【问题描述】:

我尝试在我的 iPhone 应用程序中实现推送通知。我已经为推送通知创建了 Provisioning Profile 和 App-id,并将此证书添加到 Xcode 中。使用以下代码将 iPhone 设备连接到 mac 系统并通过设备构建应用程序以读取设备令牌。

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

    NSLog(@"didRegisterForRemoteNotificationsWithDeviceToken:\n%@", deviceToken);


- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error

    NSLog(@"didFailToRegisterForRemoteNotificationsWithError:%@", [error localizedDescription]);

但它返回错误..就像

didFailToRegisterForRemoteNotificationsWithError:找不到适用于应用程序 2012-07-18 的有效“aps-environment”权利字符串 14:18:08.597 Z2NotifyMe[1874:707] didFailToRegisterForRemoteNotificationsWithError:Error 域=NSCocoaErrorDomain 代码=3000 "没有有效的 'aps-environment' 找到应用程序的权利字符串” UserInfo=0x11fee0 NSLocalizedDescription=没有有效的“aps-environment”权利字符串 为应用找到

我已删除 Xcode 和我的设备中的所有旧证书,然后重新创建所有证书,然后执行上面相同的代码,它返回相同的错误。

请帮忙解决这个问题。

谢谢..

【问题讨论】:

您是否尝试从头开始创建新的配置文件?您是否配置了您的 appId 以在供应门户中启用推送通知? 是的,我在我的 Provisioning Portal 上启用了推送通知。 【参考方案1】:

使用以下代码注册您的设备:

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

applicationDidFinishLaunching: 方法中。

我希望您尝试使用的设备没有越狱。

【讨论】:

是的,我已经将此代码放入 applicationDidFinishLaunching 但它返回相同的错误。 我没有尝试越狱方法。 您是否创建了 SSL 证书? didFailToRegisterForRemoteNotificationsWithError:找不到应用程序的有效“aps-environment”权利字符串 SSL证书创建不正确...请重新生成证书并重试..【参考方案2】:

当您的代码签名身份未启用推送通知时,会出现此问题。 看看这个链接:

http://mobiforge.com/developing/story/programming-apple-push-notification-services

http://blog.martinreichart.com/2010/01/getting-iphone-push-notifications-to-work/

【讨论】:

我已经在上面的链接中尝试过,但我得到了类似的错误——没有为应用程序找到有效的“aps-environment”权利字符串 didFailToRegisterForRemoteNotificationsWithError:找不到应用程序的有效“aps-environment”权利字符串 你能在 textEdit 中打开你的配置文件并找到 aps-environment。如果你的配置文件不包含这个,那么你的配置文件没有正确设置推送通知。尝试在这种情况下重新创建您的配置文件。【参考方案3】:

当我正确执行所有步骤时,我遇到了类似的问题,但我仍然收到此错误。

尝试执行以下步骤,它对我有帮助: 1) 转到您的配置文件 -> 配置 2) 按应用程序配置文件附近右侧的“编辑”按钮 -> 然后修改 3)在这里做一些改变,改变什么并不重要,这只是为了触发一个新的配置文件。取消选择其中一个设备,或更改名称,您可以稍后再改回来。 4) 按“提交”按钮 5)下载配置文件并将其拖到Xcode。 (之前在 Xcode 中删除你的旧配置文件)

【讨论】:

我尝试了上述步骤,我得到了同样的错误...... didFailToRegisterForRemoteNotificationsWithError:no valid 'aps-environment' entitlement string found for application 如果您有任何解决此错误的想法 -- didFailToRegisterForRemoteNotificationsWithError:no valid 'aps-environment' entitlement string found for application 不是真的,可能有很多我不知道的小问题,比如 xcode 中的项目设置。所以我对你的建议是,在 Xcode 中创建一个新项目并从头开始进行所有推送配置。我认为你会花更少的时间来解决你的问题。

以上是关于读取 iPhone 推送通知的设备令牌的主要内容,如果未能解决你的问题,请参考以下文章

无需设备或“真实”模拟器即可接收 iPhone / Android 的推送通知

推送通知未在 iPhone 应用程序中的多个设备上传递?

临时推送通知未发送 iphone 通知

推送通知不适用于 iPhone 所有设备 (Xcode8) 版本

iphone推送通知问题

iphone推送通知服务问题