调用performActionForShortcutItem与applicationWillEnterForeground的顺序

问题描述 投票:2回答:1

所以,我有一个具有服务器状态的应用程序,我用超时值刷新它并检查applicationWillEnterForeground中的超时,如果超时已经过期则重新加载。到目前为止,这种方法运作良好。

我现在想要实现执行服务器操作的新力触摸快捷操作。但是,我不希望状态获取操作与快捷操作同时发生。当通过快捷方式启动应用程序时,这不是问题,但是当从非活动状态转换 - >活动时,我可能最终在applicationWillEnterForeground中启动一个服务器操作,而在performActionForShortcutItem中启动另一个服务器操作,这不是最佳的。

我所追求的是,​​如果应用程序没有(重新)通过强制触摸按下启动,则只能潜在地刷新我的状态。

我以为我会用bool解决这个问题,“isHandlingShortcut”我在performActionForShortcutItem设置然后检查applicationWillEnterForeground,在那种情况下跳过我的刷新 - 但事实证明它不起作用,因为applicationWillEnterForeground被称为第一!

有什么方法我可以发现我(重新)通过applicationWillEnterForeground的快捷方式启动了应用程序?

编辑:也许我可以将我的“刷新”-logic移动到applicationDidBecomeActive?那个是在performActionForShortcutItem之后调用的。

ios objective-c 3dtouch
1个回答
0
投票

根据文件:

[...]启动时检查您的应用是否通过快速操作启动。通过检查UIApplicationLaunchOptionsShortcutItemKey启动选项密钥,在您的应用程序中执行此检查:willFinishLaunchingWithOptions:或application:didFinishLaunchingWithOptions:方法。 UIApplicationShortcutItem对象可用作启动选项键的值。

https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1622935-application

我正在做的是检查didFinishLaunchingWithOptions中的快捷方式,以便稍后在performActionForShortcutItem我知道该应用程序是否由于快捷方式或应用程序已启动而启动。

在qazxsw poi中(如果快捷方式启动应用程序,则会执行):

didFinishLaunchingWithOptions

后来在self.launchShortcutItem = launchOptions[UIApplicationLaunchOptionsShortcutItemKey];

performActionForShortcutItem
© www.soinside.com 2019 - 2024. All rights reserved.