gpt4 book ai didi

ios - UIAlert 上的用户交互

转载 作者:搜寻专家 更新时间:2023-11-01 05:37:42 24 4
gpt4 key购买 nike

Facebook Messenger 应用程序在用户与推送通知警报消息交互后自动关闭 UIViewController。我想知道他们如何检测到用户单击了警报 View 中的其中一项操作。

我尝试基于推送通知委托(delegate)方法实现一个特定的解决方案:

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData)
func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError)

不幸的是,这并不可靠,尤其是对于已经注册推送通知的设备。

这是一个由 Facebook 实现的工作流程的 youtube 视频

https://www.youtube.com/embed/sCg3vYx9hlw

更新:

问题是,当用户之前删除了应用程序并且已经注册了推送通知时,将调用此方法。在这种情况下,isRegisteredForRemoteNotifications 为 false,因此我要求注册 ForRemoteNotifications。显示警报时- 应用程序:didRegisterForRemoteNotificationsWithDeviceToken:即使用户没有单击警报对话框中的任何选项,也会被调用。

最佳答案

对于 iOS8 和更高版本注册通知是这样的:

UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound) categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];

并且在用户与推送通知警报消息交互时调用的 AppDelegate didRegisterUserNotificationSettings 方法中,您可以在此处注册通知。在此委托(delegate)方法中,您可以检查是否允许应用程序接收推送通知以及通知类型:

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings {
// here you can check notification settings
// and do some ui changes

[application registerForRemoteNotifications];
}

关于ios - UIAlert 上的用户交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34966833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com