gpt4 book ai didi

iphone - 如何判断离开iOS应用程序是从快速应用程序切换还是手动进入前台?

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

有没有办法判断 iOS 应用是从快速应用切换还是手动进入前台?我需要知道调用 applicationWillEnterForeground 的时间,因此可以根据应用程序进入前台的条件执行(或不执行)某些特定代码。

编辑:
事实证明,这对我来说更像是一个设计问题。我将代码移至 applicationDidBecomeActive。我还向名为 fastAppSwitching 的 appDelegate 添加了一个 BOOL 属性(可能是错误的名称)。我在 application:handleOpenURL 和 application:openURL:sourceApplication:annotation 中将此设置为 YES。然后我将以下代码添加到应用程序:didFinishLaunchingWithOptions:

        if (launchOptions) {
self.fastAppSwitching = YES;
}
else {
self.fastAppSwitching = NO;
}

在 applicationDidBecomeActive 中,我使用了以下代码:
    if (fastAppSwitching == YES) {
self.fastAppSwitching = NO; //stop, don't go any further
}
else {
...
}

EDIT2:MaxGabriel 在下面提出了一个很好的观点:“只是对采用此处描述的解决方案的其他人的警告,applicationDidBecomeActive:在用户例如忽略电话或短信时被调用,这与 applicationWillEnterForeground 不同”。这实际上也适用于应用内购买和 Facebook 应用内授权(iOS 6 中的新功能)。因此,通过一些进一步的测试,这是当前的解决方案:

添加一个名为passedThroughWillEnterForeground 的新Bool。

在应用程序WillResignActive 中:
self.passedThroughWillEnterForeground = NO;

在 applicationDidEnterBackground 中:
self.passedThroughWillEnterForeground = NO;

在应用程序WillEnterForeground:
self.passedThroughWillEnterForeground = YES;

在 applicationDidBecomeActive 中:
    if (passedThroughWillEnterForeground) {
//we are NOT returning from 6.0 (in-app) authorization dialog or in-app purchase dialog, etc
//do nothing with this BOOL - just reset it
self.passedThroughWillEnterForeground = NO;
}
else {
//we ARE returning from 6.0 (in-app) authorization dialog or in-app purchase dialog - IE
//This is the same as fast-app switching in our book, so let's keep it simple and use this to set that
self.fastAppSwitching = YES;
}

if (fastAppSwitching == YES) {

self.fastAppSwitching = NO;
}
else {
...
}

EDIT3:我认为我们还需要一个 bool 值来判断应用程序是否是从终止状态启动的。

最佳答案

如果您的应用程序由另一个应用程序启动,则

- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
sourceApplicarion:(NSString *)bundleID
annotation:(id)info;

在您的应用程序委托(delegate)上调用方法。您可以使用此方法来 e。 G。将 bool 开关设置为 true,指示应用程序是否由另一个程序启动。

问题是这个方法是在 applicationWillEnterForeground: 之后调用的。 ,因此您无法通过该方法判断您的应用程序是手动启动还是自动启动。

但是,我怀疑如果您需要在特定方法中检测到这一点,您可能会遇到设计问题,您可能应该重新组织您的代码。

关于iphone - 如何判断离开iOS应用程序是从快速应用程序切换还是手动进入前台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13425748/

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