5

我对这个开发很陌生,所以请帮助我

我正在使用此代码开始推送通知

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

但是,在我的设备上,我没有收到推送通知用户权限警报说“应用程序名称”想要发送通知

我发现如果设备越狱,那么我们不会收到权限警报消息,但我的设备没有越狱。

已编辑

我也在我的设备上收到推送通知,只是在第一次启动时没有收到权限警报。

对此的任何帮助将不胜感激。

4

4 回答 4

13

来自:https ://developer.apple.com/library/ios/technotes/tn2265/_index.html#//apple_ref/doc/uid/DTS40010376-CH1-TNTAG42

  1. 从设备中删除您的应用程序。
  2. 完全关闭设备并重新打开。
  3. 前往“设置”>“通用”>“日期和时间”,将日期提前一天或更长时间。
  4. 再次完全关闭设备,然后重新打开。

  5. 重新安装应用程序

我刚刚在 iOS 7.1 上进行了测试,它工作正常。请注意,这需要关闭设备两次。

于 2014-05-07T00:32:37.343 回答
10

我发现推送通知权限警报只有在第一次启动应用程序时才会出现,即使我们删除应用程序,权限警报也不会出现。即使应用程序被卸载超过 7 天,仍然不会出现权限警报。

当我在不同设备上测试我的应用程序时,我发现了这个问题,权限警报只出现一次,第一次运行应用程序。

希望这些信息可以帮助其他也面临同样问题的人..

于 2013-01-09T13:48:40.437 回答
5

如果您使用 IOS S.1 /5.1 + ,请阅读推送通知指南 App Store Review Guidelines

通过苹果文档

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

如果你想模拟你的应用程序的首次运行,你可以让应用程序卸载一天。您可以通过将系统时钟提前一天或更长时间,完全关闭设备,然后重新打开设备来实现后者,而无需实际等待一天。

于 2012-09-05T13:03:03.837 回答
0

你需要做这样的事情——你还需要注册你的设备。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {   

    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
}

根据您的状态通知委托方法回调 -

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken 
{

}


- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err 
{
    DebugLog(@"Error in registration. Error: %@", err);
}
于 2012-09-05T12:59:06.767 回答