我从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上运行正常。
答案 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并执行必要的更改
在其下的第0项中,添加您要使用的自定义网址
在urlTypes的第0项下添加一行 - >网址标识
例如:anubhab://stackoverflow.com/
对于上面的自定义网址,您可以将URL Scheme项目0设置为: anubhab
查看附件中的详细信息
我已经关注了这些link。希望能帮助到你。即使我从后台杀了应用程序,它也适用于我。