我已经尝试了链接http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12中的示例,以获取我的iPhone推送通知消息。我可以成功运行除第一次注册推送通知应用程序的步骤之外的所有步骤。
我遵循了不同的代码变体:
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
但没有一个对我有用。我在我的iPhone 4中测试它,我的Xode版本是4.2,操作系统是Lion。 请指教。
答案 0 :(得分:31)
您可以尝试以下操作:
另请参阅UIApplicationDelegate方法中的错误对象
application:didFailToRegisterForRemoteNotificationsWithError:
编辑1
在文本编辑器中打开配置文件并查找字符串
<key>aps-environment</key>
如果您的个人资料不包含此内容,则无法正确设置推送。
答案 1 :(得分:3)
以下是我在应用程序委托(AppDelegate.m
)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound];
}
要检查注册是否正常,请实施这三种方法
– application:didReceiveRemoteNotification:
– application:didRegisterForRemoteNotificationsWithDeviceToken:
– application:didFailToRegisterForRemoteNotificationsWithError:
或者您可以转到设置以查看是否有可用的权限设置
像这样:
答案 2 :(得分:1)
如果生产中出现此问题(您的应用程序位于appStore上),很可能是因为您创建/启用了应用程序的APNS生产模式 AFTER 创建了分发配置文件。
在这种情况下,没有其他选择,只能再次使用正确的证书提交......
经验法则:始终为您的应用程序启用/创建生产证书之前创建分发配置文件。
您可以使用'nduplessis'(见下文)描述的方法手动检查您的应用程序是否会在批准后运行通知。
答案 3 :(得分:0)
你有没有在应用中看过推送通知对话框?如果您关闭对话框,则需要24小时才能重新显示。通过将iPhone上的时间提前2天检查一下,看看它是否显示。
您还实现了委托方法:
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
尝试在didRegisterForRemoteNotificationsWithDeviceToken和didFailToRegisterForRemoteNotificationsWithError中放置一个NSLog(@“”)并看到它正在进入那里?
此外,您还需要为推送通知设置的应用ID,您需要生成推送通知证书才能发送消息。
答案 4 :(得分:0)
您只能使用具有应用ID且已启用推送通知服务的配置文件注册它。请同时检查这些步骤。这是启动推送通知的好教程http://mobiforge.com/developing/story/programming-apple-push-notification-services
答案 5 :(得分:0)
转到功能 - &gt; 推送通知。如果有错误,请试用此解决方案!
如果 Xcode版本已更改从7到8,请试用此解决方案!
Xcode 7从您的配置文件中复制aps-environment权利。在Xcode 8上启用推送通知会将权利添加到您的配置文件和权利文件中。
尝试将aps-environment权利添加到应用的权利文件中,或者重新启用通知功能。
答案 6 :(得分:0)
iOS 14 ?
对于那些面临无法获得令牌的人,并仔细检查上述所有内容,并在iOS 14上开发,如果您有非英文应用程序标题,请转到项目-目标-产品名称和用 $(TARGET_NAME) 替换名称。
我在这个错误上花了整整一周的时间。
再说一遍:如果您的应用在 iOS12 上收到令牌,但在 iOS14 上不能收到,请去掉名称中的非拉丁字符。他们说,包括权利,但就我而言,我已经设法使其工作并使用西里尔文权利。更改产品名称就足够了。