2014-04-15 7 views
5

मैं ट्विटर ऐप में एक विशिष्ट उपयोगकर्ता प्रोफाइल पेज खोलने के लिए अपना फोनगैप एप्लिकेशन लिंक रखने का प्रयास कर रहा हूं। मुझे नहीं पता कि हर किसी के पास उनके डिवाइस पर ट्विटर ऐप इंस्टॉल नहीं है, इसलिए मैं इसे डाउनलोड करने के लिए Play Store पर भेजना चाहता था अगर उन्होंने नहीं किया।फोनगैप के साथ ट्विटर और फेसबुक ऐप कैसे खोलें?

समस्या है कि हर बार मैं अपने Android डिवाइस पर लिंक पर टैप मैं एक त्रुटि प्राप्त है:

//If Android 

var ua = navigator.userAgent.toLowerCase(); 
var isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile"); 

if (isAndroid) { 

    alert('Android!'); 

    twitterCheck = function() { 
     alert('Android!'); 
     var now = new Date().valueOf(); 

     setTimeout(function() { 
      if (new Date().valueOf() - now > 100) return; 
      window.open('https://play.google.com/store/apps/details?id=com.twitter.android', '_system', 'location=no'); 
     }, 50); 

    window.open('twitter://user?screen_name=XerxesNoble', '_system', 'location=no'); 
    }; 
}; 

$('.twiterNav').click(function() { 
    window.open('twitter://user?screen_name=xerxesnoble', '_system', 'location=no'); 
}); 

चीज़ें है कि मैं कोशिश की है:

Application Error: 

net::ERR_UNKNOWN_URL_SCHEME(twitter://user?screen_name=xerxesnoble) 

मेरा JavaScript इस प्रकार है

  • का उपयोग twitter:/// बजाय twitter://
  • <access origin="twitter://user?screen_name=xerxesnoble" /> जोड़ना मेरी config.xml

लिए मुझे यकीन है कि और क्या करने की कोशिश करना, कुछ भी फेसबुक के लिए काम कर रहा है या तो लेकिन अभी मैं एक समय में एक मुद्दे पर ध्यान केंद्रित कर रहा हूँ नहीं हूँ।

+0

सरल और सार्वभौमिक तक पहुंच मूल बदलें: Regent

+0

मैंने यह भी किया है । – XerxesNoble

उत्तर

14

समस्या यह है कि InAppBrowser प्लगइन स्थापित नहीं किया गया था। फोनगैप/कॉर्डोवा के नए संस्करण सभी प्लगइन स्थापित नहीं होते हैं- इसके बजाय आप चुनते हैं कि आप अपनी ऐप को किस तक एक्सेस करना चाहते हैं।

टर्मिनल cd yourApp में और $ cordova plugin add org.apache.cordova.inappbrowser

कि करने के बाद, यह पूरी तरह से काम किया।

संपादित

बस कैसे मैं अगर चहचहाना स्थापित किया गया था या नहीं की जाँच करने के लिए अपने .js मिला पर थोड़ा और अधिक शाखा करने के लिए। AppAvailability for iOS and Android

तब मैं अपने .js बदल इस तरह देखने के लिए:

मैं एक प्लग-इन इंस्टॉल

//Twitter checker 

// If Mac// 

var twitterCheck = function(){ 

appAvailability.check('twitter://', function(availability) { 
    // availability is either true or false 
    if(availability) { window.open('twitter://user?screen_name=xerxesnoble', '_system', 'location=no');} 
    else{window.open('https://itunes.apple.com/ca/app/twitter/id333903271?mt=8', '_system', 'location=no'); }; 
}); 
}; 

//If Android 

var ua = navigator.userAgent.toLowerCase(); 
var isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile"); 

if(isAndroid) { 

twitterCheck = function(){  

appAvailability.check('com.twitter.android', function(availability) { 
    // availability is either true or false 
    if(availability) {window.open('twitter://user?screen_name=xerxesnoble', '_system', 'location=no');} 
    else{window.open('https://play.google.com/store/apps/details?id=com.twitter.android', '_system', 'location=no');}; 
}); 
}; 
}; 

AppAvailability प्लगइन में उपलब्ध कराए गए दस्तावेज़ बहुत मददगार के रूप में अच्छी तरह से>

आशा थी यह किसी की मदद करता है!

+0

क्या आप फेसबुक ऐप में फेसबुक पेज खोलने में सक्षम हो सकते हैं? – Priyanka

4

बस दूसरों के लिए एक संदर्भ जो यहाँ आते हैं और चाहते हो सकता है थोड़ा अधिक:

मैं यह अच्छी तरह से दोनों iOS और Android पर काम कर (अभी तक), और गतिशील रूप से ब्राउज़र पर वापस गिरने प्राप्त करने में सक्षम किया गया है नीचे दिए गए कोड का उपयोग कर।

आवश्यक प्लगइन्स cordova-plugin-inappbrowser और cordova-plugin-appavailability

function openBrowser (url) { 
    if (!url) { 
     return; 
    } 

    // turn my url into a scheme/intent url 
    getAvailabilityScheme(url, function (url) { 
     window.open(url, '_system'); 
    }); 
} 

function getAvailabilityScheme (url, callback) { 
    var schemeOrPackage; 
    var schemeUrl; 

    // check for appavaialbility plugin 
    if (!window.appAvailability) { 
     callback(url); 
    } 

    // facebook 
    if (url.indexOf('facebook.com/') !== -1) { 
     schemeOrPackage = isAndroid ? 'com.facebook.katana' : 'fb://' 
     schemeUrl = 'fb://profile/' + url.split('facebook.com/')[1]; 
    } 

    // twitter 
    if (url.indexOf('twitter.com/') !== -1) { 
     schemeOrPackage = isAndroid ? null : 'twitter://' 
     schemeUrl = 'twitter://user?screen_name=' + url.split('twitter.com/')[1]; 
    } 

    if (schemeOrPackage && schemeUrl) { 
     window.appAvailability.check(schemeOrPackage, function() { 
      callback(schemeUrl); 
     }, function() { 
      callback(url); 
     }); 
    } else { 
     callback(url); 
    } 
} 

हैं यह आसान है का उपयोग करना, सिर्फ एक सामान्य वेबसाइट यूआरएल के साथ openBrowser(url) विधि कॉल। मुझे मिला एकमात्र मुद्दा यह था कि एक फेसबुक पेज के लिए, इसे एक आईडी की आवश्यकता होती है जो स्लग नाम

+1

इसके लिए धन्यवाद। बहुत उपयोगी! एंड्रॉइड में ट्विटर के लिए पैकेज नाम 'com.twitter.android' है – Yogster

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