所以,我有一个具有服务器状态的应用程序,我按超时值刷新它并在applicationWillEnterForeground
中检查超时,如果超时已到期则重新加载。
到目前为止,这种方法运作良好。
我现在想要实现执行服务器操作的新力触摸快捷操作。但是,我不希望状态获取操作与快捷操作同时发生。当应用程序通过快捷方式启动时,但从非活动状态转换时,这不是问题 - >活跃的,我最终可以在applicationWillEnterForeground
中启动一个服务器操作,在performActionForShortcutItem
中启动另一个服务器操作,这不是最佳的。
我所追求的是,如果应用程序不(重新)因强制触摸按下而启动,则仅可能刷新我的状态。
我以为我会用bool解决这个问题,“isHandlingShortcut”我在performActionForShortcutItem
中设置然后检入applicationWillEnterForeground
,在这种情况下跳过我的刷新 - 但事实证明它没有首先调用applicationWillEnterForeground
以来的工作!
是否有任何方法,我可以通过applicationWillEnterForeground
中的快捷方式找到我(重新)推出的应用程序?
applicationDidBecomeActive
?那个是在performActionForShortcutItem
之后调用的。
答案 0 :(得分:0)
根据文件:
[...]启动时检查您的应用是否通过快速启动 行动。执行此检查 application:willFinishLaunchingWithOptions:或 application:didFinishLaunchingWithOptions:方法通过检查 UIApplicationLaunchOptionsShortcutItemKey启动选项键。该 UIApplicationShortcutItem对象可用作值的值 启动选项键。
https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1622935-application
我正在做的是检查didFinishLaunchingWithOptions
中的快捷方式,以便稍后performActionForShortcutItem
我知道该应用是否因快捷方式启动或应用已启动。
在didFinishLaunchingWithOptions
中(如果shourtcut启动应用程序,则执行):
self.launchShortcutItem = launchOptions[UIApplicationLaunchOptionsShortcutItemKey];
稍后在performActionForShortcutItem
:
if (self.launchShortcutItem) {
// app launched due to shortcut
} else {
// app was already launched
}