IOS / Android ऑपरेटिंग सिस्टम का पता लगाना


187

मैंने कुछ शोध किया है, और यह प्रश्न सामने आया है, लेकिन जिस तरह से मेरा इरादा है, उसमें नहीं। मैं एक क्लाइंट के लिए एक पेज बना रहा हूं जो एक QR कोड लैंडिंग है, जो एक एप्लिकेशन डाउनलोड करने के लिए एक जगह है। इसलिए उसे एक पृष्ठ पर 2 क्यूआर कोड प्रिंट करने की ज़रूरत नहीं है, मैं वर्तमान ऑपरेटिंग सिस्टम (ऐप्पल / एंड्रॉइड / अन्य [समर्थित नहीं]) का पता लगाना चाहता हूं और उस मूल्य के आधार पर अपने तत्वों को संशोधित कर सकता हूं।

मैंने स्क्रिप्ट "डिटर्मोबाइलब्रोसर्स" पर गौर किया है और इसका उद्देश्य केवल यह बताना है कि उपयोगकर्ता मोबाइल है या नहीं, जबकि मैं यह पता लगाना चाहूंगा कि उपयोगकर्ता कौन सा ऑपरेटिंग सिस्टम चला रहा है और सबसे अच्छा एप्लिकेशन संस्करण सुझाएगा।

इस प्रश्न के समान अन्य उत्तर मुझे या तो पुराने या अविश्वसनीय लगे (Android टैबलेट ब्राउज़र के लिए कोई पता नहीं है), इसलिए मैं कुछ नया खोज रहा हूं। इसे कैसे प्राप्त किया जा सकता है? (अधिमानतः jQuery का उपयोग - जावास्क्रिप्ट - उस क्रम में PHP)।


2
उपयोगकर्ता एजेंट आपको यह नहीं बताता कि आपको क्या जानना चाहिए?
बाबाक नेफस

2
इस समस्या को पहले ही यहाँ हल कर दिया गया है: stackoverflow.com/questions/3514784/…
gretro

1
@gretro, का वर्णन करता है, तो उपयोगकर्ता मोबाइल, नहीं ऑपरेटिंग सिस्टम वे चल रहे हैं है। Babak, navigator.platform की तरह कुछ समाधान होगा? मैं उपयोगकर्ता एजेंटों से अपरिचित हूं। मैं यह कैसे सुनिश्चित कर सकता हूं कि यह संस्करण की परवाह किए बिना सभी Android उपकरणों के लिए काम करेगा?
अलेक्जेंडर लोजादा

इसका पता लगाने का कोई गारंटी तरीका नहीं है, क्योंकि उपयोगकर्ता एजेंट एकमात्र ऐसी चीज है जिस पर आप जा सकते हैं। अधिक जानकारी के लिए यहां देखें ... whatsmyos.com
मोनिका

2
@ अलेक्जेंडर लोज़ाडा: स्वीकार किए गए उत्तर पर, वे मूल रूप से परीक्षण करते हैं कि क्या यह एक आईफोन, एक आईपॉड, एक एंड्रॉइड डिवाइस या जो कुछ भी सच है। उदाहरण के if( /Android/i.test(navigator.userAgent) ) { // some code.. }लिए, केवल उन लोगों को रखें जो केवल Android उपयोगकर्ता-एजेंटों के लिए सही वापस आएंगे।
ग्रेट्रो

जवाबों:


390

आप उपयोगकर्ता एजेंट स्ट्रिंग का परीक्षण कर सकते हैं:

/**
 * Determine the mobile operating system.
 * This function returns one of 'iOS', 'Android', 'Windows Phone', or 'unknown'.
 *
 * @returns {String}
 */
function getMobileOperatingSystem() {
  var userAgent = navigator.userAgent || navigator.vendor || window.opera;

      // Windows Phone must come first because its UA also contains "Android"
    if (/windows phone/i.test(userAgent)) {
        return "Windows Phone";
    }

    if (/android/i.test(userAgent)) {
        return "Android";
    }

    // iOS detection from: http://stackoverflow.com/a/9039885/177710
    if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {
        return "iOS";
    }

    return "unknown";
}

और ओपी इस सूची को देख सकता है कि आपके परीक्षण की आवश्यकता है
जुआन मेंडेस

3
बहुत बढ़िया। Chrome के मोबाइल मोड का उपयोग करके आप डेस्कटॉप ब्राउज़र पर इसका परीक्षण कर सकते हैं।
DaFunkyAlex

4
@feeela कभी-कभी फ़ीचर कुछ ऐसा है जो एप्स को इंस्टॉल करने में सक्षम है, जिसका पता लगाना संभव नहीं है।
डैनियल लुबरोव

2
मैंने एंड्रॉइड else if (userAgent.match(/Windows Phone/i)) { return 'WindowsPhone'; } से पहले जोड़ा है अगर विंडोज फोन का पता लगाने के लिए। अब तक ठीक काम कर रहा है।
आर्थर

4
से stackoverflow.com/a/9039885/177710 : जांच में के लिए iOSहम भी सत्यापित करने की आवश्यकता !window.MSStreamसे बचने के लिए IE11 के रूप में गिना जा रहा है iOS;-)
ओलिवर

12

समाधान 1: उपयोगकर्ता एजेंट सूँघना

Android और iPhone के लिए:

if( /Android|webOS|iPhone|iPad|iPod|Opera Mini/i.test(navigator.userAgent) ) {
 // run your code here
}

यदि आप ब्लैकबेरी और विंडोज फोन सहित सभी मोबाइल उपकरणों का पता लगाना चाहते हैं तो आप इस व्यापक संस्करण का उपयोग कर सकते हैं:

var deviceIsMobile = false; //At the beginning we set this flag as false. If we can detect the device is a mobile device in the next line, then we set it as true.


if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent) 
    || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0,4))) {
   deviceIsMobile = true;
}

if(deviceIsMobile){
    // run your code here
}

विपक्ष : उपयोगकर्ता एजेंट के तार बदल रहे हैं और नए फोन और ब्रांड के रूप में अद्यतन हो रहे हैं। इसलिए यदि आप सभी मोबाइल उपकरणों का समर्थन करना चाहते हैं तो आपको इस सूची को अपडेट रखना होगा।

समाधान 2: मोबाइल जेएस लाइब्रेरी का पता लगाता है

ऐसा करने के लिए आप जेएस लाइब्रेरी का पता लगाने के लिए मोबाइल का उपयोग कर सकते हैं ।

विपक्ष : ये जावास्क्रिप्ट-आधारित डिवाइस का पता लगाने की विशेषताएं केवल नवीनतम पीढ़ी के स्मार्टफोन, जैसे कि iPhone, Android और पाम वेबओएस उपकरणों के लिए काम कर सकती हैं। ये डिवाइस डिटेक्शन फीचर्स पुराने स्मार्टफोन के लिए काम नहीं कर सकते हैं जिनमें पुराने ब्लैकबेरी, पामओएस और विंडोज मोबाइल उपकरणों सहित जावास्क्रिप्ट के लिए खराब समर्थन था।


4

ऑपरेटिंग सिस्टम प्राप्त करने के लिए कोई भी नेविगेटर का उपयोग कर सकता है, जिस पर ब्राउज़र स्थापित है।

function getPlatform() {
   var platform = ["Win32", "Android", "iOS"];

   for (var i = 0; i < platform.length; i++) {

       if (navigator.platform.indexOf(platform[i]) >- 1) {

           return platform[i];
       }
   }
}

getPlatform();

13
एक सैमसंग गैलेक्सी ग्रांड प्रधानमंत्री अब मैं परीक्षण कर रहा हूँ पर, navigator.platform रिटर्न '' लिनक्स armv7l ''
माइको

3

इस समस्या को पहले ही हल कर दिया गया है: jQuery में मोबाइल डिवाइस का पता लगाने का सबसे अच्छा तरीका क्या है?

स्वीकृत उत्तर पर, वे मूल रूप से परीक्षण करते हैं यदि यह एक iPhone, एक iPod, एक एंड्रॉइड डिवाइस या जो भी सच है लौटना है। केवल उन लोगों को रखें जिन्हें आप उदाहरण के लिए चाहते हैंif( /Android/i.test(navigator.userAgent) ) { // some code.. } लिए, केवल केवल Android उपयोगकर्ता-एजेंटों के लिए सही वापस आएंगे।

हालांकि, उपयोगकर्ता-एजेंट वास्तव में विश्वसनीय नहीं हैं क्योंकि उन्हें बदला जा सकता है। सबसे अच्छी बात अभी भी सभी मोबाइल प्लेटफार्मों के लिए कुछ सार्वभौमिक विकसित करना है।


यदि यह jQuery की तुलना में है तो यह वैनिला जेएस से अलग है। यह सी। में भी हो सकता है
एलेक्स जौन

2

आप इसे उपयोगकर्ता एजेंट के साथ php पर भी प्राप्त कर सकते हैं:

$userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);

if(stripos($userAgent,'android') !== false) { // && stripos($userAgent,'mobile') !== false) {
  header('Location: http://oursite.com/download/yourApp.apk');

exit();

}


2

यदि आप अपनी वेबसाइट के लिए React Js का उपयोग कर रहे हैं, तो https://www.npmjs.com/package/react-device-detect का उपयोग करें


4
ध्यान दें कि यह केवल iOS बनाम Android की जाँच के लिए एक भारी आयात (~ 23kb) का एक सा है।
जेसपिन्हो

@ जस्सेपिन्हो: सच। मैं अपने निर्माण को बनाए रखने के लिए ऐसा नहीं कर सकता। लेकिन इसने काम करने में मदद की।
किरा

1

आप Firbase डायनामिक लिंक भी बना सकते हैं जो आपकी आवश्यकता के अनुसार काम करेगा। यह कई प्लेटफार्मों का समर्थन करता है। यह लिंक मैन्युअल रूप से और साथ ही प्रोग्रामिंग के माध्यम से बनाया जा सकता है। फिर आप इस लिंक को QR कोड में एम्बेड कर सकते हैं।

यदि लक्ष्य एप्लिकेशन इंस्टॉल किया गया है, तो लिंक उपयोगकर्ता को ऐप पर पुनर्निर्देशित करेगा। यदि इसकी स्थापना नहीं हुई है तो यह Play Store / App store / किसी अन्य कॉन्फ़िगर की गई वेबसाइट पर पुनर्निर्देशित हो जाएगा।



0

कॉर्डोवा-डिवाइस-प्लगइन का उपयोग करके, आप पता लगा सकते हैं

device.platform

Android के लिए "Android" होगा, और विंडोज़ के लिए "विंडोज़" होगा। डिवाइस पर काम करता है, और जब ब्राउज़र पर अनुकरण करता है। यहाँ एक टोस्ट है जो उपकरण मान प्रदर्शित करेगा:

    window.plugins.toast.showLongTop(
    'Cordova:     ' + device.cordova + '\n' +
    'Model:       ' + device.model + '\n' +
    'Platform:    ' + device.platform + '\n' +
    'UUID:        ' + '\n' +
                      device.uuid + '\n' +
    'Version:     ' + device.version + '\n' +
    'Manufacturer ' + device.manufacturer + '\n' +
    'isVirtual    ' + device.isVirtual + '\n' +
    'Serial       ' + device.serial);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.