5

由于 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 方法上的两个代码块,之前它工作得很好

4

2 回答 2

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:@""]];
        }
    }
于 2015-04-22T09:59:19.020 回答
2

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

于 2015-04-15T18:27:57.003 回答