精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Windows Phone開發(fā)(43):推送通知第一集之Toast推送

移動開發(fā)
推送通知有三種:Toast通知,磁帖通知和自定義通知。前面兩種都是死的,都是被硬性規(guī)定的,你不要問為什么,記住就行了。而第三種即Raw通知,這種通知方式比較靈活,你可以自定義其格式和內(nèi)容。今天,我們來了解第一種通知——Toast。

好像有好幾天沒更新了,抱歉抱歉,最近“光榮”地失業(yè),先是忙于尋找新去處,唉,暫時沒有下文。而后又有一些瑣事要辦,不過不要緊,今天咱們繼續(xù)。

動畫的內(nèi)容就告一段落,本系列文章只作簡單引導(dǎo),不會覆蓋每一個細(xì)節(jié),最終能不能學(xué)好,就完全看各位自己了。

從本節(jié)開始,我們將討論推送通知,這個東西不太好理解,而推送通知的原理和過程,如果你看MSDN的示意圖,相信你會有點(diǎn)暈,若不,我帖出給你看看。

算了,不帖,不知怎么回事,上傳不了圖片。

現(xiàn)補(bǔ)上圖片。

那么,我就說一個故事吧,希望能幫助你理解何為推送通知。

上大學(xué)的時候,我很喜歡到圖書館借書,然后,晚上在宿舍里看,一直看到累了就睡覺。有一回,我發(fā)現(xiàn)一本好書叫《中國式商道》,結(jié)果呢,去圖書館沒找著,但是查一下是有的,我很看這本書,就去問管理員,管理員說可能被別人借了。

這時候我心里想:那就每天來看一下有沒有在書架上,有再借。

管理員似乎猜到了我的心思,他說:“這位同學(xué),你可以留下借書證號和聯(lián)系方式,如果你真想看那本書,一旦有人來還書了,我馬上通知你,你不必天天來找。”

我連忙說謝謝。

比如,我開好了應(yīng)用程序A,用戶B的手機(jī)正在使用我的應(yīng)用程序,但有時候我會發(fā)一些通知給用戶B手機(jī),例如,增加新功能或修復(fù)某些Bug,或者有公益活邀請用戶參加等。但是,用戶B上的應(yīng)用程序如何才知道有新消息呢?

按照傳統(tǒng)的做法,在應(yīng)用程序中做一個定時“炸彈”,每隔一段時間通過網(wǎng)絡(luò)訪問一下我的服務(wù)器,檢索一下有沒有新消息,然后把結(jié)果返回給客戶端應(yīng)用程序。你想想,這樣做的缺點(diǎn)是什么?

經(jīng)常訪問網(wǎng)絡(luò),增加網(wǎng)絡(luò)流量,也會消耗一定的電量和資源,如果我用GPRS上網(wǎng),那就倒霉了。

但是,如果我的客戶端從來不需要主動訪問網(wǎng)絡(luò)呢,我也不必在應(yīng)用程序中放置計時器,程序無須訪問網(wǎng)絡(luò),我的新消息不是發(fā)送到用戶手機(jī),而是發(fā)送到微 軟的云服務(wù)器,然后由云服務(wù)器把消息推送到用戶手機(jī)。這樣就好比前面的例子,我不用天天跑去圖書館找書,只要有那本書,圖書館管理員就把電話找我。你說, 這樣是不是既省心也省力了?

推送通知有三種:Toast通知,磁帖通知和自定義通知。前面兩種都是死的,都是被硬性規(guī)定的,你不要問為什么,記住就行了。而第三種即Raw通知,這種通知方式比較靈活,你可以自定義其格式和內(nèi)容。

今天,我們來了解第一種通知——Toast。

這是什么呢?

本想截個圖的,但不知道啥事,就是上傳不了,沒反應(yīng),CSDN的博客經(jīng)常出問題。那沒辦法了,我用文字描述一下吧,Toast通知就是在應(yīng)用程序沒有在前臺運(yùn)行時,如果收到Toast通知,會在屏幕最上方顯示一條提示信息,就和我們收到短信時一樣。

微軟的云服務(wù)器會為我們的手機(jī)分配一個URL,就在侈的應(yīng)用程序注冊推送通道后更新的,云服務(wù)器就是利用這個URL來找到你的手機(jī)并把通知發(fā)到手機(jī) 上,就像前面例子中,我 留下借書證編號和電話號碼,到時候,管理員可以通過手機(jī)號碼來聯(lián)系我。實(shí)際開發(fā)在,你可以通過各種方式把這個URL傳到你的服務(wù)器上保存,因?yàn)榘l(fā)送推送通 知是需要這個URL的。

一般來說,如果你建有自己的服務(wù)器,就應(yīng)該會有一個固定的IP地址或域名,你不妨通過HTTP方式把用戶手機(jī)的URL發(fā)送到你的服務(wù)器保存。

那么,如何發(fā)送推送通知呢?不要被嚇倒,其實(shí)很簡單,就是平常我們熟悉的POST方式提交一個HTTP請求罷了,而提交的URL就是從云服務(wù)器中得到的URL。而POST的內(nèi)容就是一個XML文檔。Toast推送通知的格式如下:

  1. <?xml version="1.0" encoding="utf-8" ?>   
  2. <wp:Notification xmlns:wp="WPNotification">   
  3.   <wp:Toast>   
  4.     <wp:Text1>文本一</wp:Text1>   
  5.     <wp:Text2>文本二</wp:Text2>   
  6.     <wp:Param>參數(shù)</wp:Param>   
  7.   </wp:Toast>   
  8. </wp:Notification>  

這是固定的格式,不要問我為什么,它就是死的。“文本一”指的是顯示Toast提示的標(biāo)題,“本文二”自然就是正文了,文字盡量簡單,最好幾個字搞定。

而“參數(shù)”呢?它其它是一個URI,這個URI就是當(dāng)用戶點(diǎn)擊了Toast消息后啟動應(yīng)用程序時導(dǎo)航到的頁面,這個與前面我們說到的“次要磁帖”是一樣的。舉幾個例子吧。

/MainPage.xaml

/MainPage.xa/Mml?v=12345

/MainPage.xaml?value1=123&amp;value2=abcd

最后一條其實(shí)就是value1=123&value2=abc,別忘了是XML文檔,字符&是要轉(zhuǎn)義的,記得前面有人提問,在導(dǎo)航 那一節(jié)中,在XAML中設(shè)置導(dǎo)航頁面/myPage.xaml?t1=aaaa&t2=bbbb,時會報錯,要知道XAML其實(shí)就是XML擴(kuò)展而 來的,特殊字符記住要轉(zhuǎn)義。

例如,我要發(fā)一條Toast通知,標(biāo)題為“你好”,內(nèi)容為“想請你吃飯”,參數(shù)為“/MainPage.xmal”,那么,我們POST的XML文檔應(yīng)當(dāng)為:

  1. <?xml version="1.0" encoding="utf-8" ?>   
  2. <wp:Notification xmlns:wp="WPNotification">   
  3.   <wp:Toast>   
  4.     <wp:Text1>你好</wp:Text1>   
  5.     <wp:Text2>想請你吃飯</wp:Text2>   
  6.     <wp:Param>/MainPage.xaml</wp:Param>   
  7.   </wp:Toast>   
  8. </wp:Notification>   

知道這一點(diǎn)就好辦了,下面我們來做一個發(fā)送Toast消息的服務(wù)器端。

1、任你喜歡用哪個版本的VS,新建一個Windows應(yīng)用程序,很熟悉了吧,就是WinForm。

2、接著是界面,暈了,上傳不了圖片。這樣吧,你隨便扔幾個TextBox上去,分別用來填RUI,第一個值,第二個值,參數(shù),響應(yīng)消息。總共5個,最后一個用來顯示發(fā)送結(jié)果,內(nèi)容較多,建議用多行。再放一個按鈕,觸發(fā)它的Click事件,點(diǎn)擊后立即發(fā)送。

好,我直接把所有代碼帖上,這東西不好講解,但相信你如果基礎(chǔ)學(xué)得好,肯定看得懂。

  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.ComponentModel;   
  4. using System.Data;   
  5. using System.Drawing;   
  6. using System.Linq;   
  7. using System.Text;   
  8. using System.Windows.Forms;   
  9. using System.Net;   
  10. using System.IO;   
  11. namespace SendToast   
  12. {   
  13.     public partial class Form1 : Form   
  14.     {   
  15.         public Form1()   
  16.         {   
  17.             InitializeComponent();   
  18.         }   
  19.         private void btnSend_Click(object sender, EventArgs e)   
  20.         {   
  21.             HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(txtUrl.Text);   
  22.             myRequest.ContentType = "text/xml";   
  23.             myRequest.Headers.Add("X-WindowsPhone-Target""toast");   
  24.             /*  
  25.              *   X-NotificationClass 處理間隔  
  26.              *   2 - 立即發(fā)送  
  27.              *   12 - 450秒內(nèi)發(fā)送  
  28.              *   22 - 900秒內(nèi)發(fā)送  
  29.              */   
  30.             myRequest.Headers.Add("X-NotificationClass""2");   
  31.             // 要發(fā)送的內(nèi)容   
  32.             string toastMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +   
  33.             "<wp:Notification xmlns:wp=\"WPNotification\">" +   
  34.                 "<wp:Toast>" +   
  35.                     "<wp:Text1>" + txtValue1.Text + "</wp:Text1>" +   
  36.                     "<wp:Text2>" + txtValue2.Text + "</wp:Text2>" +   
  37.                     "<wp:Param>" + txtParam.Text + "</wp:Param>" +   
  38.                 "</wp:Toast>" +   
  39.             "</wp:Notification>";   
  40.             byte[] buffer = Encoding.UTF8.GetBytes(toastMessage);   
  41.             myRequest.ContentLength = buffer.Length;   
  42.             myRequest.Method = "POST";   
  43.             using (Stream stream = myRequest.GetRequestStream())   
  44.             {   
  45.                 stream.Write(buffer, 0, buffer.Length);   
  46.             }   
  47.             // 接收回應(yīng)   
  48.             HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();   
  49.             string headers= "";   
  50.             foreach (var hd in myResponse.Headers.AllKeys)   
  51.             {   
  52.                 headers += hd + " : " + myResponse.Headers[hd] + " | ";   
  53.             }   
  54.             headers += "\r\n";   
  55.             string msg = "";   
  56.             using (Stream recStream = myResponse.GetResponseStream())   
  57.             {   
  58.                 StreamReader reader = new StreamReader(recStream, Encoding.UTF8);   
  59.                 msg = reader.ReadToEnd();   
  60.                 reader.Close();   
  61.             }   
  62.             msg += "\r\n\r\n";   
  63.             txtResult.AppendText(headers + msg);   
  64.         }   
  65.     }   
  66. }   

接下來,到WP客戶端,同樣隨便你用什么版本的VS,新建一個Silverlight for Windows Phone應(yīng)用程序,有些人腦子比較敏感,看到Silverlight字樣不知發(fā)生什么事。其實(shí),只是了解它的人不多而已,Silverlight其實(shí)有 很多優(yōu)點(diǎn)的,慢慢體會吧,用客觀公正的視角去體會吧。

界面布局就好辦了,我直接上XAML,如果你看不懂,回去復(fù)習(xí)WPF。

  1. <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">   
  2.     <TextBlock Name="txtInfo" TextWrapping="Wrap"/>   
  3. </Grid>   

后臺代碼也照帖了。

  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.Linq;   
  4. using System.Net;   
  5. using System.Windows;   
  6. using System.Windows.Controls;   
  7. using System.Windows.Documents;   
  8. using System.Windows.Input;   
  9. using System.Windows.Media;   
  10. using System.Windows.Media.Animation;   
  11. using System.Windows.Shapes;   
  12. using Microsoft.Phone.Controls;   
  13. using Microsoft.Phone.Notification;   
  14. namespace WPApp   
  15. {   
  16.     public partial class MainPage : PhoneApplicationPage   
  17.     {   
  18.         // 構(gòu)造函數(shù)   
  19.         public MainPage()   
  20.         {   
  21.             HttpNotificationChannel myChannel = null;   
  22.             // 推送信道的名字,隨便取一個就行了   
  23.             string ChannelName = "ToastChannel";   
  24.             InitializeComponent();   
  25.             // Find靜態(tài)方法可以根據(jù)名字查找信道   
  26.             myChannel = HttpNotificationChannel.Find(ChannelName);   
  27.             // 如果找不到,就要創(chuàng)建一個了   
  28.             if (myChannel == null)   
  29.             {   
  30.                 myChannel = new HttpNotificationChannel(ChannelName);   
  31.                 // 注冊事件   
  32.                 myChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(myChannel_ChannelUriUpdated);   
  33.                 myChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(myChannel_ErrorOccurred);   
  34.                 myChannel.ShellToastNotificationReceived += new EventHandler<NotificationEventArgs>(myChannel_ShellToastNotificationReceived);   
  35.                 // 打開信道   
  36.                 myChannel.Open();   
  37.                 // 綁定Toast通知,這樣在程序不在前臺時才會顯示   
  38.                 // 屏幕上方的通知提示條   
  39.                 myChannel.BindToShellToast();   
  40.             }   
  41.             else   
  42.             {   
  43.                 // 如果存在,還要注冊一次事件,因?yàn)樵诔绦虮蝗拥胶笈_后可能會刪除事件綁定   
  44.                 myChannel.ChannelUriUpdated+=new EventHandler<NotificationChannelUriEventArgs>(myChannel_ChannelUriUpdated);   
  45.                 myChannel.ErrorOccurred+=new EventHandler<NotificationChannelErrorEventArgs>(myChannel_ErrorOccurred);   
  46.                 myChannel.ShellToastNotificationReceived+=new EventHandler<NotificationEventArgs>(myChannel_ShellToastNotificationReceived);   
  47.                    
  48.                 // 在“輸出”窗輸出URL,因?yàn)槲覀冎皇菧y試,這樣一來方便一點(diǎn)   
  49.                 System.Diagnostics.Debug.WriteLine("通道URI為:{0}", myChannel.ChannelUri.ToString());   
  50.             }   
  51.         }   
  52.         void myChannel_ShellToastNotificationReceived(object sender, NotificationEventArgs e)   
  53.         {   
  54.             string msg = "";   
  55.             foreach (string key in e.Collection.Keys)   
  56.             {   
  57.                 msg += key + " : " + e.Collection[key] + "\r\n";   
  58.             }   
  59.             Dispatcher.BeginInvoke(() =>   
  60.                 {   
  61.                     this.txtInfo.Text = msg;   
  62.                 });   
  63.         }   
  64.         void myChannel_ErrorOccurred(object sender, NotificationChannelErrorEventArgs e)   
  65.         {   
  66.             Dispatcher.BeginInvoke(() => MessageBox.Show(e.Message));   
  67.         }   
  68.         void myChannel_ChannelUriUpdated(object sender, NotificationChannelUriEventArgs e)   
  69.         {   
  70.             // 當(dāng)URL發(fā)生改變后,還要輸出一次   
  71.             // 保證我們得到的是最新版本的URI   
  72.             Dispatcher.BeginInvoke(() =>   
  73.             {   
  74.                 System.Diagnostics.Debug.WriteLine("通道URI:{0}", e.ChannelUri.ToString());   
  75.             });   
  76.         }   
  77.         // 這個方法不用我多介紹了   
  78.         protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)   
  79.         {   
  80.             base.OnNavigatedTo(e);   
  81.             if (NavigationContext.QueryString.ContainsKey("toastmsg"))   
  82.             {   
  83.                 this.txtInfo.Text = NavigationContext.QueryString["toastmsg"];   
  84.             }   
  85.         }   
  86.     }   
  87. }   

好了,那么,如何測試呢,毫無疑問,兩個程序要同時運(yùn)行,從VS的“輸出”窗口中把RUI復(fù)制到發(fā)送程序?qū)?yīng)的文本框中,填好幾個參數(shù),如標(biāo)題正文等,然后,你回到WP模擬器,點(diǎn)擊“開始”按鈕,讓應(yīng)用程序不在最前臺。

再回到服務(wù)器端,點(diǎn)擊發(fā)送按鈕,等一會兒,你在模擬器中會看到Toast提示條的出現(xiàn)了。

沒辦法上傳圖片,只能這樣了。

下面,總結(jié)一下,推送通知其實(shí)不難的,其本質(zhì)就是HTTP通信,而且三種方式有兩種是固定格式的,打開MSDN的示例,照抄就行了,一樣的。

但要理解它不是那么容易,記住要多練,學(xué)編程沒什么捷徑,最快的捷徑就是動手干活。你可能會問:你是怎么熟悉這些技術(shù)的?

那我告訴你吧,這幾個推送通知的代碼,我已經(jīng)寫了十幾二十遍了,你說我會不理解嗎?不信你也寫上十遍看看。

責(zé)任編輯:閆佳明 來源: oschina
相關(guān)推薦

2013-04-25 15:15:41

Windows PhoWindows PhoWindows Pho

2013-04-25 14:15:53

Windows PhoWindows PhoWindows Pho

2012-08-16 11:31:30

Windows Pho

2021-12-08 15:09:26

鴻蒙HarmonyOS應(yīng)用

2021-06-07 17:51:29

并發(fā)高并發(fā)編程

2011-09-28 11:25:35

微軟Windows PhoMango

2023-09-13 06:49:05

克隆內(nèi)測版Illmind

2013-07-31 13:13:50

Windows PhoMVVM模式

2011-08-03 16:45:09

iPhone APNS 推送通知

2011-04-06 09:33:40

Push動互聯(lián)網(wǎng)

2011-10-18 09:59:06

移動推送技術(shù)

2013-04-24 13:19:06

Windows Pho動畫DoubleAni

2013-04-24 13:31:59

Windows Pho動畫之ColorAni

2013-04-19 17:11:02

Windows PhoWindows Pho

2013-04-24 13:43:10

Windows Pho動畫PointAnim

2014-09-01 10:36:35

個推推送

2011-11-30 12:32:38

企業(yè)防毒防毒方案拯救三

2011-05-04 14:40:57

推送通知iOS

2011-07-18 13:56:19

2025-03-11 08:25:00

網(wǎng)絡(luò)犯罪網(wǎng)絡(luò)詐騙惡意推送
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

色综合五月天导航| 国产精品欧美一级免费| 亚洲欧美激情视频| 青草全福视在线| www五月天com| 成人台湾亚洲精品一区二区 | 成人激情视频在线观看| 亚洲中文字幕一区| 一色桃子av在线| 视频一区二区三区入口| 欧美精品一区二区在线观看| 一区二区三区四区免费视频| 9a蜜桃久久久久久免费| 激情六月丁香婷婷| 囯产精品久久久久久| 日韩国产欧美一区二区| 欧美日韩亚洲精品内裤| 91在线看网站| www.5588.com毛片| 九七影院97影院理论片久久| 久久久国产精华| 国产69精品久久久久99| 杨幂一区二区国产精品| 麻豆av在线免费看| 久久精品国产99久久6| 亚洲欧洲午夜一线一品| 少妇高潮喷水在线观看| 亚洲精品一级片| 欧美视频一区| 日韩美女在线视频| 成年丰满熟妇午夜免费视频 | 高清全集视频免费在线| 久久精品久久久精品美女| 亚洲一二三在线| 爱福利视频一区二区| 人妻视频一区二区三区| 激情六月综合| 亚洲激情在线观看视频免费| 男人添女人下部视频免费| 国产ts变态重口人妖hd| 欧美99在线视频观看| 欧美一区三区二区| 黄色录像特级片| 国产草草影院ccyycom| 亚洲一区在线| 精品毛片乱码1区2区3区| 国产在线xxxx| 日韩一级中文字幕| 午夜影院日韩| 一区二区在线视频| www.亚洲自拍| 蜜臀av在线| 99久久伊人久久99| 日韩免费av片在线观看| 日本污视频网站| 国产视频一区二| 一区二区免费在线播放| 国产女主播一区二区| 日韩中文字幕在线观看视频| 成久久久网站| 日韩欧美电影在线| 日本精品免费在线观看| jizz日韩| 成人午夜又粗又硬又大| 国产精品成熟老女人| 亚洲欧美精品aaaaaa片| 国产精品18hdxxxⅹ在线| 欧美色videos| 日本黄色播放器| 色呦呦视频在线| 青青草国产成人99久久| 色与欲影视天天看综合网| 韩国三级hd两男一女| 日韩三级影视| 一区二区三区国产豹纹内裤在线| 久久亚洲午夜电影| 国产口爆吞精一区二区| 亚洲人成免费| 久久精品国产精品亚洲| 少妇一级淫免费观看| 免费在线观看一区| 亚洲一区二区精品3399| 亚洲欧美日韩国产成人综合一二三区| 亚洲春色一区二区三区| 日韩精品五月天| 久久久久久美女| 国产视频不卡在线| 精品欧美午夜寂寞影院| 欧美一区二区在线免费播放| 人妻有码中文字幕| 麻豆福利在线观看| 1024亚洲合集| 欧美一区二区视频17c| 黄色av免费观看| 久久精品72免费观看| 91福利视频网| 国产在线成人精品午夜| 99精品美女| 亚洲天堂免费在线| 国产性生活毛片| 麻豆一二三区精品蜜桃| 欧美在线免费视屏| 日本三区在线观看| а√天堂8资源中文在线| 亚洲男人电影天堂| 中国成人在线视频| 成人在线免费视频| 久久久精品蜜桃| 精品一区二区三区自拍图片区| 99re只有精品| 久久er99热精品一区二区| 日本不卡免费高清视频| 日韩大片免费在线观看| 中文字幕午夜精品一区二区三区| 国产亚洲激情视频在线| 黑丝av在线播放| 日日夜夜精品视频免费观看| 国产a亚洲精品| 日韩欧美成人网| a√天堂在线观看| 2020国产在线| 亚洲国产成人91porn| 亚洲 欧美 综合 另类 中字| 亚洲区欧洲区| 亚洲精品高清视频在线观看| 久久久久久久久影视| 在线你懂的视频| 亚洲精品伦理在线| 91国在线高清视频| 中文字幕无码乱码人妻日韩精品| 日本一区二区中文字幕| 亚洲综合激情网| 欧美亚洲色图视频| 国产精品186在线观看在线播放| 亚洲欧美日韩精品久久久久| 亚洲啊啊啊啊啊| 蜜臀av在线播放| 无吗不卡中文字幕| 亚洲视频在线播放| 欧美人妻一区二区三区| 日韩一区欧美| 日韩有码视频在线| 国产a免费视频| 亚洲成色精品| 国产z一区二区三区| 无码免费一区二区三区| 老司机精品视频在线| 91在线播放国产| 亚洲国产精彩视频| 不卡一区二区在线| 国产一区二区三区四区五区在线 | www.成人| 亚洲国产一区自拍| www.狠狠爱| 午夜激情久久| 久久久久久网址| 国产精品国产三级国产专区52| 国产亚洲亚洲| 成人a在线观看| 欧美视频在线观看一区二区三区| 成人av网站免费| 日韩精品第一页| 国产在线69| 亚洲国产美女搞黄色| 日日橹狠狠爱欧美超碰| 五月天色综合| 日韩精品在线视频| www.xxxx日本| 国产日韩欧美一区二区三区在线观看| 国产日韩欧美一二三区| 四虎永久在线观看| 亚洲视频一区在线| 色综合av综合无码综合网站| 国产精品久久久久久久久久辛辛| 亚洲精品一区久久久久久| 91久久国产综合| 日日夜夜免费精品视频| 99一区二区| 国产鲁鲁视频在线观看免费| 亚洲一区二区视频| 亚洲欧美自偷自拍另类| 欧美成人午夜77777| 久久午夜a级毛片| 黄色av一级片| 成人免费毛片aaaaa**| 一区二区精品国产| 涩涩网在线视频| 91精品国产91久久久久久一区二区| 中文精品在线观看| 欧美三级乱码| 成人高清视频观看www| 国产三级在线免费观看| 亚洲国产一区二区三区青草影视| 手机看片一级片| 国产一区二区三区天码| 午夜精品久久久久久久男人的天堂| 97在线公开视频| 久久久久久亚洲综合影院红桃| www.国产在线播放| 久久久久久久久成人| 国产亚洲在线播放| 国产成人在线视频观看| 成人av在线观| 国产制服91一区二区三区制服| 粉嫩av一区二区三区四区五区 | 中文字幕亚洲影院| 精品视频国产| 国产suv精品一区二区三区88区| 午夜性色福利影院| 亚洲地区一二三色| www.四虎精品| 激情综合电影网| 99精品在线直播| 在线免费观看a视频| 欧美一区二区三区在线看| 成年人网站在线观看视频| 美女网站一区二区| 亚洲黄色成人久久久| 日本综合视频| 日韩在线观看免费全集电视剧网站| 欧美特级黄色片| 国产视频一区二区三区在线观看| 国产黄色特级片| 国产精品免费大片| 国产精品高潮呻吟久久av野狼| 精品视频二区| 欧美视频一区二区在线观看| 中国女人特级毛片| 久久精品国产精品亚洲综合| 中日韩在线视频| 亚洲精品在线播放| 午夜精品在线观看| 日韩亚洲视频在线观看| 欧美在线免费播放| 欧美自拍偷拍网| 国产一区中文字幕| 欧美一区二区激情| 日韩在线黄色| 国产欧美日韩精品在线观看| 国产丝袜在线| 亚洲国产精品视频在线观看| 国内自拍视频在线播放| 国产日韩欧美综合在线| 99日在线视频| 激情综合网址| 欧美一区二区视频17c| 亚洲国产aⅴ精品一区二区三区| 欧美麻豆久久久久久中文| 免费av网站在线播放| 一本一本大道香蕉久在线精品| 亚洲午夜精品久久久久久高潮| 老司机精品视频一区二区三区| 日本精品免费视频| 国产+成+人+亚洲欧洲在线 | 国产精品原创视频| 欧美男插女视频| 日本中文字幕电影在线观看 | 欧洲精品毛片网站| 日韩专区在线| 亚洲国内精品在线| 亚洲一区二区天堂| 精品福利在线看| 日本在线观看网址| 成人午夜激情影院| 午夜免费一区二区| 亚洲午夜电影| 亚洲欧美精品在线观看| 女一区二区三区| 国产日韩精品电影| 中文字幕成在线观看| 久久这里有精品| 黄色国产在线| 亚洲成人av在线| 一级特黄特色的免费大片视频| 亚洲18色成人| 国产精品99久久久久久成人| 久久久久青草大香线综合精品| 一起草最新网址| 麻豆精品视频在线观看免费| 欧美精品自拍视频| 亚洲国产一区二区三区在线播放 | 深夜视频在线免费| 日韩三级高清在线| 中文字幕在线视频第一页| 亚洲va欧美va天堂v国产综合| 国产又粗又长又黄的视频| 久久久高清一区二区三区| 97精品人妻一区二区三区蜜桃| 久久av中文字幕片| 一区二区三区视频在线观看免费| 国产日韩欧美一区在线| 黑人巨大国产9丨视频| 国产一卡不卡| 久久久久久久久久久久久9999| 日本免费一区二区三区视频| 国产精品偷伦视频免费观看国产 | 爱久久·www| 国产网站欧美日韩免费精品在线观看| 国产老女人乱淫免费| 欧美三级一区二区| 日韩av免费播放| 日韩欧美999| 日本五十熟hd丰满| 艳妇臀荡乳欲伦亚洲一区| 裸体武打性艳史| 国产精品网站一区| 大吊一区二区三区| 亚洲国产高清在线观看视频| 亚洲一区二区三区日韩| 国产亚洲一区字幕| 中文字幕在线1| 国产欧美精品一区| 成人在线手机视频| 国产精品视频观看| 国产小视频你懂的| 亚洲欧洲精品一区二区三区不卡| 亚洲人做受高潮| 亚洲美腿欧美偷拍| 精品一区在线视频| 亚洲成人精品影院| 久久99精品波多结衣一区| 天天综合日日夜夜精品| 欧美亚洲精品天堂| 在线精品视频一区二区三四| 欧美日韩 一区二区三区| 欧美伊人精品成人久久综合97| 成年人视频免费| 欧美久久久一区| 国产丝袜视频在线观看| 日韩欧美国产wwwww| 日本波多野结衣在线| 日韩激情在线视频| 极品白浆推特女神在线观看 | 成年人看的免费视频| 亚洲国产精华液网站w | 午夜激情久久| 免费一级淫片aaa片毛片a级| 99在线精品免费视频九九视| 国产精品wwwww| 极品少妇xxxx偷拍精品少妇| 91丨porny丨九色| 成人动漫精品一区二区| 成人免费毛片糖心| 亚洲欧美色综合| 亚洲熟女综合色一区二区三区| 欧美日韩在线一区二区| 精品二区在线观看| 国产视频精品自拍| 久草免费在线| 91成人天堂久久成人| 欧美激情不卡| 韩国成人一区| 99热国内精品| 免费国产a级片| 九九国产精品视频| 成年女人免费视频| 国产欧美1区2区3区| 免费在线观看国产精品| 色综合一区二区| jizz中国少妇| 国产一区二区成人| 亚洲精品白浆| 国产精品视频999| 国产精品毛片久久久| 亚洲精品一区二区三区蜜桃久| 午夜日韩福利| 黄色一级二级三级| 成人永久免费视频| 色撸撸在线视频| 精品欧美aⅴ在线网站| 97超碰国产在线| 亚洲欧美日韩国产成人| 欧美xxx黑人xxx水蜜桃| 国产精品国产自产拍高清av水多| aiss精品大尺度系列| 在线免费观看成人网| 美女久久网站| 在线观看一区二区三区视频| 亚洲国产精品av| 久草视频在线观| 欧美大片顶级少妇| 视频一区二区三区不卡| 欧美在线xxx| 国产精品视屏| 强伦女教师2:伦理在线观看| 久久久久国产精品一区三寸 | 久久久www成人免费无遮挡大片| 久久久久久久蜜桃| 8x8x8国产精品| 91caoporn在线| 欧洲美女7788成人免费视频| **爰片久久毛片| 日韩中文在线字幕| 蜜桃久久精品一区二区| 亚洲久久久久久久| 日韩欧美主播在线| 亚洲国产综合一区| 欧美成人高清视频| 亚洲伊人伊成久久人综合网| 日韩中文字幕av在线|