আইওএস / অ্যান্ড্রয়েড অপারেটিং সিস্টেম সনাক্ত করা হচ্ছে


183

আমি কিছু গবেষণা করেছি, এবং এই প্রশ্নটি উঠে এসেছিল, তবে আমার ইচ্ছা মতো নয়। আমি একটি ক্লায়েন্টের জন্য একটি পৃষ্ঠা তৈরি করছি যা একটি QR কোড অবতরণ, যা একটি অ্যাপ্লিকেশন ডাউনলোড করার জায়গা। সুতরাং তাকে কোনও পৃষ্ঠায় 2 টি কিউআর কোড মুদ্রণ করতে হবে না, আমি বর্তমান অপারেটিং সিস্টেমটি সনাক্ত করতে চাই (অ্যাপল / অ্যান্ড্রয়েড / অন্যান্য [সমর্থিত নয়]) এবং সেই মানটির ভিত্তিতে আমার উপাদানগুলি সংশোধন করতে চাই।

আমি "ডিটেক্টমোবাইলব্রাউজারগুলি" স্ক্রিপ্টটি দেখেছি এবং এটি কেবল ব্যবহারকারী মোটেও মোবাইল কিনা তা জানার লক্ষ্যেই হয়েছে, তবে ব্যবহারকারী কোন অপারেটিং সিস্টেমটি চালাচ্ছেন তা খুঁজে বের করতে এবং সেরা অ্যাপ্লিকেশন সংস্করণটির পরামর্শ দিতে চাই।

এই প্রশ্নের অনুরূপ অন্যান্য উত্তর আমার কাছে পুরানো বা অবিশ্বাস্য বলে মনে হয়েছে (অ্যান্ড্রয়েড ট্যাবলেট ব্রাউজারগুলির কোনও সনাক্তকরণ নেই), তাই আমি নতুন কিছুর সন্ধানে যাচ্ছি। আমি কীভাবে এটি অর্জন করতে পারি? (অগ্রণীত jQuery ব্যবহার করে - জাভাস্ক্রিপ্ট - এই ক্রমে পিএইচপি)।


2
ব্যবহারকারী এজেন্ট আপনাকে কী জানার দরকার তা আপনাকে জানায় না?
বাবাক নাফাস

2
: এই সমস্যা ইতিমধ্যে এখানে সমাধান করা হয়েছে stackoverflow.com/questions/3514784/...
gretro

1
@gretro, যে বর্ণনা যদি ব্যবহারকারী মোবাইল, না অপারেটিং সিস্টেম তারা চলমান হয়। বাবাক, নেভিগেটর.প্ল্যাটফর্মের মতো কিছু সমাধান হবে? আমি ব্যবহারকারী এজেন্টদের সাথে অপরিচিত। আমি এটি কীভাবে নিশ্চিত করতে পারি যে এটি সংস্করণ নির্বিশেষে সমস্ত অ্যান্ড্রয়েড ডিভাইসের জন্য কাজ করবে?
আলেকজান্ডার লোজাদা

সেখানে যেহেতু ইউজার এজেন্ট, এটা সনাক্ত করতে এর কোন নিশ্চয়তা নেই উপায় হল একমাত্র জিনিস আপনি যেতে পারেন। আরও তথ্যের জন্য এখানে চেক করুন ... whatsmyos.com
মনিকা সেলিও

2
@ আলেকজান্দার লোজাদা: গৃহীত উত্তরে তারা মূলত এটি পরীক্ষা করে থাকেন যে এটি আইফোন, আইপড, একটি অ্যান্ড্রয়েড ডিভাইস বা যা সত্য বলে প্রত্যাবর্তন করতে পারে if উদাহরণস্বরূপ আপনি যা চান if( /Android/i.test(navigator.userAgent) ) { // some code.. }কেবল তা কেবল অ্যান্ড্রয়েড ব্যবহারকারী-এজেন্টদের জন্য সত্য হয়ে উঠবে keep
গ্রেট্রো

উত্তর:


387

আপনি ব্যবহারকারী এজেন্ট স্ট্রিং পরীক্ষা করতে পারেন:

/**
 * 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
অসাধারণ. ক্রোমের মোবাইল মোড ব্যবহার করে আপনি এটি ডেস্কটপ ব্রাউজারগুলিতে পরীক্ষা করতে পারেন।
দাফুঙ্কিএলেক্স

4
@ ফিফিলা মাঝে মাঝে বৈশিষ্ট্যটি অ্যাপস ইনস্টল করতে সক্ষম হবার মতো কিছু যা সনাক্ত করা সম্ভব নয়।
ড্যানিয়েল লুবারভ

2
উইন্ডোজ ফোন সনাক্ত করতে গেলে আমি অ্যান্ড্রয়েডের else if (userAgent.match(/Windows Phone/i)) { return 'WindowsPhone'; } আগে যোগ করেছি । এখনও অবধি ঠিকঠাক কাজ করছে বলে মনে হচ্ছে।
আর্থার

4
স্ট্যাকওভারফ্লো.com / a / 9039885 / 177710 থেকে : চেকের জন্য iOSআমাদের !window.MSStreamIE11 iOS;-) হিসাবে গণনা করা এড়াতেও যাচাই করতে হবে
অলিভার

12

সমাধান 1: ব্যবহারকারী এজেন্ট স্নিফিং

অ্যান্ড্রয়েড এবং আইফোনের জন্য:

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: মোবাইল জেএস লাইব্রেরি সনাক্ত করে

এটি করতে আপনি মোবাইল ডিটেক্ট জেএস লাইব্রেরিটি ব্যবহার করতে পারেন ।

কনস : এই জাভাস্ক্রিপ্ট-ভিত্তিক ডিভাইস সনাক্তকরণ বৈশিষ্ট্যগুলি কেবলমাত্র আইফোন, অ্যান্ড্রয়েড এবং পাম ওয়েবস ডিভাইসগুলির মতো স্মার্টফোনের নতুন প্রজন্মের জন্য কাজ করতে পারে। এই ডিভাইস সনাক্তকরণ বৈশিষ্ট্যগুলি পুরানো স্মার্টফোনগুলির জন্য কাজ করতে পারে না যা জাভাস্ক্রিপ্টের জন্য পুরানো ব্ল্যাকবেরি, পামমোস এবং উইন্ডোজ মোবাইল ডিভাইসগুলি সহ কম সমর্থন করে।


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 এ কোনও মোবাইল ডিভাইস সনাক্ত করার সেরা উপায় কী?

গৃহীত উত্তরে, তারা মূলত এটি যদি আইফোন, একটি আইপড, একটি অ্যান্ড্রয়েড ডিভাইস বা সত্য ফিরে আসে তবে যাচাই করে না। উদাহরণস্বরূপ আপনি যা চান if( /Android/i.test(navigator.userAgent) ) { // some code.. }কেবল তা কেবল অ্যান্ড্রয়েড ব্যবহারকারী-এজেন্টদের জন্য সত্য হয়ে উঠবে keep

তবে, ব্যবহারকারী-এজেন্টরা সত্যই নির্ভরযোগ্য নয় যেহেতু তাদের পরিবর্তন করা যেতে পারে। সর্বোত্তম জিনিসটি এখনও সমস্ত মোবাইল প্ল্যাটফর্মের জন্য সর্বজনীন কিছু বিকাশ করতে পারে।


এটি যদি ভিনিলা জেএস থেকে আলাদা থাকে তবে এটি jQuery এ থাকে। এটি সি
অ্যালেক্স জোন

2

আপনি পিএইচপি তে ব্যবহারকারী এজেন্টের সাথে এটি অর্জন করতে পারেন:

$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

আপনি যদি আপনার ওয়েবসাইটের জন্য প্রতিক্রিয়া জেএস ব্যবহার করছেন তবে https://www.npmjs.com/package/react-device-detect ব্যবহার করুন


3
নোট করুন যে কেবল আইওএস বনাম অ্যান্ড্রয়েড যাচাই করার জন্য এটি ভারী আমদানির কিছুটা (k 23 কেবি)।
জেসপিনহো

@ জেসিপিনহো: সত্য। দুরন্ত দৃষ্টিতে আমি আমার বিল্ড হালকা রাখতে এটি করব না। তবে এটি জিনিসগুলি কাজ করতে সহায়তা করেছিল।
কিরা

1

আপনি ফিরবেস ডায়নামিক লিঙ্কও তৈরি করতে পারেন যা আপনার প্রয়োজন অনুযায়ী কাজ করবে। এটি একাধিক প্ল্যাটফর্ম সমর্থন করে। এই লিঙ্কটি ম্যানুয়ালি পাশাপাশি প্রোগ্রামিংয়ের মাধ্যমে তৈরি করা যেতে পারে। তারপরে আপনি কিউআর কোডে এই লিঙ্কটি এম্বেড করতে পারেন।

যদি লক্ষ্য অ্যাপটি ইনস্টল করা থাকে তবে লিঙ্কটি ব্যবহারকারীকে অ্যাপে পুনর্নির্দেশ করবে। যদি এটি ইনস্টল না করা থাকে তবে এটি প্লে স্টোর / অ্যাপ স্টোর / অন্য কোনও কনফিগার করা ওয়েবসাইটে পুনর্নির্দেশ করবে।



0

কর্ডোভা-ডিভাইস-প্লাগইন ব্যবহার করে, আপনি সনাক্ত করতে পারেন

device.platform

অ্যান্ড্রয়েডের জন্য "অ্যান্ড্রয়েড" এবং উইন্ডোজের জন্য "উইন্ডোজ" হবে। ডিভাইসে এবং ব্রাউজারে অনুকরণ করার সময় কাজ করে। এখানে একটি টোস্ট যা ডিভাইসের মানগুলি প্রদর্শন করবে:

    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);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.