iOS应用程序拒绝询问是否要注册推送通知

时间:2013-01-25 21:59:24

标签: push-notification apple-push-notifications

这是第一次在此设备上安装此应用程序并且它从未注册过推送通知,但它拒绝询问。 我使用以下代码,但无论我清理项目多少次,删除派生数据,卸载并重新安装我的设备上的应用程序,它永远不会问我是否要接收推送通知。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[UIApplication sharedApplication]
     setStatusBarStyle:UIStatusBarStyleBlackOpaque animated:YES];

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

 // Override point for customization after application launch.
    self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]autorelease];

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

     self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];

    return YES;
}

为什么不让我注册通知?我在设置中检查通知,但未列出此应用。

2 个答案:

答案 0 :(得分:1)

模拟器不支持推送通知,您只能在iOS设备上试用。

  1. 确保在iOS配置中启用推送通知 你的 appID

  2. 权利plist在开发时必须包含键aps-environment和值development作为字符串,在提交到 AppStore 之前必须包含值production或在用 ADHOC证书签署之前。

  3. 要确保您注册推送通知包含此内容     在你的代码中测试它是否正常工作

    (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken
    {
    NSString *token = [[devToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<> "]];
    NSLog(token);
    }
    

    如果这不起作用,请尝试tutorial

答案 1 :(得分:0)

重置iOS上的推送通知权限警报

第一次启用推送的应用程序,注册推送通知。 iOS会询问用户是否希望接收该特定应用的远程通知。一旦用户响应此警报,除非设备已恢复或应用程序已卸载至少一天,否则不会一次又一次地显示该警报。

如果您想模拟首次运行的应用,可以将应用程序卸载一天。您可以通过以下步骤实现后者而无需等待一天:

1.Delete your app from the device.
2.Turn the device off completely and turn it back on.
3.Go to Settings > General > Date & Time and set the date ahead a day or more.
4.Turn the device off completely again and turn it back on.

有关详细信息,请参阅:https://developer.apple.com/library/ios/technotes/tn2265/_index.html