【问题标题】:iOS 8.3 Share Extension - Launching URL SchemesiOS 8.3 Share Extension - 启动 URL Schemes
【发布时间】:2015-04-15 18:20:59
【问题描述】:

自从 iOS 8.3 更新后,我的共享扩展程序(使用 URL 方案调用我的主应用程序)停止工作。所以我发现我必须启动我的应用程序的 UIWebView 方法不再起作用了。我还尝试了 Apple 推荐的方法,使用 NSExtensionContext,但仍然没有结果。对此有什么想法吗?我的代码如下:

UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
[self.view addSubview: webView];
NSString *urlString = "com.myappscheme://shareextension";
NSString * content = [NSString stringWithFormat : @"<head><meta http-equiv='refresh' content='0; URL=%@'></head>", urlString];
[webView loadHTMLString:content baseURL:nil];

[self.extensionContext openURL:[NSURL URLWithString:urlString] completionHandler:^(BOOL success)
{
    NSLog(@"fun=%s after completion. success=%d", __func__, success);
}];

在将设备更新到 iOS 8.3 之前,我尝试从我的 SLComposeServiceViewController 控制器执行 didSelectPost 方法上的两个代码块,之前它工作得很好

【问题讨论】:

    标签: ios objective-c ios8-share-extension ios8.3 ios-urlsheme


    【解决方案1】:

    您可以尝试使用此代码,这可行,但我不知道是否会被 Apple 接受。

    UIResponder* responder = self;
        while ((responder = [responder nextResponder]) != nil) {
            NSLog(@"responder = %@", responder);
            if ([responder respondsToSelector:@selector(openURL:)] == YES) {
                [responder performSelector:@selector(openURL:) withObject:[NSURL URLWithString:@""]];
            }
        }
    

    【讨论】:

      【解决方案2】:

      extensionContext.openURL 仅适用于 Today 扩展。 Apple 没有提供公共 API 来实现这一点,而且似乎在 iOS 8.3 中,Apple 已经阻止了一些变通方法。这似乎是设计使然。如果您认为需要此功能,请打开增强请求/错误报告。

      【讨论】:

      • 他们似乎早先已经定义了这种设计,我在某处读到 Apple 不打算将扩展程序用作应用程序启动器,但是,正如您所提到的,一些变通方法仍然有效,直到 8.3 出现。奇怪的是,这类问题几乎没有,特别是共享扩展。
      • 在接受你的回答之前我会稍等片刻,所以我可能会得到一个更“肯定”的答案...
      • 它可能仍然可以使用“有趣”的代码来实现。您不能在编译时调用 UIApplication.openURL,但您可以使用运行时调用它,并且它可能会起作用。但这是在玩火。
      • @edulpn 这个答案是正确的,不管它是否像你喜欢的那样“积极”。
      • 我并不是说我不会接受@TomHarrington 的答案...我只是不太确定它是否正确,因为它不是基于某些 Apple 的文档,据我所知......如果应该出现另一个更详细和受支持的答案,我可以接受多个答案吗?这就是我的意思...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-25
      • 2015-08-04
      • 1970-01-01
      • 2015-08-14
      • 2018-04-16
      • 2015-01-14
      • 2015-03-25
      相关资源
      最近更新 更多