【问题标题】:Issues with custom Url Schemes自定义 URL 方案的问题
【发布时间】:2016-11-30 13:57:16
【问题描述】:

我有一个应用,比如说 2 个应用 - app1,app2 假设我从 app1 app2 打开。 如何使用自定义 url 方案从 app2 发回数据,例如在 facebook 应用程序中? 如果我用 url 重新打开 app1,我会看到回到 app2,这对我的情况来说不是一个好主意。 我想以模态方式打开 app2,并用返回的数据将其关闭。这可能吗?

【问题讨论】:

    标签: ios


    【解决方案1】:

    您可以从 info.plist 文件中为您的应用定义自定义 URL 架构。您可以为此检查SO 上的现有线程。

    在您的情况下,例如在 app1- 定义自定义 url myAppOneScheme 和在您的 app2 中,定义自定义 url myAppTwoScheme

    当你从 app 1 打开 app2 时,传递 app1 的 url 如下:

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"myAppOneScheme://test?callerURL= myAppOneScheme"]];
    

    来自app2,处理openURL方法:

    - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
        NSLog(@"url recieved: %@", url);
        NSLog(@"query string: %@", [url query]);
        NSLog(@"host: %@", [url host]);
        NSLog(@"url path: %@", [url path]);
        NSDictionary *dict = [self parseQueryString:[url query]];
        NSLog(@"query dict: %@", dict);
    //   NSString callerurl = parse callerURL from query
    
    //  store callerurl in user default or global variable. 
        return YES;
    }
    

    当您在 app2 中完成操作并想返回 app1 时,打开调用方 url

      [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:"%@//testback?response=%@", caller url , datayouwanttoSendback]]];
    

    现在,在您的 app1 中,再次处理打开 url 方法并解析响应

    【讨论】:

    • 好的,在这种情况下,我会看到回到 app1,在 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:"%@//testback?response=%@", caller url , datayouwanttoSendback] 来自 ios 系统 api,就像回到 safari. 对吗?
    • 我希望它像 facebook 从下到上以模态方式打开并像关闭控制器一样关闭
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 2012-06-15
    • 2011-04-30
    • 2014-10-22
    • 2011-12-14
    • 1970-01-01
    • 2021-05-07
    相关资源
    最近更新 更多