当应用未在后台运行时,自定义URL方案不起作用

时间:2014-04-30 10:20:47

标签: ios custom-url

我从safari调用自定义网址来启动应用。如果应用程序在后台运行,它可以正常工作。但是,当应用程序未在后台运行但已安装在设备上时,应用程序无法启动。我已经实现了以下两种方法:

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

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

但当应用未在后台运行时,不会调用它们。

此外,我搜索了一下,发现我们可以在应用未在后台运行时使用以下代码启动应用

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

in

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

但遗憾的是, didFinishLaunchingWithOptions 也未被触发。有人有指针吗?

P.S:此问题仅在iPad中出现。它在iPhone上运行正常。

2 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。

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

插入延迟以运行自定义代码将解决此问题。

- (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;
}

希望有所帮助

答案 1 :(得分:0)

获取info.plist并执行必要的更改

  1. 添加新行 - >网址类型
  2. 展开它
  3. 项目0中的
  4. 添加新行--->网址方案
  5. 展开它
  6. 在其下的第0项中,添加您要使用的自定义网址

  7. 在urlTypes的第0项下添加一行 - >网址标识

  8. 在那里提供您应用的包ID
  9. 例如:anubhab://stackoverflow.com/

    对于上面的自定义网址,您可以将URL Scheme项目0设置为: anubhab

    查看附件中的详细信息 enter image description here

    我已经关注了这些link。希望能帮助到你。即使我从后台杀了应用程序,它也适用于我。