0

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

- (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;
}

为什么它不会要求我注册通知?我检查了设置中的通知,这个应用程序没有列出。

4

2 回答 2

1

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

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

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

为确保您已注册推送通知,请将其包含在您的代码中以测试其是否正常工作

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

如果这不起作用,请尝试本教程

于 2013-01-25T22:26:14.173 回答
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

于 2014-06-19T10:20:58.273 回答