5

Sparrow が行ったように、アプリを変更して新しい MIME タイプまたは未知の MIME タイプをサポートすることなく、webview 内から通帳をダウンロードして追加することは可能ですか?

WebView を備えたニュース iOS アプリがあります。webview に、ニュース項目とバナーを表示します。バナーをクリックすると、.pkpass ファイルへの URL を開いて通帳に追加したい。代わりに、FrameLoadInterrupted エラーが発生し、何も表示されません。Safari から URL を開くと、Chrome で問題なく動作します。これは、今週初め (バージョン 23) も意図したとおりに URL を開くためです。

これはおそらくAppleの奇妙な戦略ですか?この MIME タイプを webview から適切に開くことを許可していませんか?

4

2 に答える 2

3

私の最善の策は、UIWebViewが Passbook パスを処理できないということです。UIWebViewDelegateただし、メソッドでダウンロードを試してキャッチすることはできます-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

私が言いたいのは、この部分を自分で処理する必要があるということです。私が使用したhttp://passkit.com/samples/は終了する URL を返さないためpkpass、通帳ファイルをどのように要求するかに完全に依存しています。

拡張子を含める場合は.pkpass、リクエストで拡張子を確認できます。

passbook ファイルがどのような URL にあるかがわかっている場合は、ここに独自のダウンロード コードを記述し、それをpassbook api経由で passbook に渡します。


これに対する優れた修正はないようです。失敗したULRをサファリにロードできます。

- (void) webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
    NSLog(@"Webview: %@", error);

    if ([error.domain isEqualToString:@"WebKitErrorDomain"] && error.code == 102) {
        NSString *failedURL = [error.userInfo objectForKey:NSURLErrorFailingURLStringErrorKey];

        if (failedURL == nil) {
            return;
        }
        NSURL *url = [NSURL URLWithString:failedURL];

        [[UIApplication sharedApplication] openURL:url];
    }
}

しかし、これは本当に悪いコーディングです。

于 2012-11-30T15:26:34.817 に答える