2015-05-10 62 views
0

在为我的应用程序注册过程中,我要求允许推送通知,他们按下“允许推送通知”按钮,然后显示默认提示以允许推送通知。要求用户在注册过程后允许推送通知

问题在于,我使用parse.com作为后端,它需要我在用户注册推送通知时保存设备令牌。由于我不是在应用程序启动时询问他们,我无法获取设备标记并将其存储到我的Parse数据库。

如果用户同意允许通知,将

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken 

方法,他们启动应用程序下一次叫什么名字?如果没有,是否有办法在其他地方获取设备标记,以便我可以将其保存到Parse?

回答

1

didRegisterForRemoteNotificationsWithDeviceToken:只要用户通过iOS通知(无论这是您的应用程序的执行情况)允许它们,就会在用户登录并同意后进行调用。在这种方法中,您应该采取[PFUser currentUser]并将其放入PFInstallation对象中。

在后续启动应用程序时,如果用户请求了通知,则应再次呼叫registerForRemoteNotifications,这将导致另一个呼叫didRegisterForRemoteNotificationsWithDeviceToken:,因为通知令牌可能已更改。

如果允许用户注销/注册,则应根据需要更新PFInstallation对象。

+0

我注册的是用户通知,而不是远程通知。我感到非常愚蠢,感谢您的帮助! – harkmall

0

我假设你已经在你的AppDelegate实现了这个方法:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error 

两个回调都涉及到对设备令牌APNS请求。

在您注册您的通知类型后,您应该拨打[application registerForRemoteNotifications]在上述各回调中接收设备令牌(或不要)。

您可以在任何地方拨打[[UIApplication sharedApplication] registerForRemoteNotifications]来获取设备令牌。