iOS中內嵌WKWebView,通過H5調起支付寶客戶端支付

1.由于蘋果審核,對于應用內應該使用內購功能,卻沒有使用內購,使用了第三方支付的,一律不給通過,廣大開發者就開啟各種腦洞,內嵌H5就是其中一種智慧的結晶,然鵝,支付寶相關文檔比較滯后,相關資料也參差不齊,坑點比較多。下面最坑的一個點就是,H5支付的時候,調起支付寶客戶端不起作用,原因是邏輯寫錯地方了,正確的處理如下:

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
    if (webView != _webView) {return;}
    
    NSString *urlStr = navigationAction.request.URL.absoluteString;
    if ([urlStr hasPrefix:@"alipays://"] || [urlStr hasPrefix:@"alipay://"]) {
        
        NSURL *alipayURL = [NSURL URLWithString:urlStr];
        
        if (@available(iOS 10.0, *)) {
            [[UIApplication sharedApplication] openURL:alipayURL options:@{UIApplicationOpenURLOptionUniversalLinksOnly: @NO} completionHandler:^(BOOL success) {
                
            }];
        } else {
            // Fallback on earlier versions
            [[UIApplication sharedApplication] openURL:alipayURL];
        }
    }
    
    decisionHandler(WKNavigationActionPolicyAllow);
}

2.寫在下面幾個方法中并不能調起支付寶客戶端

- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler;

- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(null_unspecified WKNavigation *)navigation;
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容