所以,我有一个具有服务器状态的应用程序,我用超时值刷新它并检查applicationWillEnterForeground
中的超时,如果超时已经过期则重新加载。到目前为止,这种方法运作良好。
我现在想要实现执行服务器操作的新力触摸快捷操作。但是,我不希望状态获取操作与快捷操作同时发生。当通过快捷方式启动应用程序时,这不是问题,但是当从非活动状态转换 - >活动时,我可能最终在applicationWillEnterForeground
中启动一个服务器操作,而在performActionForShortcutItem
中启动另一个服务器操作,这不是最佳的。
我所追求的是,如果应用程序没有(重新)通过强制触摸按下启动,则只能潜在地刷新我的状态。
我以为我会用bool解决这个问题,“isHandlingShortcut”我在performActionForShortcutItem
设置然后检查applicationWillEnterForeground
,在那种情况下跳过我的刷新 - 但事实证明它不起作用,因为applicationWillEnterForeground
被称为第一!
有什么方法我可以发现我(重新)通过applicationWillEnterForeground
的快捷方式启动了应用程序?
编辑:也许我可以将我的“刷新”-logic移动到applicationDidBecomeActive
?那个是在performActionForShortcutItem
之后调用的。
根据文件:
[...]启动时检查您的应用是否通过快速操作启动。通过检查UIApplicationLaunchOptionsShortcutItemKey启动选项密钥,在您的应用程序中执行此检查:willFinishLaunchingWithOptions:或application:didFinishLaunchingWithOptions:方法。 UIApplicationShortcutItem对象可用作启动选项键的值。
https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1622935-application
我正在做的是检查didFinishLaunchingWithOptions
中的快捷方式,以便稍后在performActionForShortcutItem
我知道该应用程序是否由于快捷方式或应用程序已启动而启动。
在qazxsw poi中(如果快捷方式启动应用程序,则会执行):
didFinishLaunchingWithOptions
后来在self.launchShortcutItem = launchOptions[UIApplicationLaunchOptionsShortcutItemKey];
:
performActionForShortcutItem