我从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];
}
型
在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
型
但是很遗憾,didnashLaunchingWithOptions也没有触发,有人有指针吗?
P.S:这个问题只发生在iPad上。它在iPhone上工作正常。
3条答案
按热度按时间xu3bshqb1#
我也面临着同样的问题。
似乎我们的代码运行得太快了。
插入延迟以运行自定义代码将解决此问题。
字符串
希望它能帮助
velaa5lx2#
得到你的信息.plist和执行必要的更改
1.添加新行--> URL类型
1.将其扩展
1.在项目0中添加新行---> URL方案
1.将其扩展
1.在其下的项目0中,添加要使用的自定义URL
1.在urlTypes --> URL identifier的第0项下添加一行
1.在此处提供您的应用程序的bundle id
例如:anubhab:stackoverflow.com/
对于上面的自定义URL,您可以将URL方案项0设置为:anubhab
详细信息见附件x1c 0d1x
我已经遵循了这些link。希望它有帮助。它对我来说很好,即使我从后台杀死应用程序。
该链接的Wayback机器版本:https://web.archive.org/web/20170707150909/http://chrisrisner.com/31-Days-of-iOS-Day-18-Opening-your-App-from-a-Website。
g0czyy6m3#
当另一个应用打开包含您的自定义方案的URL时,系统将启动您的应用(如有必要),并将其置于前台。系统将通过调用您的应用委托的应用(_:open:options:)将URL传递给您的应用
override应用程序委托中的以下函数
字符串
apple's official documentation