मेरे पास myApp
पर लक्षित एक आईओएस सार्वभौमिक लिंक है। जब मैं किसी अन्य ऐप में उस लिंक पर क्लिक करता हूं, myApp
खुलता है और सही भुगतान सही तरीके से प्रदर्शित करता है, यह काम कर रहा है।wkwebview अभी भी सार्वभौमिक लिंक को संभालने नहीं है
लेकिन myApp
में WKWebView
का उपयोग कर एक अंतर्निहित ब्राउज़र शामिल है। जब मैं अपने अंतर्निर्मित ब्राउज़र के भीतर से एक ही सार्वभौमिक लिंक पर क्लिक करता हूं, तो आईओएस myApp
पर लिंक नहीं भेजता है, यह जाता है और एक वेबपृष्ठ प्राप्त करता है।
Apple docs कहना
आप एक SFSafariViewController, WKWebView, या UIWebView वस्तु का दृष्टांत तो एक सार्वभौमिक लिंक को संभालने के लिए, IOS आपका ऐप्लिकेशन खोलने की सफारी में अपनी वेबसाइट खोलता बजाय। हालांकि, यदि उपयोगकर्ता एक एम्बेडेड SFSafariViewController, WKWebView, या UIWebView ऑब्जेक्ट के भीतर एक सार्वभौमिक लिंक टैप करता है, तो आईओएस आपके ऐप को खोलता है।
मैं इस similar question जहां सुझाव एक WKWebView
प्रतिनिधि परिभाषित करने के लिए था ध्यान दें। मेरे पास WKWebView
दोनों प्रतिनिधि हैं जो myApp
में परिभाषित और उपयोग में हैं, और यह मदद नहीं कर रहा है। यह other question में बहुत सारे अपवॉट हैं लेकिन कोई जवाब नहीं।
मेरा WKWebView
वास्तव में अन्य ऐप्स के सार्वभौमिक लिंक खोल सकता है। यदि मैं myApp
WKWebView
के भीतर से https://open.spotify.com/artist/3hv9jJF3adDNsBSIQDqcjp लिंक पर क्लिक करता हूं तो यह किसी इंटरमीडिएट वेबपृष्ठ को खोलने के बिना स्पॉटिफा ऐप खोलता है (भले ही myApp
में लंबे समय तक प्रेस मेनू "स्पॉटिफ़ाई में खोलें" की पेशकश नहीं करता है)। लेकिन जब मैं myApp
के भीतर से क्लिक करता हूं तो आईओएस myApp
पर सार्वभौमिक लिंक नहीं देगा।
ज्यादा परीक्षण के बाद, मैं पता चलता है कि मैं विशिष्ट URL खोज और प्रदर्शन रद्द करके सार्वभौमिक लिंक के साथ जुड़े एक वेबपेज को दिखाने से रोका जा सकता है:
func webView(webView: WKWebView, decidePolicyForNavigationResponse navigationResponse: WKNavigationResponse, decisionHandler: (WKNavigationResponsePolicy) -> Void) {
if let urlString = navigationResponse.response.URL?.absoluteString {
if urlString.hasPrefix(myULPrefix) { // it's a universal link targetted at myApp
decisionHandler(.Cancel)
return
}
}
decisionHandler(.Allow)
}
मैं फैसले में यह करने के लिए है प्रतिक्रिया के लिए हैंडलर, कार्रवाई के लिए एक नहीं। जब मैं ऐसा करता हूं, तो सार्वभौमिक लिंक myApp
पर डिलीवरी के लिए कतारबद्ध है। लेकिन यह वास्तव में आईओएस द्वारा वितरित नहीं किया जाता है जब तक कि मैं अपना ऐप छोड़ देता हूं (उदाहरण के लिए, होम बटन मारकर) और इसे फिर से लॉन्च करें। appDelegate
समारोह ऊपर
func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {}
संदर्भित एप्पल डॉक्स में इस संदेश को वितरित के रूप में निर्दिष्ट नहीं बुलाया जाता है। यह है जब मैं अधिक पारंपरिक डीप्लिंक करता हूं - myApp
खोलने के लिए सफारी में एक सार्वभौमिक लिंक पर क्लिक करना।
क्या यह एक बग है? या एक सुविधा? या मैं हमेशा के रूप में, गलत पेड़ को भौंकने वाला हूँ?
धन्यवाद!
लगता है जैसे यह एक बग हो सकता है? मैं इसे ऐप्पल के साथ https://bugreport.apple.com –
के माध्यम से बढ़ाने की अनुशंसा करता हूं क्या आपको कोई समाधान मिला है? – AntiMoron
मैं हाल ही में उस परियोजना पर काम नहीं कर रहा हूं, इसलिए मुझे नहीं पता कि कुछ भी बदल गया है या नहीं। हमने इसे होम बटन हिट करने और लिंक प्राप्त करने के लिए ऐप को पुन: दर्ज करने के साथ छोड़ा। यह हमारे उपयोगकर्ताओं के लिए अपेक्षाकृत दुर्लभ है इसलिए अधिक काम करना उपयोगी नहीं था। मैंने व्यक्तिगत रूप से इसे ऐप्पल को एक बग के रूप में सबमिट नहीं किया है। क्षमा करें, मैं अभी और अधिक नहीं कर सकता :-( – emrys57