当应用程序不在后台运行时,自定义URL方案不工作[英] custom URL scheme does not work when app is not running in background

本文是小编为大家收集整理的关于当应用程序不在后台运行时,自定义URL方案不工作的处理方法,想解了当应用程序不在后台运行时,自定义URL方案不工作的问题怎么解决?当应用程序不在后台运行时,自定义URL方案不工作问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我正在从 Safari 调用自定义 URL 来启动应用程序.如果应用程序在后台运行,它工作正常.但是当应用程序没有在后台运行,但已经安装在设备上时,应用程序不会启动.我已经实现了以下两种方法:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

但当应用不在后台运行时,它们都不会被调用.

我也google了一下,发现当应用不在后台运行时,我们可以使用以下代码启动应用

if ( [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey] != nil ) {
    NSURL *url =(NSURL *)[launchOptions valueForKey:UIApplicationLaunchOptionsURLKey];
    [self application:application handleOpenURL:url];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

但不幸的是,didFinishLaunchingWithOptions 也没有被触发.有没有人指点一下?

P.S : 这个问题只出现在 iPad 上.它在 iPhone 上可以正常工作.

推荐答案

我也遇到了同样的问题.

似乎我们的代码运行得太快了.

插入延迟以运行您的自定义代码将解决问题.

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    [NSTimer scheduledTimerWithTimeInterval:0.5f target:self selector:@selector(yourCustomActions) userInfo:nil repeats:NO];

    return YES;
}

希望对你有帮助

本文地址:https://www.itbaoku.cn/post/1793756.html