我正在从 safari 调用自定义 URL 来启动应用程序。如果应用程序在后台运行,它可以正常工作。但是,当应用程序未在后台运行但已安装在设备上时,应用程序不会启动。我已经实现了以下两种方法:
- (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 上正常。
我面临着同样的问题。
看来我们的代码运行得太快了。
插入延迟来运行自定义代码将解决该问题。
- (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;
}
希望能帮助到你
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)