如何在 didFinishLaunchingWithOptions 中测试 UILocalNotification

Posted

技术标签:

【中文标题】如何在 didFinishLaunchingWithOptions 中测试 UILocalNotification【英文标题】:How to test UILocalNotification in didFinishLaunchingWithOptions 【发布时间】:2013-01-15 10:28:03 【问题描述】:

我想测试我的应用程序在退出应用程序并且用户点击通知中心的通知以启动我的应用程序时的行为。在- didFinishLaunchingWithOptions 中,您可以检查密钥UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];,但我该如何调试呢?

如果我开始在 Xcode 中运行应用程序,然后我退出应用程序,它将失去与 Xcode 的连接。

【问题讨论】:

让你的应用程序在后台运行,在调试模式下连接到xcode,让一个本地通知到达,然后去通知中心点击那个通知,didReceiveLocalNotification 函数就会被调用。应用程序完全关闭时到达本地通知的唯一区别是您必须在 didFinishLaunchingWithOptions 中编写代码并且不调用 didReceiveLocalNotification。希望这些信息对您有所帮助.. 【参考方案1】:

如果您将 Xcode 方案设置为手动启动(编辑方案 > 运行 > 信息),那么您可以在安排好 UILocalNotification 后停止运行您的应用程序。

然后,如果您再次运行您的应用程序,它在您从模拟器/设备启动之前不会启动。

然后您可以等待通知触发并单击通知,然后启动您的应用程序(手动!)。这样您就可以从launchOptionsapplication:didFinishLaunchingWithOptions: 中调试UILocalNotification

请注意,为了调试,您可能希望将您的 UILocalNotification 安排在未来大约 10 秒左右的日期,调试与时间相关的东西总是很痛苦。

祝你好运。

【讨论】:

对于 xcode 10 手动设置是选择Wait for executable to be launched【参考方案2】:

在您启动应用程序之前,不会调用 didFinishLaunchingWithOptions: 方法。但是关闭您的应用不会使您的应用失去与 xcode 的连接,因为您的应用会进入后台。

也许我错过了什么,但你实际上可以在你的设备上运行你的应用程序,然后按照你的意愿继续。

如果日志仍然无法正常工作,您也可以在didFinishLaunchingWithOptions: 中尝试此代码。

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"options" message:[launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey] description] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alertView show];
    return YES;

【讨论】:

Xcode 方案允许您在从 Xcode 运行应用程序时手动或自动启动应用程序。如果您手动选择,则可以等待通知出现在设备/模拟器上,然后单击以启动您的应用程序,从而从 launchOptions 进行调试。见我上面的回答。 ***.com/a/21306204/662605【参考方案3】:

让你的应用程序在调试模式中连接到xcode的后台运行并让一个本地通知到达,然后转到通知中心并单击该通知,didReceiveLocalNotification:函数将被调用。

在应用程序完全关闭时到达本地通知的唯一区别是您必须在 didFinishLaunchingWithOptions 中编写代码(您可以复制粘贴为 didReceiveLocalNotification: 函数编写的相同代码)并且不会调用 didReceiveLocalNotification:

希望这些信息对您有所帮助..

【讨论】:

那么在- application:didFinishLaunchingWithOptions: 中真的没有真正的方法来测试它吗? 如果您有设备,那么您可以查看 xcode 管理器中的设备日志 您可以手动启动应用程序(编辑您的方案)。当您单击通知时,请确保您的应用程序没有运行,您的应用程序将从通知启动并全部连接到 Xcode。看我上面的回答***.com/a/21306204/662605【参考方案4】:

可能这是一个愚蠢的答案。 :)

我通常会在那里放一个 UIAlertView。并根据本地通知设置alertview中的文本。

另一个是退出应用程序。将一些 NSLog 放在 applicationDidFinishLaunching 中。退出应用程序。转到 Xcode->组织者。然后在 设备 标签下选择您的设备。选择选项控制台。你可以在那里看到日志。

希望这会有所帮助。

【讨论】:

以上是关于如何在 didFinishLaunchingWithOptions 中测试 UILocalNotification的主要内容,如果未能解决你的问题,请参考以下文章

TabBar 和 NavigationBar 的问题

推送通知进入时调用的方法序列

如何在图像中找到明亮区域(以及如何在图像中找到阴影区域)

在QGIS中如何添加天地图的WMTS

如何在表单提交后保留文本(如何在提交后不删除自身?)

如何在异步任务中调用意图?或者如何在 onPostExecute 中开始新的活动?