ios - 如何在用户关闭当前应用程序时打开另一个应用程序?

标签 ios objective-c cocoa-touch uiapplicationdelegate

在我的应用程序中,我希望用户在关闭当前应用程序时看到另一个应用程序。 有可能吗?我尝试编写代码并直接从方法中通过自定义 url 架构打开应用程序:

- (void)applicationWillResignActive:(UIApplication *)application
{
    NSString * string = @"InnovationLab://";
    NSURL * url = [NSURL URLWithString:string];
    [[UIApplication sharedApplication] openURL:url];
}

但是没有用。我在这里放置了一个断点,一旦我关闭应用程序,它就会停在这里,但什么也没有发生。这不会转到 AppStore。仅供演示和内部使用。

最佳答案

你应该这样做吗?没有。
你能做这个吗? (可能)不是

我写了一个小测试应用程序来尝试打开一个我知道可以工作的 URL(一个可以打开 map 应用程序的 Apple Maps URL)。我输入了一些日志记录代码以查看发生了什么。

- (void)applicationWillResignActive:(UIApplication *)application
{
    NSURL *url = [NSURL URLWithString:@"http://maps.apple.com/?daddr=San+Francisco,+CA&saddr=cupertino"];
    if ([[UIApplication sharedApplication] canOpenURL:url]) {
        NSLog(@"Can Open URL");
    } else {
        NSLog(@"Cannot Open URL");
    }
    BOOL success =  [[UIApplication sharedApplication] openURL:url];
    NSLog(@"Success is %@", [NSNumber numberWithBool:success]);

    NSLog(@"Shared app: %@", [UIApplication sharedApplication]);
    NSLog(@"applicationWillResignActive");
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    NSURL *url = [NSURL URLWithString:@"http://maps.apple.com/?daddr=San+Francisco,+CA&saddr=cupertino"];
    [[UIApplication sharedApplication] openURL:url];
    NSLog(@"Shared app: %@", [UIApplication sharedApplication]);
    NSLog(@"Entered Background");
}

所有 NSLogs 记录了一些东西。该应用程序为 canOpenURL: 返回 YES,但在您尝试 -openURL: 时返回 NO 作为返回值。

这是日志:

Flipper[18946:907] Can Open URL
Flipper[18946:907] Success is 0
Flipper[18946:907] Shared app: <UIApplication: 0x1f0413f0>
Flipper[18946:907] applicationWillResignActive
Flipper[18946:907] Shared app: <UIApplication: 0x1f0413f0>
Flipper[18946:907] Entered Background

如果您想让您的用户打开另一个应用程序,您应该为他们提供一个按钮(或一个操作表,或一个警告)。重新调整主页按钮的用途听起来可能会让您的应用遭到拒绝。

请注意,如果您将相同的代码放入 application:didFinishLaunchingWithOptions:,它会找到并立即将您带到 map 应用程序。 applicationWillResignActive: 中可能会阻止该行为。如果您真的打算这样做(并且您的应用只有一个 View ),您可以使用 viewWillDisappear

关于ios - 如何在用户关闭当前应用程序时打开另一个应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14819329/

相关文章:

ios - UICollectionView 单元格留下巨大间隙所有设置设置为 0

ios - 当我滑动 uitableviewcell 时调用 didSelectRowAtIndexPath

ios - 检查 iOS 6 中是否安装了 Google map 应用程序

iphone - 我的 @property 已声明,但我仍然收到可能无法响应警告

ios - 许多 UIImageView 的内存管理

ios - UITextField 无法正确显示超出范围的文本

iphone - 执行 ABAddressBookSave 时 EXC_BAD_ACCESS !

iphone - 状态栏与 ViewController 重叠

cocoa-touch - 取消 UIView animateWithDuration 中的 block

ios - 错误: linker command failed with exit code 1 (use -v to see invocation) Xcode 11. 3