2016-05-10 8 views
11

मेरे पास एक साधारण Cordova रैपर ऐप है जो बाहरी वेबपृष्ठ को इंगित करता है, बिना किसी अपने विचार को परिभाषित किए।कॉर्डोवा रैपर ऐप जहां ऐप में आंतरिक लिंक लोड, ब्राउज़र में बाहरी लिंक लोड

मुझे लगता है कि डोमेन से सभी आंतरिक लिंक एप्लिकेशन अंदर लोड करने के लिए, लेकिन सभी बाहरी लिंक (http://twitter.com, आदि) प्रणाली ब्राउज़र में लोड करने के लिए चाहते हैं, तो पृष्ठों पर वापस है/आगे कार्यक्षमता।

विचारों के साथ एक सामान्य ऐप में, मैं डिफ़ॉल्ट ब्राउज़र में लिंक लोड करने के लिए target='_system' सेट कर सकता हूं, या वेब ब्राउज़र दृश्य में स्पष्ट रूप से लिंक खोलने के लिए cordova-plugin-inappbrowser का उपयोग कर सकता हूं। दुर्भाग्यवश इस मामले में मेरे पास सर्वर साइड कोड को संपादित करने की क्षमता नहीं है, इसलिए ऐप के भीतर काम करने वाले समाधान की आवश्यकता है।

यदि मैं config.xml को इस तरह परिभाषित करता हूं, तो आंतरिक और बाहरी दोनों लिंक ऐप में लोड किए जाते हैं।

<content src="http://example.com/" /> 
<access origin="*" /> 
<allow-navigation href="*" /> 

अगर मैं allow-intent साथ config.xml परिभाषित करते हैं, तो भीतरी और बाहरी लिंक प्रणाली ब्राउज़र में खोल रहे हैं।

<content src="http://example.com/" /> 
<access origin="*" /> 
<allow-navigation href="*" /> 
<allow-intent href="http://*/*" /> 
<allow-intent href="https://*/*" /> 

Others कस्टम target_system, हालांकि बाद से मैं नहीं है मेरे अपने विचारों मैं वास्तव में ऐसा नहीं कर सकते ओवरराइड करने के लिए जावास्क्रिप्ट का उपयोग कर suggested है।

यह इस तरह से cordova-plugin-whitelist के लिए allow-intent परिभाषित करने के लिए सभी URL आंतरिक डोमेन नहीं हैं शामिल करने के लिए संभव है?

या मुझे किसी भी तरह shouldStartLoadWithRequestMainViewController में ओवरराइड करने की आवश्यकता होगी और फिर [[UIApplication sharedApplication] openURL:url] पर कॉल करें?

उत्तर

7

ठीक है, Hayyaan से कुछ प्रयोग और सुझावों के बाद, मैं allow-navigation और allow-intent के संयोजन के साथ आया जो मेरे उद्देश्य की सेवा करता था।

<content src="https://example.com/" /> 
<access origin="*" /> 
<allow-navigation href="about:*" /> 
<allow-navigation href="https://example.com/*" /> 
<allow-navigation href="https://*.example.com/*" /> 
<allow-navigation href="https://*.facebook.com/*" /> 
<allow-intent href="http://*/*" /> 
<allow-intent href="https://*/*" /> 

अब वेबसाइट डोमेन के सभी आंतरिक लिंक, एप्लिकेशन में लोड किए गए हैं, जबकि बाहरी लिंक सिस्टम ब्राउज़र में लोड किए गए हैं।

नोट, मैंने फेसबुक पुस्तकालयों को लोड करने की अनुमति देने के लिए <allow-navigation href="https://*.facebook.com/*" /> शामिल किया अन्यथा मुझे एक त्रुटि मिली।

ERROR Internal navigation rejected - 
<allow-navigation> not set for url='https://staticxx.facebook.com/connect/xd_arbiter.php? 

और यह भी about:blank के लिए एक त्रुटि से बचने के लिए <allow-navigation href="about:*" /> शामिल थे।

ERROR Internal navigation rejected - <allow-navigation> not set for url='about:blank' 

उम्मीद है कि इस एक ही समस्या :)

+0

कैसे आप इस लक्ष्य को हासिल करते हैं? कुछ abc.example.com बाहरी ब्राउज़र में वेबव्यू भीतर और xyz.example.com नेविगेट किए जाने के साथ किसी और में मदद करता है ! – NitZRobotKoder

संबंधित मुद्दे