用户登录时注册远程通知

时间:2015-08-25 13:56:01

标签: ios login push-notification apple-push-notifications

我希望我的应用只在用户登录后才会收到远程通知。我一直在阅读Apple的Local and Remote Notification Programming Guide,我不确定是否需要拨打registerUserNotificationSettings:当应用程序启动时(application:didFinishLaunchingWithOptions:),或者这只是一个示例,我可以在用户登录后注册远程通知(如果有)。

另一方面,如果我想在用户退出时停止接收远程通知......是否可以“取消注册”该应用?

由于

4 个答案:

答案 0 :(得分:3)

首次启动应用时,您无需注册推送/本地通知。在用户登录后调用它是可以的,事实上,它可能是一个愿望UI /流程决策,因为用户更有可能同意接收通知决定登录该应用程序。

关于退出,您不应该注销"。您需要做的就是向服务器发送一条指示,告知用户当前已注销,因此不应发送任何推送通知。该应用程序将来仍然会选择接收通知(例如,如果用户在设备上的“设置”应用中查看该通知)。

答案 1 :(得分:2)

您不需要在该级别上处理它。只是让它注册,因为你已经将推送服务实现到你的应用程序中,然后从服务器端处理推送,当你从你的应用程序发送令牌时,也发送标志,例如" recievePush"并将此条目保存到您的数据库中。这样您将拥有更多的控制力和灵活性。当用户登录时将标志设置为true,当用户注销时将标志设置为false。发送推送时,只需检查标志......

答案 2 :(得分:2)

您可以在登录/注销时注册和取消注册,但这会导致问题。例如。如果用户在没有注销的情况下重新安装应用程序,您仍然可以在没有登录用户的情况下进行有效注册。请参阅this question

当应用程序在没有登录用户的情况下启动时,您应该预防性地取消注册,以避免此问题。每次应用程序启动时都应该更新注册,因此在每个应用程序启动时注册/取消注册,具体取决于用户是否登录,另外还要在用户登录/注销时注册/取消注册。这样,如果用户重新安装应用程序并在第一次启动它,它将被取消注册。

这是您可以实现的最佳行为,因为Twitter,Facebook,Skype等具有相同的问题:如果登录用户重新安装应用程序而不先注销,则设备仍会收到用户登录之前的推送通知卸载,即使他没有使用重新安装的应用程序登录。

答案 3 :(得分:1)

@Chonch说实话,但如果你想继续讲怎么做:

if ([application respondsToSelector:@selector(registerUserNotificationSettings:)])
{
    //UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound |UIRemoteNotificationTypeAlert) categories:nil];
    //[application registerUserNotificationSettings:settings];
    [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge categories:nil]];
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
} else {
    //register to receive notifications
    UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound;
    [application registerForRemoteNotificationTypes:myTypes];
}

然后,如果您的用户已注销或未登录,您只需取消通知。:)