Objective-C iPhone - 立即在Safari中打开URL并退出应用程序

时间:2014-06-10 01:18:45

标签: ios objective-c safari uiapplication

我可以使用以下方式在Safari中打开网址:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"www.myurl.com"]];

它工作正常,但在模拟器中需要10秒以上。我已尝试将此代码放入应用代理的didFinishLauchingWithOptions方法或我的视图控制器的viewDidLoad方法中,但仍需要10秒以上才能加载。在突然打开Safari之前,我在整个持续时间内都没有任何内容的黑屏。有什么办法可以减少加载时间吗?这只是一个模拟器错误?我仍然试图让我的设备注册以在实际设备上进行测试。

有趣的是,当我将其添加到UIButton的动作方法时,应用程序立即加载,但用户必须点击UIButton才能在Safari中启动URL。

我的目标是让应用程序在启动时立即在safari中启动硬编码的URL。该应用程序应立即退出,以便当用户点击应用程序图标时,它将能够再次执行此操作。有什么建议吗?

这是我之前在我的ViewController.m中尝试过的一个片段,如果你想自己尝试一下,它有10秒黑屏:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"www.myurl.com"]];
    exit(0);
}

2 个答案:

答案 0 :(得分:5)

为什么不在Mobile Safari中使用添加到主屏幕

enter image description here

但是,如果您想在启动应用程序之初调用Safari,请尝试以下操作:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.


    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.google.com"]];
        exit(0);
    });

    return YES;
}

答案 1 :(得分:0)

有关此问题的一个更新...在iOS 10之后,Apple建议改为使用以下方法:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.google.com"] options:@{} completionHandler:nil];

您也许还可以通知选项参数和/或处理来自completionHandler语句的任何返回。