gpt4 book ai didi

ios - 正确处理启动选项和本地通知

转载 作者:行者123 更新时间:2023-12-01 16:48:21 26 4
gpt4 key购买 nike

我不确定如何处理处理本地通知的不同状态(或为此而推送)。

据我了解,这些是不同的场景(如果我错了,请纠正我):

一种。应用程序在前台

    - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{}

被调用并且:application.applicationState == UIApplicationStateActive

湾。应用程序在后台
    - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{}

被调用并且:application.applicationState == UIApplicationStateInactive

C。该应用程序已终止,因此:
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{}

被调用的第一和后记:
    - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{}

在 application.applicationState == UIApplicationStateActive 的地方被调用(因为它在 didFinishLanching 之后一段时间变得活跃......

在这三种情况下,我应该采取不同的行动:

一种。如果应用程序在前台,我想显示一个显示通知正文的警报​​,如果用户使用继续按钮关闭警报,则将一些 View Controller 推送到堆栈上。

湾。如果应用程序在后台,并且用户按下警报,那么我想自动将 View Controller 推送到堆栈,因为用户按下警报表明他想要遵循它的含义。

C。与 b 相同的场景。用户按下警报并希望看到相关 View 。

我的问题是我应该如何/在哪里将相关 View 推送到 navigationViewController 以及如何在前台收到通知时显示警报?

问题是场景 c 包含场景 a。这意味着,在调用了 didFinishlaunching 之后(不管我是否在那里处理了通知),然后调用了 didRecieveLocalNotification(就好像我在前台收到通知一样),但在这种情况下,我不想显示警报。 .

我对开始的假设有误吗?

最佳答案

对于场景 C,didReceiveLocalNotification不调用,只有 didFinishLaunchingWithOptions叫做。

由于这些是应用程序委托(delegate)方法,它们可以随时接收事件(无论哪个 View Controller 处于事件状态),您可以从那里做任何您想做的事情。

例如,您可以显示 UIAlertView来自 didFinishLaunchingWithOptions (在默认 return YES; 之前)并将应用程序委托(delegate)设置为 UIAlertView的委托(delegate),以便您可以处理警报的解除。

另外,请注意,如果应用程序在接收本地通知时处于前台,则用户不会收到警报。如果需要,您可以提醒用户。

关于ios - 正确处理启动选项和本地通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18232735/

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