iOS 8.3共享扩展 - 启动URL方案

时间:2015-04-15 18:21:00

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

因为iOS 8.3更新我的共享扩展(使用URL Schemes调用我的主应用程序)停止工作。所以我发现我必须启动我的应用程序的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);
}];

我尝试从我的SLComposeServiceViewController控制器执行didSelectPost方法的两个代码块,之前它在以前的工作正常,然后将我的设备更新到iOS 8.3

2 个答案:

答案 0 :(得分:3)

您可以尝试使用此代码,但是我不知道是否会被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:@""]];
        }
    }

答案 1 :(得分:2)

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