推送通知不适用于iOS7,但它们适用于iOS6

问题描述:

我在iOS7中遇到了推送通知问题。推送通知不适用于iOS7,但它们适用于iOS6

我已经开发了iOS6的应用程序,并且推送通知工作得很好。但是,当我将该应用程序放入iOS7设备时,该程序无法运行。

但是,发生了一些非常奇怪的事情。如果我使用开发密钥,我的iOS7设备可以接收推送,但使用生产密钥,它不能。

我可以得到我的推送令牌,但它不能接收任何东西。

有什么想法?

这是我的代码:

Appdelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // PUSH-CODE 
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; 
    .... 
} 

// PUSH-CODE 
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 
{  
    NSString *token = [[deviceToken description] stringByTrimmingCharactersInSet:  [NSCharacterSet characterSetWithCharactersInString:@"<>"]]; 
    token = [token stringByReplacingOccurrencesOfString:@" " withString:@""]; 
    NSLog(@"Token: %@", token); 

    [[NSUserDefaults standardUserDefaults] setObject:token forKey:@"deviceToken"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error 
{ 
    NSLog(@"Failed to get token, error: %@", error); 
} 
+0

您确定您使用的是正确的设备令牌吗?请注意,当您使用沙箱供应配置文件为您的应用程序签名时,您将获得与使用生产供应配置文件时所获得的设备令牌不同的设备令牌。另外请注意,当您从iOS6切换到iOS7时,您的设备可能会有新的设备令牌(每次推送env)。 – Eran

+0

@Eran请检查标题:“推送通知不能在iOS7中工作,但他们在iOS6中工作”,所以他的代码是OK – 2013-10-24 22:02:40

+0

我有同样的问题,任何人都可以弄明白吗? – lorixx

只是做了谷歌搜索“ios7推送通知不工作”,因为你的问题是只有3我已经知道了响应。这不是你的错,而是苹果的错。用户需要将他们的手机连接到iTunes以接收推送。有时会出现硬重置,有时只是关闭设备。

  • iOSX.0是“来测试它”
  • iOSX.1是“我们试图修复了一些bug,根据您的火焰”
  • iOSX.2稳定,你可以*地发展,无论如何在3个月我们有下一个X.0版本:)

我通过改变推送中心的应用程序的推动设置来解决这个问题。只需关闭然后打开

+3

需要更多的解释,因为你的答案看起来像一个评论。 – Pupil

+0

当InHouse部署工作正常时,我的设备无法获得应用程序从应用程序下载的推送令牌。我不知道为什么。然后,我只需进入推送中心,关闭我们的应用程序的推送,退出并再次打开。令人惊讶的是,当我重新打开我们的应用程序时,推送令牌就在那里。我认为原因是有些事情之间没有匹配 –