5

iOS 8.3 の更新以降、共有拡張機能 (URL スキームを使用してメイン アプリを呼び出す) が機能しなくなりました。そのため、アプリを起動するために必要だった UIWebView アプローチが機能しなくなっていることがわかりました。NSExtensionContext を使用して、Apple が推奨するアプローチも試しましたが、まだ結果はありません。これについて何か考えはありますか?私のコードは次のとおりです。

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 に答える