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


9

मैंने magento1 में मोबाइल का पता लगाने के लिए कोड का उपयोग किया है।

$isMobile = Zend_Http_UserAgent_Mobile::match(
    Mage::helper('core/http')->getHttpUserAgent(),
    $_SERVER
);

मुझे यकीन नहीं है कि अगर Magento2 के लिए भी कुछ उपलब्ध है। किसी ने कुछ इस तरह से magento2 में इस्तेमाल किया है?


ग्राहक उपकरणों का पता लगाने के लिए, हमारे पास यहाँ एक एक्सटेंशन है github.com/EaDesgin/magento2-mobiledetect
कृष्ण इज्जादा

मुझे बताएं कि क्या आपके पास कोई मुद्दा है?
विश्वास सोनी

आपको सही समाधान खोजने के लिए अन्य डेवलपर्स की मदद करने के लिए उत्तर देने या अपने प्रश्नों को पूछने की मंजूरी देनी चाहिए।
विश्वास सोनी

@VishwasSoni मैंने आपको इसका हल देने की कोशिश की है, मुझे खाली पृष्ठ दें। बिना किसी त्रुटि के। इसलिए मैंने अभी तक स्वीकार नहीं किया है।
कुल

@ कूल ने इस मुद्दे पर बहस की और आपको मिली त्रुटियों के साथ वापस आ गए। एक समुदाय आपकी मदद करेगा।
विश्वास सोनी

जवाबों:


8

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

//Identifying if user is on mobile browser or not
if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|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',$_SERVER['HTTP_USER_AGENT'])||preg_match('/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',substr($_SERVER['HTTP_USER_AGENT'],0,4))) {
    $browserStatus = 'Mobile';
}

मैंने कई वेबसाइटों और सही काम करने में इसका उपयोग किया है।


मेरे लिए भी काम किया!
कुल 10

7

आप Magento2 में उसी वर्ग का उपयोग कर सकते हैं।

protected $httpHeader;

protected $mobileAgent;

public function __construct(
   ...
    \Magento\Framework\HTTP\Header $httpHeader,
    \Zend_Http_UserAgent_Mobile $mobileAgent
   ...
) {
    $this->httpHeader = $httpHeader;
    $this->mobileAgent = $mobileAgent
}

public function isMobile(){
  $userAgent = $this->httpHeader->getHttpUserAgent();

  return $this->mobileAgent->match($userAgent, $_SERVER); //the code which you want.
}

अपवाद # 0 प्राप्त करना (अपवाद): सूचना: अनिर्धारित सूचकांक: http_user_agent in /var/www/Magento2/vendor/magento/zendframework1/library/Zend/Http/UserAgent/Features/Adapter/Browscap.php लाइन 69 अपवाद पर ... कृपया मेरी मदद करें
बीके

1
@ संक्रांति आपको DI इंजेक्शन के बाद अपना प्लगइन बनाना पड़ सकता हैphp bin\magento setup:di:compile
सुमित कुमार

@ सुमितकुमार ने कमान संभाली लेकिन कोई फायदा नहीं हुआ
बीके

ऐसा लगता है कि आपका ब्राउज़र http_user_agent सेट नहीं है। अगर इस तरह की स्थिति का उपयोग करने की कोशिश करें: stackoverflow.com/questions/14130830/…
विश्वास सोनी

मुझे भी वही त्रुटि मिल रही है - अनिर्धारित सूचकांक: http_user_agent in /var/www/Magento2/vendor/magento/zendframework1/library/Zend/Http/UserAgent/Features/Browscap.php/ रेखा 69 अपवाद पर
नरेंद्र व्यास

2

आप नीचे दिए गए कोड का उपयोग कर सकते हैं

   protected $httpHeader;

   public function __construct(
    \Magento\Framework\Model\Context $context,
    \Magento\Framework\HTTP\Header $httpHeader,
    )
    {
         $this->httpHeader = $httpHeader;
         parent::__construct($context);
    }
    public function execute(){
      $userAgent = $this->httpHeader->getHttpUserAgent();
    }

2

आप इस लाइब्रेरी का उपयोग मोबाइल डिटेक्ट के लिए करते हैं

संपर्क

कस्टम मॉड्यूल बनाएं और मॉड्यूल में लाइब्रेरी जोड़ें और सहायक बनाएं और इस फ़ंक्शन को वैश्विक उपयोग के लिए रखें।

  public function isMobile() 
  {
     return $this->mobileDetector->isMobile() || $this->mobileDetector->isTablet();
  } 

लायब्रेरी इंजेक्ट करने के लिए अपने कंस्ट्रक्टर में MobileDetector जोड़ें।


2

आपको केवल एक वर्ग "\ Magento \ Framework \ HTTP \ Header" इंजेक्ट करने की आवश्यकता है, क्योंकि "\ Zend_Http_UserAgent_Mobile :: मिलान" एक स्थिर विधि है, इसलिए यह काम करेगा:

/**
 * @var \Magento\Framework\HTTP\Header
 */
protected $httpHeader;

/**
 * @param \Magento\Framework\HTTP\Header $httpHeader
 */
public function __construct(
    \Magento\Framework\HTTP\Header $httpHeader
) {
    $this->httpHeader = $httpHeader;
}

/**
 * @return bool
 */
public function isMobile()
{
    $userAgent = $this->httpHeader->getHttpUserAgent();
    return \Zend_Http_UserAgent_Mobile::match($userAgent, $_SERVER);
}

1

मैं Magento 2.3.2 चला रहा हूं

मैंने पाया कि सबसे आसान तरीका "Mobile_Detect.php" को "magento_path / lib / आंतरिक" फ़ोल्डर में जोड़ना है। फिर इसे निम्नलिखित का उपयोग करके मेरे .phtml टेम्पलेट फ़ाइल में कॉल करें:

<?php 
include(BP.'/lib/internal/Mobile_Detect.php');
$detect = new Mobile_Detect();
if( $detect->isMobile() && !$detect->isTablet() ){
    echo "Is Mobile";
} else{
    echo "Is Desktop";
}
?>

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.