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;