ASP.NET MVC移動M站建設-使用51Degree 移動設備的識別

 

  上一篇,介紹了移動M站的建設。說的很簡單。以爲好像也沒把M站給講清楚。估計是對移動M站 認識還不夠深入吧。這裏,在講一講51Degree 這個組件。javascript

 

  51degrees 號稱是目前最快、最準確的設備檢測的解決方案。它是一個免費開源的.NET移動應用開發組件,能夠用來檢測移動設備和瀏覽器,甚至能夠獲取屏幕尺寸,輸入法,加上製造商和型號信息等。從而能夠選擇性地被重定向到爲移動設備而設計的內容。因爲擁有精確的移動設備的數據,因此幾乎支持全部的智能手機,平板電腦等移動設備。java

  其實說白了,51Degree的做用,就是識別客戶端的設備。PC瀏覽器訪問,就跳轉到PC站,手機瀏覽器訪問就跳轉到M站。從而達到更好的用戶體驗。web

  官網:https://51degrees.com/express

 

  如何將51Degree加入到網站?瀏覽器

  1. 新建一個Web站點,和一個移動M站點。域名分別爲www.fpeach.com 和 m.fpeach.com。 具體過程再也不重複,你們都會。 Demo 下載session

   

  2. 下載並51degree 添加到項目。下載成功後,將FoundationV3 項目添加到解決方案, 而且Weiz.WWW 網站 引用該項目。如上圖所示。app

    下載地址:51degrees_NET_3.2.7.3dom

    

  3. 配置51degreeide

    a. 增長51Degrees.config 文件。注意:<redirect> 節點中的各個參數,和配置,上面都有英文備註,瞭解相關參數的意義和做用吧。網站

<?xml version="1.0"?>
<configuration>
  <!-- These configuration sections tell .NET how to handle the FiftyOne.Foundation.Mobile
  configuration settings further down the web.config file -->
  <configSections>
    <sectionGroup name="fiftyOne">
      <section name="log" type="FiftyOne.Foundation.Mobile.Configuration.LogSection, FiftyOne.Foundation" requirePermission="false" allowDefinition="Everywhere" restartOnExternalChanges="false" allowExeDefinition="MachineToApplication"/>
      <section name="redirect" type="FiftyOne.Foundation.Mobile.Configuration.RedirectSection, FiftyOne.Foundation" requirePermission="false" allowDefinition="Everywhere" restartOnExternalChanges="false" allowExeDefinition="MachineToApplication"/>
      <section name="detection" type="FiftyOne.Foundation.Mobile.Detection.Configuration.DetectionSection, FiftyOne.Foundation" requirePermission="false" allowDefinition="Everywhere" restartOnExternalChanges="false" allowExeDefinition="MachineToApplication"/>
      <section name="imageOptimisation" type="FiftyOne.Foundation.Mobile.Configuration.ImageOptimisationSection, FiftyOne.Foundation" requirePermission="false" allowDefinition="Everywhere" restartOnExternalChanges="false" allowExeDefinition="MachineToApplication"/>
    </sectionGroup>
  </configSections>
  <fiftyOne>

    <!--<redirect> element controls how requests from mobile devices are handled.
    mobileHomePageUrl   Previously mobileRedirectUrl under the mobile/toolkit element.
                        A url to direct mobile devices to instead of the normal web sites 
                        landing page. (Optional)
    firstRequestOnly    If set to true only the first request received by the web site is
                        redirected to the mobileUrl when the site is accessed from a mobile
                        device. (Optional – defaults to true)
    timeout             The number of minutes of inactivity that should occur before the 
                        requesting device should be treated as making a new request to the
                        web site for the purposes of redirection. If the session is available
                        the session timeout will be used and override this value. (Optional
                        -defaults to 20 minutes)
    devicesFile            A file used to store the details of devices that have previously
                        accessed the web site to determine if they're making a subsequent
                        request. Needed to ensure multiple worker processes have a consistent
                        view of previous activity. (Optional – random behaviour will be 
                        experienced if not specified on web sites with more than one worker
                        processes). In Windows Azure this value becomes the name of devices
                                    cloud table that will be used instead of a file.
    mobilePagesRegex    A regular expression that when applied to the current request Path
                        (context.Request.AppRelativeCurrentExecutionFilePath) or the requesting 
                        Urlwill return true if it should be considered a mobile page. Use 
                        this attribute to tell redirection about mobile pages derived from base
                        classes such as System.Web.UI.Page. Redirection needs to be aware of
                        mobile pages so that requests to these pages can be ignored. Any page
                        that derives from System.Web.UI.MobileControls.MobilePage will 
                        automatically be treated as a mobile page irrespective of this 
                        attribute. (Optional)
    originalUrlAsQueryString
                        If set to true the redirected URL will have the original requesting Url 
                        encoded and included as the origUrl query string parameter in the 
                        redirected Url. This will enable the mobile home page to determine the 
                        original requested resource providing the option to display a mobile
                        friendly version. (Optional – defaults to false)
    locations/location  Provides details of different locations requests can be directed to based
                        on the values of defined properties associated with the device or request.
                        (Optional)
      name              A unique identifier for the location. Used for debugging in the log file.(Mandatory)                  
      url               the URL of the redirect location to use if all the properties in the 
                        collection match. (Mandatory)
      matchExpression   can be used to provide a regular expression which will take the requesting
                        URL as input match segments to be used in place of numeric parameters contained
                        within {} in the url attribute. (Optional)                       
                        The location element contains a collection of criteria that all need to match 
                        for the location to be used. Two attributes must be specified with each entry.
      property          the property of HttpRequest, HttpRequest.Browser or 51Degrees.mobi property to 
                        use when evaluating the matchExpression attribute. (Mandatory)
      matchExpression   a regular expression used to evaluate the value of the property. (Mandatory)                        
                        -->

    <redirect devicesFile="" timeout="0" firstRequestOnly="true"
      originalUrlAsQueryString="true" mobileHomePageUrl="http://m.fpeach.com/"
      mobilePagesRegex="/(Mobile|Tablet)/">
      <locations>
        <clear />
        <location name="noredirect" url="" matchExpression="" enabled="true">
          <add property="Url" matchExpression="[&amp;|\?]noredirect" enabled="true" />
        </location>
        <location name="Mobile" url="http://m.fpeach.com/" matchExpression=""
          enabled="true">
          <add property="IsMobile" matchExpression="True" enabled="true" />
          <add property="IsTablet" matchExpression="True" enabled="true" />
        </location>
        <!--<location name="Tablet" url="~/Tablet/Default.aspx" matchExpression=""
          enabled="true">
          <add property="IsTablet" matchExpression="True" enabled="true" />
        </location>-->
      </locations>
    </redirect>

    <!--<log> element controls where and how much information should be recorded in the log.    
    logFile   The location of the log file in ASP.NET or the name of the log table in
              Windows Azure. (Mandatory)
    logLevel  Values include Debug|Info|Warn|Fatal and control the level of information
              logged. Defaults to Fatal if not specified. (Optional)-->

    <log logFile="~/App_Data/Log.txt" logLevel="Warn"/>

    <!--<detection> element controls where the data files used are provided. If it is not present
    the embedded device data will be used. This is the default behaviour.
    If a Premium/Ultimate Data license key is present in a file with the extension .lic in the bin 
    folder, or provided in the FiftyOne.Foundation.Mobile.Detection.Constants.PremiumLicenceKey 
    constant the binaryFilePath attribute of the detection element must be provided and the worker
    process must have modify access to the file to enable automatic updates to be downloaded.
    
    enabled         Controls whether device detection is enabled. Defaults to true. (Optional)
    autoUpdate      When set to true enables automatic updating of device data when licence keys 
                    are provided. Defaults to true. (Optional)
    binaryFilePath  Path to the binary data file. (Optional - Lite / Mandatory - Premium / Enterprise)
    shareUsage      Set to true to share usage information with 51Degrees.mobi. Read the Usage Data FAQ 
                    to learn more. Defaults to True if not specified. (Optional)
    memoryMode      True if the data set should be loaded into memory. Detection performance will be
                    significantly faster at the expense of a longer startup time and increased memory 
                    usage. Defaults to False if not specified. (Optional)
    bandwidthMonitoringEnabled  When set to true enables bandwidth monitoring. Also requires the data 
                                set specified in the binaryFilePath attribute to support bandwidth
                                monitoring. Defaults to True if not specified. (Optional)
    featureDetectionEnabled     When set to true enables feature detection. Also requires the data set
                                specified in the binaryFilePath attribute to support feature detection.
                                Defaults to True if not specified. (Optional)
    -->

    <!-- IMPORTANT - Ensure this link is uncomment after purchasing Enhanced Device Data. -->
    <detection enabled="true" autoUpdate="true" binaryFilePath="~/App_Data/51Degrees.dat" />

    <!-- <imageOptimisation> elements controls the operation of the image optimiser. If not specified
    the functionality is disabled.
    
    enabled     Controls whether image optimisation is enabled. Defaults to true. Device detection must
                also be enabled for image optimisation. (Optional)
    factor        The request image dimensions of height and width are divided by this value and remainder
                subtracted from the requests height and width. The value can be used to limit the number 
                of images that can be generated and stored in the cache. For example; a value of 50 
                would result in images of width 50, 100, 150, 250, 300, etc pixels being generated. 
                Optional default to 1.
    heightParam    The name used when specifying the height of the image to return.
                Optional defaults to "h"
    maxHeight      The maximum height in pixels the image optimiser is allowed to render. A value of 0
                indicates there is no maximum height. Optional defaults to 0.
    maxWidth      The maximum width in pixels the image optimiser is allowed to render. A value of 0 
                indicates there is no maximum width. Optional defaults to 0.
    widthParam    The name used when specifying the width of the image to return. 
                Optional defaults to "w"
      defaultAuto If an image is requested with a width or height set to "auto", the parameter will be 
                        changed to the value set in ‘defaultAuto’. This is most useful for clients without
                        javascript that should still be served images, such as search crawlers. 
                        Optional, defaults to 50.
    -->
    <imageOptimisation enabled="true" maxWidth="1000" maxHeight="1000"
      widthParam="w" heightParam="h" factor="1" defaultAuto="50"/>

  </fiftyOne>
</configuration>
View Code

 

    b. Web.config 的  <system.webServer>節點下,增長以下配置   

<modules runAllManagedModulesForAllRequests="true">

      <!-- IIS 7.X - Registers 51Degrees Detector Module. Without this call to 51Degrees.core.js won't work.-->

      <remove name="Detector" />

      <add name="Detector" type="FiftyOne.Foundation.Mobile.Detection.DetectorModule, FiftyOne.Foundation" />

   </modules>

     增長完以上配置以後,WWW 站就可經過51degree 識別客戶端的設備。PC瀏覽器訪問,就跳轉到PC站,手機瀏覽器訪問就跳轉到M站。

 

     須要注意的是:若是跳轉的url 是帶參數的,51degree 好像沒有把相應的參數帶過去, 只是跳到了M站的首頁。能夠修改51degree 的源碼  

      

相關文章
相關標籤/搜索