如何启动打开自定义URL方案的应用程序?

zap*_*dor 5 iphone cocoa-touch url-scheme custom-url ios

我正在开发一个管理我自己的URL方案的应用程序,所以我实现了回调:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions (NSDictionary *)launchOptions
{
    // Get our launch URL
    if (launchOptions != nil)
    {
        // Launch dictionary has data
        NSURL* launchURL = [launchOptions objectForKey: UIApplicationLaunchOptionsURLKey];

        // Parse the URL
        NSString* hostString = [launchURL host];

        blah blah blah...
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但我需要启动调用者应用程序(即打开URL的应用程序).所以我的问题是,这可能吗?

我一直在玩,UIApplicationLaunchOptionsSourceApplicationKey但我无法通过其应用程序Bundle ID启动应用程序.我可以吗?

我也尝试了未记录launchApplicationWithIdentifier:UIApplication,但我需要一个真正的解决方案,似乎解决方法只适用于模拟器.

有任何想法吗?谢谢!

Dar*_*ust 2

唯一的方法是让两个应用程序都支持自定义 URL 方案。然后,您将调用者 URL 嵌入到其他应用程序的 URL 中。

例如,假设 App2 希望以某种方式调用 App1,以便 App1 可以“回调”App2。它将创建并打开一个如下 URL:

app1://?caller=app2%3A%2F%2Fblabla
Run Code Online (Sandbox Code Playgroud)

当您解码该caller部分时,您将返回字符串,app2://blabla然后您可以再次打开该字符串openURL:以“回调”。

  • 这是因为使用 facebook SSO(单点登录)进行身份验证的应用程序会向 facebook 注册其自定义 URL 方案。 (2认同)