2016-08-05 104 views
1

我正在使用iOS 9.3.3並單擊WKWebView中顯示的網站中的WhatsApp鏈接。不支持的URL錯誤在iOS中單擊帶有URL的Whatsapp方案WKWebView

每當我嘗試發送消息到包含http://或https://部分鏈接的URL作爲郵件的一部分的whatsapp url方案時,我會收到「不支持的URL」錯誤。

[self.webView1 loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"whatsapp://send?text=this%20is%20a%20test%20http://https://www.usa-brands.net/collections/new-arrivals/products/dacey-cap-sleeve-drop-waist-wool-sweater-dress"]]]; 

當我拿出http://或https://開頭它的工作原理,但現在我沒有得到一個豐富的預覽(https://www.macstories.net/ios/whatsapp-adds-rich-previews-for-web-links/)。

我試過編碼的網址,但這也不管用。當我刪除所有其他潛在的問題時,它歸結爲url鏈接中的協議。

完整的錯誤信息是:

錯誤域= NSURLErrorDomain代碼= -1002 「不支持URL」 的UserInfo = {_ WKRecoveryAttempterErrorKey =,= NSErrorFailingURLStringKey WhatsApp的://發送文本=檢查%20this%20out%20'達西'%20Cap%20Sleeve%20Drop%20Waist%20Wool%20Sweater%20Dress,%20348.00%20USD:%20https://www.usa-brands.net/products/dacey-cap-sleeve-drop-waist-wool-sweater -dress,NSErrorFailingURLKey = WhatsApp的://發送文本=檢查%20this%20out%20'Dacey'%20Cap%20Sleeve%20Drop%20Waist%20Wool%20Sweater%20Dress,%20348.00%20USD:%20https:// WWW。 usa-brands.net/products/dacey-cap-sleeve-drop-waist-wool-sweater-dress,NSUnderlyingError = 0x137dd1380 {Error Domain = kCFErrorDomainCFNetwork Code = -1002「unsupported URL」UserInfo = {NSErrorFailingURLStringKey = whatsapp:// send ?文本=檢查20%爲%20out%20'Dacey'%20Cap%20Sleeve%20Drop%20Waist%20Wool%20Sweater%20Dress,%20348.00%20USD:%20https://www.usa-brands.net/products/dacey-cap-sleeve-drop -waist-羊毛毛衣裙,NSLocalizedDescription =不支持的URL,NSErrorFailingURLKey = WhatsApp的://發送文本=檢查%20this%20out%20'Dacey'%20Cap%20Sleeve%20Drop%20Waist%20Wool%20Sweater%20Dress,%? 20348.00%20USD:%20https://www.usa-brands.net/products/dacey-cap-sleeve-drop-waist-wool-sweater-dress}},NSLocalizedDescription =不支持的URL}

有沒有人有想法爲什麼這不起作用。它適用於Android。

回答

0

您應該實現WKWebView的WKNavigationDelegate功能:

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler { 
    if (![url.scheme isEqualToString:@"http"] && ![url.scheme isEqualToString:@"https"]) { 
     if ([[UIApplication sharedApplication] canOpenURL:url]) { 
      [[UIApplication sharedApplication] openURL:url]; 
     } else { 
      NSLog(@"Sorry, you haven't install the %@", url.scheme); 
     } 
     decisionHandler(NO); 
    } 
    decisionHandler(YES); 
} 

而且不要忘記在Info.plist添加了WhatsApp的白名單中:

<dict> 
    <key>LSApplicationQueriesSchemes</key> 
    <array> 
     <string>whatsapp</string> 
    </array> 
    ...... 
</dict> 
相關問題