这是第一次在此设备上安装此应用程序并且它从未注册过推送通知,但它拒绝询问。 我使用以下代码,但无论我清理项目多少次,删除派生数据,卸载并重新安装我的设备上的应用程序,它永远不会问我是否要接收推送通知。
- (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;
}
为什么不让我注册通知?我在设置中检查通知,但未列出此应用。
答案 0 :(得分:1)
模拟器不支持推送通知,您只能在iOS设备上试用。
确保在iOS配置中启用推送通知 你的 appID 。
权利plist在开发时必须包含键aps-environment
和值development
作为字符串,在提交到 AppStore 之前必须包含值production
或在用 ADHOC证书签署之前。
要确保您注册推送通知包含此内容 在你的代码中测试它是否正常工作
(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