国产无遮挡裸体免费直播视频,久久精品国产蜜臀av,动漫在线视频一区二区,欧亚日韩一区二区三区,久艹在线 免费视频,国产精品美女网站免费,正在播放 97超级视频在线观看,斗破苍穹年番在线观看免费,51最新乱码中文字幕

iOS開發(fā)系列--通知與消息機(jī)制詳解

 更新時(shí)間:2016年11月08日 15:22:49   作者:KenshinCui  
這篇文章主要介紹了iOS開發(fā)系列--通知與消息機(jī)制詳解,有需要的同學(xué)可以了解一下。

概述
在多數(shù)移動(dòng)應(yīng)用中任何時(shí)候都只能有一個(gè)應(yīng)用程序處于活躍狀態(tài),如果其他應(yīng)用此刻發(fā)生了一些用戶感興趣的那么通過(guò)通知機(jī)制就可以告訴用戶此時(shí)發(fā)生的事情。iOS中通知機(jī)制又叫消息機(jī)制,其包括兩類:一類是本地通知;另一類是推送通知,也叫遠(yuǎn)程通知。兩種通知在iOS中的表現(xiàn)一致,可以通過(guò)橫幅或者彈出提醒兩種形式告訴用戶,并且點(diǎn)擊通知可以會(huì)打開應(yīng)用程序,但是實(shí)現(xiàn)原理卻完全不同。今天就和大家一塊去看一下如何在iOS中實(shí)現(xiàn)這兩種機(jī)制,并且在文章后面會(huì)補(bǔ)充通知中心的內(nèi)容避免初學(xué)者對(duì)兩種概念的混淆。

本地通知

本地通知是由本地應(yīng)用觸發(fā)的,它是基于時(shí)間行為的一種通知形式,例如鬧鐘定時(shí)、待辦事項(xiàng)提醒,又或者一個(gè)應(yīng)用在一段時(shí)候后不使用通常會(huì)提示用戶使用此應(yīng)用等都是本地通知。創(chuàng)建一個(gè)本地通知通常分為以下幾個(gè)步驟:

  • 創(chuàng)建UILocalNotification。
  • 設(shè)置處理通知的時(shí)間fireDate。
  • 配置通知的內(nèi)容:通知主體、通知聲音、圖標(biāo)數(shù)字等。
  • 配置通知傳遞的自定義數(shù)據(jù)參數(shù)userInfo(這一步可選)。
  • 調(diào)用通知,可以使用scheduleLocalNotification:按計(jì)劃調(diào)度一個(gè)通知,也可以使用presentLocalNotificationNow立即調(diào)用通知。

下面就以一個(gè)程序更新后用戶長(zhǎng)期沒(méi)有使用的提醒為例對(duì)本地通知做一個(gè)簡(jiǎn)單的了解。在這個(gè)過(guò)程中并沒(méi)有牽扯太多的界面操作,所有的邏輯都在AppDelegate中:進(jìn)入應(yīng)用后如果沒(méi)有注冊(cè)通知,需要首先注冊(cè)通知請(qǐng)求用戶允許通知;一旦調(diào)用完注冊(cè)方法,無(wú)論用戶是否選擇允許通知此刻都會(huì)調(diào)用應(yīng)用程序的- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings代理方法,在這個(gè)方法中根據(jù)用戶的選擇:如果是允許通知?jiǎng)t會(huì)按照前面的步驟創(chuàng)建通知并在一定時(shí)間后執(zhí)行。

AppDelegate.m

//
// AppDelegate.m
// LocalNotification
//
// Created by Kenshin Cui on 14/03/28.
// Copyright (c) 2014年 Kenshin Cui. All rights reserved.
//

#import "AppDelegate.h"
#import "KCMainViewController.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

#pragma mark - 應(yīng)用代理方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  
  _window=[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
  
  _window.backgroundColor =[UIColor colorWithRed:249/255.0 green:249/255.0 blue:249/255.0 alpha:1];
  
  //設(shè)置全局導(dǎo)航條風(fēng)格和顏色
  [[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:23/255.0 green:180/255.0 blue:237/255.0 alpha:1]];
  [[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];
  
  KCMainViewController *mainController=[[KCMainViewController alloc]init];
  _window.rootViewController=mainController;
  
  [_window makeKeyAndVisible];

  //如果已經(jīng)獲得發(fā)送通知的授權(quán)則創(chuàng)建本地通知,否則請(qǐng)求授權(quán)(注意:如果不請(qǐng)求授權(quán)在設(shè)置中是沒(méi)有對(duì)應(yīng)的通知設(shè)置項(xiàng)的,也就是說(shuō)如果從來(lái)沒(méi)有發(fā)送過(guò)請(qǐng)求,即使通過(guò)設(shè)置也打不開消息允許設(shè)置)
  if ([[UIApplication sharedApplication]currentUserNotificationSettings].types!=UIUserNotificationTypeNone) {
    [self addLocalNotification];
  }else{
    [[UIApplication sharedApplication]registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
  }
  
  return YES;
}

#pragma mark 調(diào)用過(guò)用戶注冊(cè)通知方法之后執(zhí)行(也就是調(diào)用完registerUserNotificationSettings:方法之后執(zhí)行)
-(void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings{
  if (notificationSettings.types!=UIUserNotificationTypeNone) {
    [self addLocalNotification];
  }
}

#pragma mark 進(jìn)入前臺(tái)后設(shè)置消息信息
-(void)applicationWillEnterForeground:(UIApplication *)application{
  [[UIApplication sharedApplication]setApplicationIconBadgeNumber:0];//進(jìn)入前臺(tái)取消應(yīng)用消息圖標(biāo)
}

#pragma mark - 私有方法
#pragma mark 添加本地通知
-(void)addLocalNotification{
  
  //定義本地通知對(duì)象
  UILocalNotification *notification=[[UILocalNotification alloc]init];
  //設(shè)置調(diào)用時(shí)間
  notification.fireDate=[NSDate dateWithTimeIntervalSinceNow:10.0];//通知觸發(fā)的時(shí)間,10s以后
  notification.repeatInterval=2;//通知重復(fù)次數(shù)
  //notification.repeatCalendar=[NSCalendar currentCalendar];//當(dāng)前日歷,使用前最好設(shè)置時(shí)區(qū)等信息以便能夠自動(dòng)同步時(shí)間
  
  //設(shè)置通知屬性
  notification.alertBody=@"最近添加了諸多有趣的特性,是否立即體驗(yàn)?"; //通知主體
  notification.applicationIconBadgeNumber=1;//應(yīng)用程序圖標(biāo)右上角顯示的消息數(shù)
  notification.alertAction=@"打開應(yīng)用"; //待機(jī)界面的滑動(dòng)動(dòng)作提示
  notification.alertLaunchImage=@"Default";//通過(guò)點(diǎn)擊通知打開應(yīng)用時(shí)的啟動(dòng)圖片,這里使用程序啟動(dòng)圖片
  //notification.soundName=UILocalNotificationDefaultSoundName;//收到通知時(shí)播放的聲音,默認(rèn)消息聲音
  notification.soundName=@"msg.caf";//通知聲音(需要真機(jī)才能聽到聲音)
  
  //設(shè)置用戶信息
  notification.userInfo=@{@"id":@1,@"user":@"Kenshin Cui"};//綁定到通知上的其他附加信息
  
  //調(diào)用通知
  [[UIApplication sharedApplication] scheduleLocalNotification:notification];
}

#pragma mark 移除本地通知,在不需要此通知時(shí)記得移除
-(void)removeNotification{
  [[UIApplication sharedApplication] cancelAllLocalNotifications];
}
@end

請(qǐng)求獲得用戶允許通知的效果:

應(yīng)用退出到后彈出通知的效果:

鎖屏狀態(tài)下的通知效果(從這個(gè)界面可以看到alertAction配置為“打開應(yīng)用”):

注意:

  • 在使用通知之前必須注冊(cè)通知類型,如果用戶不允許應(yīng)用程序發(fā)送通知,則以后就無(wú)法發(fā)送通知,除非用戶手動(dòng)到iOS設(shè)置中打開通知。
  • 本地通知是有操作系統(tǒng)統(tǒng)一調(diào)度的,只有在應(yīng)用退出到后臺(tái)或者關(guān)閉才能收到通知。(注意:這一點(diǎn)對(duì)于后面的推送通知也是完全適用的。 )
  • 通知的聲音是由iOS系統(tǒng)播放的,格式必須是Linear PCM、MA4(IMA/ADPCM)、µLaw、aLaw中的一種,并且播放時(shí)間必須在30s內(nèi),否則將被系統(tǒng)聲音替換,同時(shí)自定義聲音文件必須放到main boundle中。
  • 本地通知的數(shù)量是有限制的,最近的本地通知最多只能有64個(gè),超過(guò)這個(gè)數(shù)量將被系統(tǒng)忽略。
  • 如果想要移除本地通知可以調(diào)用UIApplication的cancelLocalNotification:或cancelAllLocalNotifications移除指定通知或所有通知。

從上面的程序可以看到userInfo這個(gè)屬性我們?cè)O(shè)置了參數(shù),那么這個(gè)參數(shù)如何接收呢?

在iOS中如果點(diǎn)擊一個(gè)彈出通知(或者鎖屏界面滑動(dòng)查看通知),默認(rèn)會(huì)自動(dòng)打開當(dāng)前應(yīng)用。由于通知由系統(tǒng)調(diào)度那么此時(shí)進(jìn)入應(yīng)用有兩種情況:如果應(yīng)用程序已經(jīng)完全退出那么此時(shí)會(huì)調(diào)用- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法;如果此時(shí)應(yīng)用程序還在運(yùn)行(無(wú)論是在前臺(tái)還是在后臺(tái))則會(huì)調(diào)用-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification方法接收消息參數(shù)。當(dāng)然如果是后者自然不必多說(shuō),因?yàn)閰?shù)中已經(jīng)可以拿到notification對(duì)象,只要讀取userInfo屬性即可。如果是前者的話則可以訪問(wèn)launchOptions中鍵為UIApplicationLaunchOptionsLocalNotificationKey的對(duì)象,這個(gè)對(duì)象就是發(fā)送的通知,由此對(duì)象再去訪問(wèn)userInfo。為了演示這個(gè)過(guò)程在下面的程序中將userInfo的內(nèi)容寫入文件以便模擬關(guān)閉程序后再通過(guò)點(diǎn)擊通知打開應(yīng)用獲取userInfo的過(guò)程。

AppDelegate.m

//
// AppDelegate.m
// LocalNotification
//
// Created by Kenshin Cui on 14/03/28.
// Copyright (c) 2014年 Kenshin Cui. All rights reserved.
//

#import "AppDelegate.h"
#import "KCMainViewController.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

#pragma mark - 應(yīng)用代理方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  
  _window=[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
  
  _window.backgroundColor =[UIColor colorWithRed:249/255.0 green:249/255.0 blue:249/255.0 alpha:1];
  
  //設(shè)置全局導(dǎo)航條風(fēng)格和顏色
  [[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:23/255.0 green:180/255.0 blue:237/255.0 alpha:1]];
  [[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];
  
  KCMainViewController *mainController=[[KCMainViewController alloc]init];
  _window.rootViewController=mainController;
  
  [_window makeKeyAndVisible];

  //添加通知
  [self addLocalNotification];

  //接收通知參數(shù)
  UILocalNotification *notification=[launchOptions valueForKey:UIApplicationLaunchOptionsLocalNotificationKey];
  NSDictionary *userInfo= notification.userInfo;
  
  [userInfo writeToFile:@"/Users/kenshincui/Desktop/didFinishLaunchingWithOptions.txt" atomically:YES];
  NSLog(@"didFinishLaunchingWithOptions:The userInfo is %@.",userInfo);
  
  return YES;
}

#pragma mark 接收本地通知時(shí)觸發(fā)
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
  NSDictionary *userInfo=notification.userInfo;
  [userInfo writeToFile:@"/Users/kenshincui/Desktop/didReceiveLocalNotification.txt" atomically:YES];
  NSLog(@"didReceiveLocalNotification:The userInfo is %@",userInfo);
}

#pragma mark 調(diào)用過(guò)用戶注冊(cè)通知方法之后執(zhí)行(也就是調(diào)用完registerUserNotificationSettings:方法之后執(zhí)行)
-(void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings{
  if (notificationSettings.types!=UIUserNotificationTypeNone) {
    [self addLocalNotification];
  }
}

#pragma mark 進(jìn)入前臺(tái)后設(shè)置消息信息
-(void)applicationWillEnterForeground:(UIApplication *)application{
  [[UIApplication sharedApplication]setApplicationIconBadgeNumber:0];//進(jìn)入前臺(tái)取消應(yīng)用消息圖標(biāo)
}

#pragma mark - 私有方法
#pragma mark 添加本地通知
-(void)addLocalNotification{
  
  //定義本地通知對(duì)象
  UILocalNotification *notification=[[UILocalNotification alloc]init];
  //設(shè)置調(diào)用時(shí)間
  notification.fireDate=[NSDate dateWithTimeIntervalSinceNow:10.0];//通知觸發(fā)的時(shí)間,10s以后
  notification.repeatInterval=2;//通知重復(fù)次數(shù)
  //notification.repeatCalendar=[NSCalendar currentCalendar];//當(dāng)前日歷,使用前最好設(shè)置時(shí)區(qū)等信息以便能夠自動(dòng)同步時(shí)間
  
  //設(shè)置通知屬性
  notification.alertBody=@"最近添加了諸多有趣的特性,是否立即體驗(yàn)?"; //通知主體
  notification.applicationIconBadgeNumber=1;//應(yīng)用程序圖標(biāo)右上角顯示的消息數(shù)
  notification.alertAction=@"打開應(yīng)用"; //待機(jī)界面的滑動(dòng)動(dòng)作提示
  notification.alertLaunchImage=@"Default";//通過(guò)點(diǎn)擊通知打開應(yīng)用時(shí)的啟動(dòng)圖片
  //notification.soundName=UILocalNotificationDefaultSoundName;//收到通知時(shí)播放的聲音,默認(rèn)消息聲音
  notification.soundName=@"msg.caf";//通知聲音(需要真機(jī))
  
  //設(shè)置用戶信息
  notification.userInfo=@{@"id":@1,@"user":@"Kenshin Cui"};//綁定到通知上的其他額外信息
  
  //調(diào)用通知
  [[UIApplication sharedApplication] scheduleLocalNotification:notification];
}
@end

上面的程序可以分為兩種情況去運(yùn)行:一種是啟動(dòng)程序關(guān)閉程序,等到接收到通知之后點(diǎn)擊通知重新進(jìn)入程序;另一種是啟動(dòng)程序后,進(jìn)入后臺(tái)(其實(shí)在前臺(tái)也可以,但是為了明顯的體驗(yàn)這個(gè)過(guò)程建議進(jìn)入后臺(tái)),接收到通知后點(diǎn)擊通知進(jìn)入應(yīng)用。另種情況會(huì)分別按照前面說(shuō)的情況調(diào)用不同的方法接收到userInfo寫入本地文件系統(tǒng)。有了userInfo一般來(lái)說(shuō)就可以根據(jù)這個(gè)信息進(jìn)行一些處理,例如可以根據(jù)不同的參數(shù)信息導(dǎo)航到不同的界面,假設(shè)是更新的通知?jiǎng)t可以導(dǎo)航到更新內(nèi)容界面等。

推送通知

和本地通知不同,推送通知是由應(yīng)用服務(wù)提供商發(fā)起的,通過(guò)蘋果的APNs(Apple Push Notification Server)發(fā)送到應(yīng)用客戶端。下面是蘋果官方關(guān)于推送通知的過(guò)程示意圖:
推送通知的過(guò)程可以分為以下幾步:

  1. 應(yīng)用服務(wù)提供商從服務(wù)器端把要發(fā)送的消息和設(shè)備令牌(device token)發(fā)送給蘋果的消息推送服務(wù)器APNs。
  2. APNs根據(jù)設(shè)備令牌在已注冊(cè)的設(shè)備(iPhone、iPad、iTouch、mac等)查找對(duì)應(yīng)的設(shè)備,將消息發(fā)送給相應(yīng)的設(shè)備。
  3. 客戶端設(shè)備接將接收到的消息傳遞給相應(yīng)的應(yīng)用程序,應(yīng)用程序根據(jù)用戶設(shè)置彈出通知消息。

當(dāng)然,這只是一個(gè)簡(jiǎn)單的流程,有了這個(gè)流程我們還無(wú)從下手編寫程序,將上面的流程細(xì)化可以得到如下流程圖(圖片來(lái)自互聯(lián)網(wǎng)),在這個(gè)過(guò)程中會(huì)也會(huì)提到如何在程序中完成這些步驟:

1.應(yīng)用程序注冊(cè)APNs推送消息。

說(shuō)明:

a.只有注冊(cè)過(guò)的應(yīng)用才有可能接收到消息,程序中通常通過(guò)UIApplication的registerUserNotificationSettings:方法注冊(cè),iOS8中通知注冊(cè)的方法發(fā)生了改變,如果是iOS7及之前版本的iOS請(qǐng)參考其他代碼。

b.注冊(cè)之前有兩個(gè)前提條件必須準(zhǔn)備好:開發(fā)配置文件(provisioning profile,也就是.mobileprovision后綴的文件)的App ID不能使用通配ID必須使用指定APP ID并且生成配置文件中選擇Push Notifications服務(wù),一般的開發(fā)配置文件無(wú)法完成注冊(cè);應(yīng)用程序的Bundle Identifier必須和生成配置文件使用的APP ID完全一致。

2.iOS從APNs接收device token,在應(yīng)用程序獲取device token。

說(shuō)明:

a.在UIApplication的-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken代理方法中獲取令牌,此方法發(fā)生在注冊(cè)之后。

b.如果無(wú)法正確獲得device token可以在UIApplication的-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error代理方法中查看詳細(xì)錯(cuò)誤信息,此方法發(fā)生在獲取device token失敗之后。

c.必須真機(jī)調(diào)試,模擬器無(wú)法獲取device token。

3.iOS應(yīng)用將device token發(fā)送給應(yīng)用程序提供商,告訴服務(wù)器端當(dāng)前設(shè)備允許接收消息。

說(shuō)明:

a.device token的生成算法只有Apple掌握,為了確保算法發(fā)生變化后仍然能夠正常接收服務(wù)器端發(fā)送的通知,每次應(yīng)用程序啟動(dòng)都重新獲得device token(注意:device token的獲取不會(huì)造成性能問(wèn)題,蘋果官方已經(jīng)做過(guò)優(yōu)化)。

b.通??梢詣?chuàng)建一個(gè)網(wǎng)絡(luò)連接發(fā)送給應(yīng)用程序提供商的服務(wù)器端, 在這個(gè)過(guò)程中最好將上一次獲得的device token存儲(chǔ)起來(lái),避免重復(fù)發(fā)送,一旦發(fā)現(xiàn)device token發(fā)生了變化最好將原有的device token一塊發(fā)送給服務(wù)器端,服務(wù)器端刪除原有令牌存儲(chǔ)新令牌避免服務(wù)器端發(fā)送無(wú)效消息。

4.應(yīng)用程序提供商在服務(wù)器端根據(jù)前面發(fā)送過(guò)來(lái)的device token組織信息發(fā)送給APNs。

說(shuō)明:

a.發(fā)送時(shí)指定device token和消息內(nèi)容,并且完全按照蘋果官方的消息格式組織消息內(nèi)容,通常情況下可以借助其他第三方消息推送框架來(lái)完成。

5.APNs根據(jù)消息中的device token查找已注冊(cè)的設(shè)備推送消息。

說(shuō)明:

a.正常情況下可以根據(jù)device token將消息成功推送到客戶端設(shè)備中,但是也不排除用戶卸載程序的情況,此時(shí)推送消息失敗,APNs會(huì)將這個(gè)錯(cuò)誤消息通知服務(wù)器端以避免資源浪費(fèi)(服務(wù)器端此時(shí)可以根據(jù)錯(cuò)誤刪除已經(jīng)存儲(chǔ)的device token,下次不再發(fā)送)。

下面將簡(jiǎn)單演示一下推送通知的簡(jiǎn)單流程:

首先,看一下iOS客戶端代碼:

//
// AppDelegate.m
// pushnotification
//
// Created by Kenshin Cui on 14/03/27.
// Copyright (c) 2014年 Kenshin Cui. All rights reserved.
//

#import "AppDelegate.h"
#import "KCMainViewController.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

#pragma mark - 應(yīng)用程序代理方法
#pragma mark 應(yīng)用程序啟動(dòng)之后
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  
  _window=[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
  
  _window.backgroundColor =[UIColor colorWithRed:249/255.0 green:249/255.0 blue:249/255.0 alpha:1];
  
  //設(shè)置全局導(dǎo)航條風(fēng)格和顏色
  [[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:23/255.0 green:180/255.0 blue:237/255.0 alpha:1]];
  [[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];
  
  KCMainViewController *mainController=[[KCMainViewController alloc]init];
  _window.rootViewController=mainController;
  
  [_window makeKeyAndVisible];
  
  //注冊(cè)推送通知(注意iOS8注冊(cè)方法發(fā)生了變化)
  [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
  [application registerForRemoteNotifications];
  
  return YES;
}
#pragma mark 注冊(cè)推送通知之后
//在此接收設(shè)備令牌
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
  [self addDeviceToken:deviceToken];
  NSLog(@"device token:%@",deviceToken);
}

#pragma mark 獲取device token失敗后
-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{
  NSLog(@"didFailToRegisterForRemoteNotificationsWithError:%@",error.localizedDescription);
  [self addDeviceToken:nil];
}

#pragma mark 接收到推送通知之后
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
  NSLog(@"receiveRemoteNotification,userInfo is %@",userInfo);
}

#pragma mark - 私有方法
/**
 * 添加設(shè)備令牌到服務(wù)器端
 *
 * @param deviceToken 設(shè)備令牌
 */
-(void)addDeviceToken:(NSData *)deviceToken{
  NSString *key=@"DeviceToken";
  NSData *oldToken= [[NSUserDefaults standardUserDefaults]objectForKey:key];
  //如果偏好設(shè)置中的已存儲(chǔ)設(shè)備令牌和新獲取的令牌不同則存儲(chǔ)新令牌并且發(fā)送給服務(wù)器端
  if (![oldToken isEqualToData:deviceToken]) {
    [[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:key];
    [self sendDeviceTokenWidthOldDeviceToken:oldToken newDeviceToken:deviceToken];
  }
}

-(void)sendDeviceTokenWidthOldDeviceToken:(NSData *)oldToken newDeviceToken:(NSData *)newToken{
  //注意一定確保真機(jī)可以正常訪問(wèn)下面的地址
  NSString *urlStr=@"http://192.168.1.101/RegisterDeviceToken.aspx";
  urlStr=[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  NSURL *url=[NSURL URLWithString:urlStr];
  NSMutableURLRequest *requestM=[NSMutableURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:10.0];
  [requestM setHTTPMethod:@"POST"];
  NSString *bodyStr=[NSString stringWithFormat:@"oldToken=%@&newToken=%@",oldToken,newToken];
  NSData *body=[bodyStr dataUsingEncoding:NSUTF8StringEncoding];
  [requestM setHTTPBody:body];
  NSURLSession *session=[NSURLSession sharedSession];
  NSURLSessionDataTask *dataTask= [session dataTaskWithRequest:requestM completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    if (error) {
      NSLog(@"Send failure,error is :%@",error.localizedDescription);
    }else{
      NSLog(@"Send Success!");
    }
    
  }];
  [dataTask resume];
}
@end

iOS客戶端代碼的代碼比較簡(jiǎn)單,注冊(cè)推送通知,獲取device token存儲(chǔ)到偏好設(shè)置中,并且如果新獲取的device token不同于偏好設(shè)置中存儲(chǔ)的數(shù)據(jù)則發(fā)送給服務(wù)器端,更新服務(wù)器端device token列表。

其次,由于device token需要發(fā)送給服務(wù)器端,這里使用一個(gè)Web應(yīng)用作為服務(wù)器端接收device token,這里使用了ASP.NET程序來(lái)處理令牌接收注冊(cè)工作,當(dāng)然你使用其他技術(shù)同樣沒(méi)有問(wèn)題。下面是對(duì)應(yīng)的后臺(tái)代碼:

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CMJ.Framework.Data;

namespace WebServer
{
  public partial class RegisterDeviceToken : System.Web.UI.Page
  {
    private string _appID = @"com.cmjstudio.pushnotification";
    private SqlHelper _helper = new SqlHelper();
    protected void Page_Load(object sender, EventArgs e)
    {
      try
      {
        string oldToken = Request["oldToken"] + "";
        string newToken = Request["newToken"] + "";
        string sql = "";
        //如果傳遞舊的設(shè)備令牌則刪除舊令牌添加新令牌
        if (oldToken != "")
        {
          sql = string.Format("DELETE FROM dbo.Device WHERE AppID='{0}' AND DeviceToken='{1}';", _appID, oldToken);
        }
        sql += string.Format(@"IF NOT EXISTS (SELECT ID FROM dbo.Device WHERE AppID='{0}' AND DeviceToken='{1}')
                    INSERT INTO dbo.Device ( AppID, DeviceToken ) VALUES ( N'{0}', N'{1}');", _appID, newToken);
        _helper.ExecuteNonQuery(sql);
        Response.Write("注冊(cè)成功!");
      }
      catch(Exception ex)
      {
        Response.Write("注冊(cè)失敗,錯(cuò)誤詳情:"+ex.ToString());
      }
    }
  }
}

這個(gè)過(guò)程主要就是保存device token到數(shù)據(jù)庫(kù)中,當(dāng)然如果同時(shí)傳遞舊的設(shè)備令牌還需要先刪除就的設(shè)備令牌,這里簡(jiǎn)單的在數(shù)據(jù)庫(kù)中創(chuàng)建了一張Device表來(lái)保存設(shè)備令牌,其中記錄了應(yīng)用程序Id和設(shè)備令牌。

第三步就是服務(wù)器端發(fā)送消息,如果要給APNs發(fā)送消息就必須按照Apple的標(biāo)準(zhǔn)消息格式組織消息內(nèi)容。但是好在目前已經(jīng)有很多開源的第三方類庫(kù)供我們使用,具體消息如何包裝完全不用自己組織,這里使用一個(gè)開源的類庫(kù)Push Sharp來(lái)給APNs發(fā)送消息 ,除了可以給Apple設(shè)備推送消息,Push Sharp還支持Android、Windows Phone等多種設(shè)備,更多詳細(xì)內(nèi)容大家可以參照官方說(shuō)明。前面說(shuō)過(guò)如果要開發(fā)消息推送應(yīng)用不能使用一般的開發(fā)配置文件,這里還需要注意:如果服務(wù)器端要給APNs發(fā)送消息其秘鑰也必須是通過(guò)APNs Development iOS類型的證書來(lái)導(dǎo)出的,一般的iOS Development 類型的證書導(dǎo)出的秘鑰無(wú)法用作服務(wù)器端發(fā)送秘鑰。下面通過(guò)在一個(gè)簡(jiǎn)單的WinForm程序中調(diào)用Push Sharp給APNs發(fā)送消息,這里讀取之前Device表中的所有設(shè)備令牌循環(huán)發(fā)送消息:

using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using PushSharp;
using PushSharp.Apple;
using CMJ.Framework.Data;
using CMJ.Framework.Logging;
using CMJ.Framework.Windows.Forms;

namespace PushNotificationServer
{
  public partial class frmMain : PersonalizeForm
  {
    private string _appID = @"com.cmjstudio.pushnotification";
    private SqlHelper _helper = new SqlHelper();
    public frmMain()
    {
      InitializeComponent();
    }

    private void btnClose_Click(object sender, EventArgs e)
    {
      this.Close();
    }

    private void btnSend_Click(object sender, EventArgs e)
    {
      List<string> deviceTokens = GetDeviceToken();
      SendMessage(deviceTokens, tbMessage.Text);
    }

    #region 發(fā)送消息
    /// <summary>
    /// 取得所有設(shè)備令牌
    /// </summary>
    /// <returns>設(shè)備令牌</returns>
    private List<string> GetDeviceToken()
    {
      List<string> deviceTokens = new List<string>();
      string sql = string.Format("SELECT DeviceToken FROM dbo.Device WHERE AppID='{0}'",_appID);
      DataTable dt = _helper.GetDataTable(sql);
      if(dt.Rows.Count>0)
      {
        foreach(DataRow dr in dt.Rows)
        {
          deviceTokens.Add((dr["DeviceToken"]+"").TrimStart('<').TrimEnd('>').Replace(" ",""));
        }
      }
      return deviceTokens;
    }
    
    /// <summary>
    /// 發(fā)送消息
    /// </summary>
    /// <param name="deviceToken">設(shè)備令牌</param>
    /// <param name="message">消息內(nèi)容</param>
    private void SendMessage(List<string> deviceToken, string message)
    {
      //創(chuàng)建推送對(duì)象
      var pusher = new PushBroker();
      pusher.OnNotificationSent += pusher_OnNotificationSent;//發(fā)送成功事件
      pusher.OnNotificationFailed += pusher_OnNotificationFailed;//發(fā)送失敗事件
      pusher.OnChannelCreated += pusher_OnChannelCreated;
      pusher.OnChannelDestroyed += pusher_OnChannelDestroyed;
      pusher.OnChannelException += pusher_OnChannelException;
      pusher.OnDeviceSubscriptionChanged += pusher_OnDeviceSubscriptionChanged;
      pusher.OnDeviceSubscriptionExpired += pusher_OnDeviceSubscriptionExpired;
      pusher.OnNotificationRequeue += pusher_OnNotificationRequeue;
      pusher.OnServiceException += pusher_OnServiceException;
      //注冊(cè)推送服務(wù)
      byte[] certificateData = File.ReadAllBytes(@"E:\KenshinCui_Push.p12");
      pusher.RegisterAppleService(new ApplePushChannelSettings(certificateData, "123"));
      foreach (string token in deviceToken)
      {
        //給指定設(shè)備發(fā)送消息
        pusher.QueueNotification(new AppleNotification()
          .ForDeviceToken(token)
          .WithAlert(message) 
          .WithBadge(1)
          .WithSound("default"));
      }
    }

    void pusher_OnServiceException(object sender, Exception error)
    {
      Console.WriteLine("消息發(fā)送失敗,錯(cuò)誤詳情:" + error.ToString());
      PersonalizeMessageBox.Show(this, "消息發(fā)送失敗,錯(cuò)誤詳情:" + error.ToString(), "系統(tǒng)提示");
    }

    void pusher_OnNotificationRequeue(object sender, PushSharp.Core.NotificationRequeueEventArgs e)
    {
      Console.WriteLine("pusher_OnNotificationRequeue");
    }

    void pusher_OnDeviceSubscriptionExpired(object sender, string expiredSubscriptionId, DateTime expirationDateUtc, PushSharp.Core.INotification notification)
    {
      Console.WriteLine("pusher_OnDeviceSubscriptionChanged");
    }

    void pusher_OnDeviceSubscriptionChanged(object sender, string oldSubscriptionId, string newSubscriptionId, PushSharp.Core.INotification notification)
    {
      Console.WriteLine("pusher_OnDeviceSubscriptionChanged");
    }

    void pusher_OnChannelException(object sender, PushSharp.Core.IPushChannel pushChannel, Exception error)
    {
      Console.WriteLine("消息發(fā)送失敗,錯(cuò)誤詳情:" + error.ToString());
      PersonalizeMessageBox.Show(this, "消息發(fā)送失敗,錯(cuò)誤詳情:" + error.ToString(), "系統(tǒng)提示");
    }

    void pusher_OnChannelDestroyed(object sender)
    {
      Console.WriteLine("pusher_OnChannelDestroyed");
    }

    void pusher_OnChannelCreated(object sender, PushSharp.Core.IPushChannel pushChannel)
    {
      Console.WriteLine("pusher_OnChannelCreated");
    }

    void pusher_OnNotificationFailed(object sender, PushSharp.Core.INotification notification, Exception error)
    {
      Console.WriteLine("消息發(fā)送失敗,錯(cuò)誤詳情:" + error.ToString());
      PersonalizeMessageBox.Show(this, "消息發(fā)送失敗,錯(cuò)誤詳情:"+error.ToString(), "系統(tǒng)提示");
    }

    void pusher_OnNotificationSent(object sender, PushSharp.Core.INotification notification)
    {
      Console.WriteLine("消息發(fā)送成功!");
      PersonalizeMessageBox.Show(this, "消息發(fā)送成功!", "系統(tǒng)提示");
    }
    #endregion
  }
}

服務(wù)器端消息發(fā)送應(yīng)用運(yùn)行效果:

iOS客戶端接收的消息的效果:

到目前為止通過(guò)服務(wù)器端應(yīng)用可以順利發(fā)送消息給APNs并且iOS應(yīng)用已經(jīng)成功接收推送消息。

補(bǔ)充--iOS開發(fā)證書、秘鑰

iOS開發(fā)過(guò)程中如果需要進(jìn)行真機(jī)調(diào)試、發(fā)布需要注冊(cè)申請(qǐng)很多證書,對(duì)于初學(xué)者往往迷惑不解,再加上今天的文章中會(huì)牽扯到一些特殊配置,這里就簡(jiǎn)單的對(duì)iOS開發(fā)的常用證書和秘鑰等做一說(shuō)明。

證書

iOS常用的證書包括開發(fā)證書和發(fā)布證書,無(wú)論是真機(jī)調(diào)試還是最終發(fā)布應(yīng)用到App Store這兩個(gè)證書都是必須的,它是iOS開發(fā)的基本證書。

a.開發(fā)證書:開發(fā)證書又分為普通開發(fā)證書和推送證書,如果僅僅是一般的應(yīng)用則前者即可滿足,但是如果開發(fā)推送應(yīng)用則必須使用推送證書。

b.發(fā)布證書:發(fā)布證書又可以分為普通發(fā)布證書、推送證書、Pass Type ID證書、站點(diǎn)發(fā)布證書、VoIP服務(wù)證書、蘋果支付證書。同樣的,對(duì)于需要使用特殊服務(wù)的應(yīng)用則必須選擇對(duì)應(yīng)的證書。

應(yīng)用標(biāo)識(shí)

App ID,應(yīng)用程序的唯一標(biāo)識(shí),對(duì)應(yīng)iOS應(yīng)用的Bundle Identifier,App ID在蘋果開發(fā)者中心中分為通配應(yīng)用ID和明確的應(yīng)用ID,前者一般用于普通應(yīng)用開發(fā),一個(gè)ID可以適用于多個(gè)不同標(biāo)識(shí)的應(yīng)用;但是對(duì)于使用消息推送、Passbook、站點(diǎn)發(fā)布、iCloud等服務(wù)的應(yīng)用必須配置明確的應(yīng)用ID。

設(shè)備標(biāo)識(shí)

UDID,用于標(biāo)識(shí)每一臺(tái)硬件設(shè)備的標(biāo)示符。注意它不是device token,device token是根據(jù)UDID使用一個(gè)只有Apple自己才知道的算法生成的一組標(biāo)示符。

配置簡(jiǎn)介

Provisioning Profiles,平時(shí)又稱為PP文件。將UDID、App ID、開發(fā)證書打包在一起的配置文件,同樣分為開發(fā)和發(fā)布兩類配置文件。

秘鑰

在申請(qǐng)開發(fā)證書時(shí)必須要首先提交一個(gè)秘鑰請(qǐng)求文件,對(duì)于生成秘鑰請(qǐng)求文件的mac,如果要做開發(fā)則只需要下載證書和配置簡(jiǎn)介即可開發(fā)。但是如果要想在其他機(jī)器上做開發(fā)則必須將證書中的秘鑰導(dǎo)出(導(dǎo)出之后是一個(gè).p12文件),然后導(dǎo)入其他機(jī)器。同時(shí)對(duì)于類似于推送服務(wù)器端應(yīng)用如果要給APNs發(fā)送消息,同樣需要使用.p12秘鑰文件,并且這個(gè)秘鑰文件需要是推送證書導(dǎo)出的對(duì)應(yīng)秘鑰。

補(bǔ)充--通知中心

對(duì)于很多初學(xué)者往往會(huì)把iOS中的本地通知、推送通知和iOS通知中心的概念弄混。其實(shí)二者之間并沒(méi)有任何關(guān)系,事實(shí)上它們都不屬于一個(gè)框架,前者屬于UIKit框架,后者屬于Foundation框架。

通知中心實(shí)際上是iOS程序內(nèi)部之間的一種消息廣播機(jī)制,主要為了解決應(yīng)用程序內(nèi)部不同對(duì)象之間解耦而設(shè)計(jì)。它是基于觀察者模式設(shè)計(jì)的,不能跨應(yīng)用程序進(jìn)程通信,當(dāng)通知中心接收到消息之后會(huì)根據(jù)內(nèi)部的消息轉(zhuǎn)發(fā)表,將消息發(fā)送給訂閱者。下面是一個(gè)簡(jiǎn)單的流程示意圖:
了解通知中心需要熟悉NSNotificationCenter和NSNotification兩個(gè)類:

NSNotificationCenter:是通知系統(tǒng)的中心,用于注冊(cè)和發(fā)送通知,下表列出常用的方法。

方法 說(shuō)明
- (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(id)anObject 添加監(jiān)聽,參數(shù):
observer:監(jiān)聽者
selector:監(jiān)聽方法(監(jiān)聽者監(jiān)聽到通知后執(zhí)行的方法)
  name:監(jiān)聽的通知名稱
object:通知的發(fā)送者(如果指定nil則監(jiān)聽任何對(duì)象發(fā)送的通知)
- (id <NSObject>)addObserverForName:(NSString *)name object:(id)obj queue:(NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *note))block 添加監(jiān)聽,參數(shù):
name:監(jiān)聽的通知名稱
object:通知的發(fā)送者(如果指定nil則監(jiān)聽任何對(duì)象發(fā)送的通知)
queue:操作隊(duì)列,如果制定非主隊(duì)線程隊(duì)列則可以異步執(zhí)行block
block:監(jiān)聽到通知后執(zhí)行的操作
- (void)postNotification:(NSNotification *)notification 發(fā)送通知,參數(shù):
notification:通知對(duì)象
- (void)postNotificationName:(NSString *)aName object:(id)anObject 發(fā)送通知,參數(shù):
aName:通知名稱
anObject:通知發(fā)送者
- (void)postNotificationName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo 發(fā)送通知,參數(shù):
aName:通知名稱
anObject:通知發(fā)送者
aUserInfo:通知參數(shù)
- (void)removeObserver:(id)observer 移除監(jiān)聽,參數(shù):
observer:監(jiān)聽對(duì)象
- (void)removeObserver:(id)observer name:(NSString *)aName object:(id)anObject 移除監(jiān)聽,參數(shù):
observer:監(jiān)聽對(duì)象
aName:通知名稱
anObject:通知發(fā)送者

NSNotification:代表通知內(nèi)容的載體,主要有三個(gè)屬性:name代表通知名稱,object代表通知的發(fā)送者,userInfo代表通知的附加信息。

雖然前面的文章中從未提到過(guò)通知中心,但是其實(shí)通知中心我們并不陌生,前面文章中很多內(nèi)容都是通過(guò)通知中心來(lái)進(jìn)行應(yīng)用中各個(gè)組件通信的,只是沒(méi)有單獨(dú)拿出來(lái)說(shuō)而已。例如前面的文章中討論的應(yīng)用程序生命周期問(wèn)題,當(dāng)應(yīng)用程序啟動(dòng)后、進(jìn)入后臺(tái)、進(jìn)入前臺(tái)、獲得焦點(diǎn)、失去焦點(diǎn),窗口大小改變、隱藏等都會(huì)發(fā)送通知。這個(gè)通知可以通過(guò)前面NSNotificationCenter進(jìn)行訂閱即可接收對(duì)應(yīng)的消息,下面的示例演示了如何添加監(jiān)聽獲得UIApplication的進(jìn)入后臺(tái)和獲得焦點(diǎn)的通知:

//
// KCMainViewController.m
// NotificationCenter
//
// Created by Kenshin Cui on 14/03/27.
// Copyright (c) 2014年 cmjstudio. All rights reserved.
//

#import "KCMainViewController.h"

@interface KCMainViewController ()

@end

@implementation KCMainViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  
  [self addObserverToNotificationCenter];
  
}

#pragma mark 添加監(jiān)聽
-(void)addObserverToNotificationCenter{
  /*添加應(yīng)用程序進(jìn)入后臺(tái)監(jiān)聽
   * observer:監(jiān)聽者
   * selector:監(jiān)聽方法(監(jiān)聽者監(jiān)聽到通知后執(zhí)行的方法)
   * name:監(jiān)聽的通知名稱(下面的UIApplicationDidEnterBackgroundNotification是一個(gè)常量)
   * object:通知的發(fā)送者(如果指定nil則監(jiān)聽任何對(duì)象發(fā)送的通知)
   */
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationEnterBackground) name:UIApplicationDidEnterBackgroundNotification object:[UIApplication sharedApplication]];
  
  /* 添加應(yīng)用程序獲得焦點(diǎn)的通知監(jiān)聽
   * name:監(jiān)聽的通知名稱
   * object:通知的發(fā)送者(如果指定nil則監(jiān)聽任何對(duì)象發(fā)送的通知)
   * queue:操作隊(duì)列,如果制定非主隊(duì)線程隊(duì)列則可以異步執(zhí)行block
   * block:監(jiān)聽到通知后執(zhí)行的操作
   */
  NSOperationQueue *operationQueue=[[NSOperationQueue alloc]init];
  [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidBecomeActiveNotification object:[UIApplication sharedApplication] queue:operationQueue usingBlock:^(NSNotification *note) {
    NSLog(@"Application become active.");
  }];
}

#pragma mark 應(yīng)用程序啟動(dòng)監(jiān)聽方法
-(void)applicationEnterBackground{
  NSLog(@"Application enter background.");
}
@end

當(dāng)然很多時(shí)候使用通知中心是為了添加自定義通知,并獲得自定義通知消息。在前面的文章“iOS開發(fā)系列--視圖切換”中提到過(guò)如何進(jìn)行多視圖之間參數(shù)傳遞,其實(shí)利用自定義通知也可以進(jìn)行參數(shù)傳遞。通常一個(gè)應(yīng)用登錄后會(huì)顯示用戶信息,而登錄信息可以通過(guò)登錄界面獲取。下面就以這樣一種場(chǎng)景為例,在主界面中添加監(jiān)聽,在登錄界面發(fā)送通知,一旦登錄成功將向通知中心發(fā)送成功登錄的通知,此時(shí)主界面中由于已經(jīng)添加通知監(jiān)聽所以會(huì)收到通知并更新UI界面。

主界面KCMainViewController.m:

//
// KCMainViewController.m
// NotificationCenter
//
// Created by Kenshin Cui on 14/03/27
// Copyright (c) 2014年 cmjstudio. All rights reserved.
//

#import "KCMainViewController.h"
#import "KCLoginViewController.h"
#define UPDATE_LGOGIN_INFO_NOTIFICATION @"updateLoginInfo"

@interface KCMainViewController (){
  UILabel *_lbLoginInfo;
  UIButton *_btnLogin;
}

@end

@implementation KCMainViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  
  [self setupUI];
}

-(void)setupUI{
  UILabel *label =[[UILabel alloc]initWithFrame:CGRectMake(0, 100,320 ,30)];
  label.textAlignment=NSTextAlignmentCenter;
  label.textColor=[UIColor colorWithRed:23/255.0 green:180/255.0 blue:237/255.0 alpha:1];
  _lbLoginInfo=label;
  [self.view addSubview:label];
  
  UIButton *button=[UIButton buttonWithType:UIButtonTypeSystem];
  button.frame=CGRectMake(60, 200, 200, 25);
  [button setTitle:@"登錄" forState:UIControlStateNormal];
  [button addTarget:self action:@selector(loginOut) forControlEvents:UIControlEventTouchUpInside];
  _btnLogin=button;
  
  [self.view addSubview:button];
}

-(void)loginOut{
  //添加監(jiān)聽
  [self addObserverToNotification];
  
  KCLoginViewController *loginController=[[KCLoginViewController alloc]init];
  
  [self presentViewController:loginController animated:YES completion:nil];
}

/**
 * 添加監(jiān)聽
 */
-(void)addObserverToNotification{
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateLoginInfo:) name:UPDATE_LGOGIN_INFO_NOTIFICATION object:nil];
}

/**
 * 更新登錄信息,注意在這里可以獲得通知對(duì)象并且讀取附加信息
 */
-(void)updateLoginInfo:(NSNotification *)notification{
  NSDictionary *userInfo=notification.userInfo;
  _lbLoginInfo.text=userInfo[@"loginInfo"];
  _btnLogin.titleLabel.text=@"注銷";
}

-(void)dealloc{
  //移除監(jiān)聽
  [[NSNotificationCenter defaultCenter] removeObserver:self];
}
@end
登錄界面KCLoginViewController.m:

//
// KCLoginViewController.m
// NotificationCenter
//
// Created by Kenshin Cui on 14/03/27.
// Copyright (c) 2014年 cmjstudio. All rights reserved.
//

#import "KCLoginViewController.h"
#define UPDATE_LGOGIN_INFO_NOTIFICATION @"updateLoginInfo"

@interface KCLoginViewController (){
  UITextField *_txtUserName;
  UITextField *_txtPassword;
}

@end

@implementation KCLoginViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  
  [self setupUI];
}

/**
 * UI布局
 */
-(void)setupUI{
  //用戶名
  UILabel *lbUserName=[[UILabel alloc]initWithFrame:CGRectMake(50, 150, 100, 30)];
  lbUserName.text=@"用戶名:";
  [self.view addSubview:lbUserName];
  
  _txtUserName=[[UITextField alloc]initWithFrame:CGRectMake(120, 150, 150, 30)];
  _txtUserName.borderStyle=UITextBorderStyleRoundedRect;
  [self.view addSubview:_txtUserName];
  
  //密碼
  UILabel *lbPassword=[[UILabel alloc]initWithFrame:CGRectMake(50, 200, 100, 30)];
  lbPassword.text=@"密碼:";
  [self.view addSubview:lbPassword];
  
  _txtPassword=[[UITextField alloc]initWithFrame:CGRectMake(120, 200, 150, 30)];
  _txtPassword.secureTextEntry=YES;
  _txtPassword.borderStyle=UITextBorderStyleRoundedRect;
  [self.view addSubview:_txtPassword];
  
  //登錄按鈕
  UIButton *btnLogin=[UIButton buttonWithType:UIButtonTypeSystem];
  btnLogin.frame=CGRectMake(70, 270, 80, 30);
  [btnLogin setTitle:@"登錄" forState:UIControlStateNormal];
  [self.view addSubview:btnLogin];
  [btnLogin addTarget:self action:@selector(login) forControlEvents:UIControlEventTouchUpInside];
  
  //取消登錄按鈕
  UIButton *btnCancel=[UIButton buttonWithType:UIButtonTypeSystem];
  btnCancel.frame=CGRectMake(170, 270, 80, 30);
  [btnCancel setTitle:@"取消" forState:UIControlStateNormal];
  [self.view addSubview:btnCancel];
  [btnCancel addTarget:self action:@selector(cancel) forControlEvents:UIControlEventTouchUpInside];
}

#pragma mark 登錄操作
-(void)login{
  if ([_txtUserName.text isEqualToString:@"kenshincui"] && [_txtPassword.text isEqualToString:@"123"] ) {
    //發(fā)送通知
    [self postNotification];
    [self dismissViewControllerAnimated:YES completion:nil];
  }else{
    //登錄失敗彈出提示信息
    UIAlertView *alertView=[[UIAlertView alloc]initWithTitle:@"系統(tǒng)信息" message:@"用戶名或密碼錯(cuò)誤,請(qǐng)重新輸入!" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil];
    [alertView show];
  }
  
}

#pragma mark 點(diǎn)擊取消
-(void)cancel{
  [self dismissViewControllerAnimated:YES completion:nil];
}

/**
 * 添加通知,注意這里設(shè)置了附加信息
 */
-(void)postNotification{
  NSDictionary *userInfo=@{@"loginInfo":[NSString stringWithFormat:@"Hello,%@!",_txtUserName.text]};
  NSLog(@"%@",userInfo);
  NSNotification *notification=[NSNotification notificationWithName:UPDATE_LGOGIN_INFO_NOTIFICATION object:self userInfo:userInfo];
  [[NSNotificationCenter defaultCenter] postNotification:notification];
//也可直接采用下面的方法
//  [[NSNotificationCenter defaultCenter] postNotificationName:UPDATE_LGOGIN_INFO_NOTIFICATION object:self userInfo:userInfo];

}
@end

運(yùn)行效果:

注意:

通過(guò)上面的介紹大家應(yīng)該可以發(fā)現(xiàn)其實(shí)通知中心是一種低耦合設(shè)計(jì),和前面文章中提到的代理模式有異曲同工之妙。相對(duì)于后者而言,通知中心可以將一個(gè)通知發(fā)送給多個(gè)監(jiān)聽者,而每個(gè)對(duì)象的代理卻只能有一個(gè)。當(dāng)然代理也有其優(yōu)點(diǎn),例如使用代理代碼分布結(jié)構(gòu)更加清晰,它不像通知一樣隨處都可以添加訂閱等,實(shí)際使用過(guò)程中需要根據(jù)實(shí)際情況而定。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

亚洲国产香蕉视频在线播放 | 亚洲一区二区三区久久午夜| 日韩av有码一区二区三区4| av新中文天堂在线网址| 国语对白xxxx乱大交| 女同久久精品秋霞网| 91九色porny国产蝌蚪视频| 一区二区三区国产精选在线播放| 国产精品sm调教视频| 97少妇精品在线观看| 青青热久免费精品视频在线观看 | 天天躁日日躁狠狠躁av麻豆| 中文字幕免费在线免费| 黄工厂精品视频在线观看| 亚洲国产成人最新资源| 亚洲成人线上免费视频观看| 亚洲综合在线视频可播放| 亚洲精品三级av在线免费观看| 欧美精品免费aaaaaa| 99久久中文字幕一本人| 福利国产视频在线观看| av完全免费在线观看av| 免费啪啪啪在线观看视频| 久久久精品999精品日本| 蜜臀av久久久久蜜臀av麻豆| www久久久久久久久久久| chinese国产盗摄一区二区| 久久久久久久99精品| 欧美综合婷婷欧美综合| 97瑟瑟超碰在线香蕉| 亚洲精品精品国产综合| eeuss鲁片一区二区三区| 美女小视频网站在线| 中文字幕日韩精品就在这里| 国产一级麻豆精品免费| 2020韩国午夜女主播在线| a v欧美一区=区三区| 国产91嫩草久久成人在线视频| 久久美欧人妻少妇一区二区三区 | 啊啊啊想要被插进去视频| 77久久久久国产精产品| 动色av一区二区三区| 天天操夜夜骑日日摸| 99久久久无码国产精品性出奶水| 色97视频在线播放| 亚洲精品久久视频婷婷| 国产精品成人xxxx| 日本特级片中文字幕| 在线免费观看国产精品黄色| 国产精品女邻居小骚货| 精品国产在线手机在线| 污污小视频91在线观看| 93视频一区二区三区| 欧美日韩精品永久免费网址 | 桃色视频在线观看一区二区| 中文字幕av男人天堂| 精品亚洲国产中文自在线| 欧亚乱色一区二区三区| 日韩近亲视频在线观看| 亚洲综合图片20p| 欧美老鸡巴日小嫩逼| 大胆亚洲av日韩av| 香港一级特黄大片在线播放 | 亚洲欧美激情中文字幕| 红杏久久av人妻一区| 97色视频在线观看| 精品91自产拍在线观看一区| 北条麻妃肉色丝袜视频| 亚洲av色香蕉一区二区三区| 婷婷激情四射在线观看视频| 北条麻妃高跟丝袜啪啪| 婷婷综合蜜桃av在线| 在线新三级黄伊人网| 亚洲福利天堂久久久久久| 亚洲天堂精品久久久| 91国内视频在线观看| 人妻自拍视频中国大陆| 三上悠亚和黑人665番号| 高清成人av一区三区| 2022天天干天天操| 亚洲欧美福利在线观看| 国产成人午夜精品福利| 在线观看视频污一区| 99热国产精品666| 国产成人综合一区2区| 日本韩国免费福利精品| 中文字幕一区的人妻欧美日韩| 视频在线免费观看你懂得| 亚洲国产第一页在线观看| 成人亚洲国产综合精品| 在线观看黄色成年人网站| 亚洲成人国产av在线| 天堂va蜜桃一区入口| 国产精品女邻居小骚货| 成人性黑人一级av| 摧残蹂躏av一二三区| 1769国产精品视频免费观看| 免费看高清av的网站| 欧美天堂av无线av欧美| 熟女少妇激情五十路| okirakuhuhu在线观看| 97人妻夜夜爽二区欧美极品| 久久久制服丝袜中文字幕| 婷婷五月亚洲综合在线| 成人sm视频在线观看| 9l人妻人人爽人人爽| 久久一区二区三区人妻欧美| 91麻豆精品传媒国产黄色片| 日本免费一级黄色录像| 亚洲av日韩av第一区二区三区| 精品91自产拍在线观看一区| 黄色av网站免费在线| 日本乱人一区二区三区| 亚洲特黄aaaa片| 欧美xxx成人在线| 五月天久久激情视频| 国产精品一二三不卡带免费视频 | 一二三中文乱码亚洲乱码one| 日韩av大胆在线观看| 亚洲国产精品免费在线观看| 欧美特色aaa大片| 亚洲成高清a人片在线观看| 亚洲av日韩精品久久久| 偷拍自拍亚洲视频在线观看| 精品成人午夜免费看| 久久精品国产亚洲精品166m| 亚洲熟妇x久久av久久| 伊人开心婷婷国产av| 欲乱人妻少妇在线视频裸| 午夜久久久久久久99| av一区二区三区人妻| 在线观看免费视频网| 中文字母永久播放1区2区3区| 日本女大学生的黄色小视频| 天天日天天做天天日天天做| 啪啪啪操人视频在线播放| 熟女妇女老妇一二三区| 91色九色porny| 欧美天堂av无线av欧美| 自拍 日韩 欧美激情| 青青青青青青青在线播放视频| 亚洲国产香蕉视频在线播放| 97年大学生大白天操逼| 亚洲av日韩av网站| 少妇一区二区三区久久久| 国产精品伦理片一区二区| 日韩视频一区二区免费观看| 亚洲综合乱码一区二区| 肏插流水妹子在线乐播下载| 91人妻精品一区二区久久| 欧美男同性恋69视频| 一区国内二区日韩三区欧美| 91亚洲国产成人精品性色| 综合激情网激情五月五月婷婷| 中国熟女一区二区性xx| 日韩av有码中文字幕| 精品视频中文字幕在线播放| 亚洲午夜福利中文乱码字幕| 亚洲av男人天堂久久| 精品国产污污免费网站入口自 | 丰满的子国产在线观看| 亚洲第一伊人天堂网| 九一传媒制片厂视频在线免费观看| 视频一区二区综合精品| 日本韩国免费福利精品| 毛片一级完整版免费| 日韩美女搞黄视频免费| 亚洲av人人澡人人爽人人爱| 日本熟妇丰满厨房55| 国产 在线 免费 精品| 国产精品视频欧美一区二区| 看一级特黄a大片日本片黑人| 国产精品一二三不卡带免费视频| 色哟哟在线网站入口| 天天日天天干天天要| 亚洲av在线观看尤物| 无码中文字幕波多野不卡| av在线播放国产不卡| 91国偷自产一区二区三区精品| 粉嫩av蜜乳av蜜臀| 青青青青青青青青青国产精品视频| 亚洲 中文 自拍 另类 欧美 | 超碰97免费人妻麻豆| 99视频精品全部15| 国产精品久久久久久美女校花| 中文字幕亚洲久久久| 精品日产卡一卡二卡国色天香| 欧美在线精品一区二区三区视频 | 国产露脸对白在线观看| 国产综合精品久久久久蜜臀| 国产一区二区神马久久| 久久久久久九九99精品| 久草视频 久草视频2| 日韩精品中文字幕福利| 免费国产性生活视频| 日本免费午夜视频网站| 一区二区三区日本伦理| 成人性爱在线看四区| 丁香花免费在线观看中文字幕| 五十路av熟女松本翔子| 最新激情中文字幕视频| 国产麻豆91在线视频| 91精品国产91久久自产久强| 成人久久精品一区二区三区| 超级福利视频在线观看| 人人爽亚洲av人人爽av| 亚洲欧美另类自拍偷拍色图| 青青青青爽手机在线| av天堂中文字幕最新| 亚洲va天堂va国产va久| 少妇被强干到高潮视频在线观看| 18禁美女黄网站色大片下载| 9国产精品久久久久老师| 久精品人妻一区二区三区| 色秀欧美视频第一页| 欧美精品欧美极品欧美视频 | 日韩三级电影华丽的外出| 自拍偷拍 国产资源| 亚洲国产精品久久久久蜜桃| 欧美成人黄片一区二区三区| 蜜桃久久久久久久人妻| 中文字幕熟女人妻久久久| 欧美日韩国产一区二区三区三州| 免费在线播放a级片| 伊人精品福利综合导航| 成人蜜桃美臀九一一区二区三区| 密臀av一区在线观看| 天天干天天日天天干天天操| 青青青青青青青青青国产精品视频| 老司机在线精品福利视频| 自拍偷拍vs一区二区三区| 中文字幕免费福利视频6| 黄色无码鸡吧操逼视频| 成人高潮aa毛片免费| 国产白袜脚足J棉袜在线观看| 一区二区三区美女毛片| www天堂在线久久| 欧美 亚洲 另类综合| 亚洲视频在线视频看视频在线| 在线免费91激情四射| 中国黄片视频一区91| 国产亚洲欧美视频网站| 精品一线二线三线日本| 啊啊好慢点插舔我逼啊啊啊视频| 国产精品午夜国产小视频| 国产久久久精品毛片| 人妻少妇亚洲一区二区| 国产性色生活片毛片春晓精品 | 日韩欧美高清免费在线| 中文字幕无码日韩专区免费| 精品成人午夜免费看| 久久精品视频一区二区三区四区| 色综合久久久久久久久中文| 国产黄色大片在线免费播放| 人妻无码色噜噜狠狠狠狠色| 国产精品一区二区av国| 久久久制服丝袜中文字幕| 午夜精品福利一区二区三区p| 午夜福利资源综合激情午夜福利资| 日本欧美视频在线观看三区| 人妻少妇av在线观看| 首之国产AV医生和护士小芳| 88成人免费av网站| 二区中出在线观看老师| 五十路丰满人妻熟妇| 欧美精品黑人性xxxx| 成年美女黄网站18禁久久| 久草福利电影在线观看| 日韩黄色片在线观看网站| 视频二区在线视频观看| 亚洲另类综合一区小说| 91小伙伴中女熟女高潮| 偷青青国产精品青青在线观看| 喷水视频在线观看这里只有精品| nagger可以指黑人吗| 制丝袜业一区二区三区| 精品一区二区三区三区88 | 1000部国产精品成人观看视频| 一级a看免费观看网站| 国产一区二区三免费视频| 一色桃子久久精品亚洲| 亚洲精品国产久久久久久| 欧洲国产成人精品91铁牛tv| jul—619中文字幕在线| 午夜场射精嗯嗯啊啊视频| 精品91高清在线观看| 动漫精品视频在线观看| 日韩美女综合中文字幕pp| 国产九色91在线视频| 色秀欧美视频第一页| 日本熟妇喷水xxx| 男生用鸡操女生视频动漫| 亚洲精品中文字幕下载| 亚洲欧美国产麻豆综合| 首之国产AV医生和护士小芳| 91大神福利视频网| 黄色av网站免费在线| 早川濑里奈av黑人番号| 最近中文字幕国产在线| 性色av一区二区三区久久久| 久草福利电影在线观看| 我想看操逼黄色大片| 欧美亚洲免费视频观看| 亚洲嫩模一区二区三区| 天天日天天日天天射天天干| 日本一区二区三区免费小视频| 久久精品在线观看一区二区| 91久久人澡人人添人人爽乱| 中文字幕人妻熟女在线电影| 中文字幕高清资源站| 国产使劲操在线播放| 久草视频在线免播放| 91色秘乱一区二区三区| 天天日天天透天天操| 亚洲人人妻一区二区三区| 亚洲老熟妇日本老妇| 久久久久只精品国产三级| 99热这里只有国产精品6| 亚洲欧美久久久久久久久| 北条麻妃肉色丝袜视频| 日韩美女综合中文字幕pp| 超碰公开大香蕉97| 91亚洲手机在线视频播放| 亚洲日产av一区二区在线| 一区二区三区麻豆福利视频| 国产麻豆乱子伦午夜视频观看| 国产精品国产三级国产精东| 激情综合治理六月婷婷| 国产黄网站在线观看播放| 黄色视频在线观看高清无码| 激情小视频国产在线| 真实国产乱子伦一区二区| 人妻少妇一区二区三区蜜桃| 青春草视频在线免费播放| 日韩激情文学在线视频| 亚洲最大免费在线观看| 国产又粗又硬又猛的毛片视频| 国产日韩一区二区在线看| 日韩影片一区二区三区不卡免费 | 制服丝袜在线人妻中文字幕| 日本韩国在线观看一区二区| 国产美女一区在线观看| 欧美精产国品一二三区| 99精品视频之69精品视频| 久久精品在线观看一区二区| 亚洲午夜精品小视频| 丰满的继坶3中文在线观看| 久久精品国产亚洲精品166m| 婷婷五月亚洲综合在线| 天天躁日日躁狠狠躁av麻豆| 狠狠鲁狠狠操天天晚上干干| 亚洲高清国产自产av| 晚上一个人看操B片| 老师啊太大了啊啊啊尻视频| 亚洲一区二区三区在线高清| 中文字幕一区二 区二三区四区| 国内精品在线播放第一页| 久草福利电影在线观看| 日韩剧情片电影在线收看| 国产精品系列在线观看一区二区 | 人人妻人人爽人人添夜| 日韩人妻丝袜中文字幕| 97国产在线观看高清| 天天日天天操天天摸天天舔| 91老师蜜桃臀大屁股| 中出中文字幕在线观看| 人妻久久无码中文成人| 午夜精品一区二区三区城中村| 瑟瑟视频在线观看免费视频| 国产黄色高清资源在线免费观看| 欧美亚洲牲夜夜综合久久| 免费在线播放a级片| 欧美日韩亚洲国产无线码| 亚洲一区二区三区久久午夜 | 欧美久久久久久三级网| 首之国产AV医生和护士小芳| 人人妻人人爽人人添夜| 天天干天天啪天天舔| 免费成人va在线观看| 黄色片一级美女黄色片| 亚洲中文字幕国产日韩| 99一区二区在线观看| 亚洲综合自拍视频一区| 人妻少妇av在线观看| 日韩中文字幕精品淫| 欧美日韩一区二区电影在线观看| 日本脱亚入欧是指什么| 喷水视频在线观看这里只有精品| 国产成人一区二区三区电影网站| 岛国黄色大片在线观看| 在线国产中文字幕视频| 成人综合亚洲欧美一区| 美日韩在线视频免费看| 欧美亚洲免费视频观看| 亚洲色偷偷综合亚洲AV伊人| 免费av岛国天堂网站| 久久久久只精品国产三级| 亚洲国产美女一区二区三区软件| 顶级尤物粉嫩小尤物网站| 在线观看的黄色免费网站| 一色桃子久久精品亚洲| 18禁免费av网站| 亚洲一区二区三区精品乱码| 天天色天天舔天天射天天爽| 国产精彩对白一区二区三区 | 欧美日韩情色在线观看| 精品91高清在线观看 | 黄色片黄色片wyaa| 日韩美av高清在线| 可以免费看的www视频你懂的| 丝袜国产专区在线观看| 在线免费视频 自拍| 女同性ⅹxx女同h偷拍| 男人操女人的逼免费视频| 久草福利电影在线观看| 曰本无码人妻丰满熟妇啪啪| 99久久99久国产黄毛片| 久久麻豆亚洲精品av| 日辽宁老肥女在线观看视频| 一本一本久久a久久精品综合不卡 亚洲另类综合一区小说 | 中文字幕中文字幕人妻| 日韩无码国产精品强奸乱伦| 久久免费看少妇高潮完整版| 天天操夜夜骑日日摸| 丰满的继坶3中文在线观看| 日本少妇的秘密免费视频| 亚洲国际青青操综合网站| 国产成人精品久久二区91| 欧美精品国产综合久久| 最新激情中文字幕视频| 国产亚洲精品品视频在线| 日本韩国免费一区二区三区视频| 夏目彩春在线中文字幕| 揄拍成人国产精品免费看视频| 青青青爽视频在线播放| 欧美精品欧美极品欧美视频| 欧美日韩亚洲国产无线码| 欧美日韩熟女一区二区三区| 青娱乐最新视频在线| 欧美黑人性暴力猛交喷水| av新中文天堂在线网址| 天天做天天干天天舔| 久久精品国产23696| 中文字幕在线免费第一页| 自拍偷拍亚洲欧美在线视频| 伊拉克及约旦宣布关闭领空| 99热色原网这里只有精品| 黑人解禁人妻叶爱071| 亚洲精品久久综合久| 免费黄色成人午夜在线网站| 中文字幕免费福利视频6| 91久久人澡人人添人人爽乱| 中文字幕午夜免费福利视频| 国产在线免费观看成人| 青青青青青青青在线播放视频| 中文字幕人妻被公上司喝醉在线| 在线制服丝袜中文字幕| 久久h视频在线观看| 大鸡巴插入美女黑黑的阴毛| 亚洲中文字幕乱码区| 玩弄人妻熟妇性色av少妇| 国产男女视频在线播放| 国产精品中文av在线播放| 91色网站免费在线观看| 99热99re在线播放| 99精品国产免费久久| 天天日天天鲁天天操| 一级黄色av在线观看| 午夜福利资源综合激情午夜福利资| 亚洲 图片 欧美 图片| 人妻久久久精品69系列| 专门看国产熟妇的网站| 狠狠躁狠狠爱网站视频| 天天射,天天操,天天说| 亚洲女人的天堂av| 毛茸茸的大外阴中国视频| 91超碰青青中文字幕| 一色桃子久久精品亚洲| 中国产一级黄片免费视频播放| 国产精品久久综合久久| 男女啪啪啪啪啪的网站| 亚洲精品国产综合久久久久久久久| 久草视频 久草视频2| 最后99天全集在线观看| 91国产资源在线视频| 亚洲欧美国产综合777| 在线视频免费观看网| 国产一区二区三免费视频 | 人人妻人人爽人人添夜| 在线视频免费观看网| 最新91精品视频在线| 日曰摸日日碰夜夜爽歪歪| 99精品视频在线观看婷婷| 偷青青国产精品青青在线观看| 中文字幕午夜免费福利视频| 3344免费偷拍视频| 精品av久久久久久久| 岛国免费大片在线观看| 国产麻豆乱子伦午夜视频观看| 亚洲中文字幕乱码区| 日本特级片中文字幕| 日韩av熟妇在线观看| 亚洲最大黄 嗯色 操 啊| 91社福利《在线观看| 少妇高潮一区二区三区| 国产成人午夜精品福利| 国产伊人免费在线播放| 成人精品在线观看视频| 午夜在线精品偷拍一区二| 欧洲欧美日韩国产在线| 日日操综合成人av| 夜夜嗨av蜜臀av| 香港一级特黄大片在线播放| 精品欧美一区二区vr在线观看| 激情人妻校园春色亚洲欧美| 97人人模人人爽人人喊| 成人av久久精品一区二区| www骚国产精品视频| 在线观看国产网站资源| 午夜av一区二区三区| 国产亚洲四十路五十路| 成人国产激情自拍三区| 国产高清在线观看1区2区| 淫秽激情视频免费观看| 亚洲欧美综合在线探花| 99视频精品全部15| 欧美精品 日韩国产| 视频一区 视频二区 视频| 婷婷色国产黑丝少妇勾搭AV| 精品区一区二区三区四区人妻| 99人妻视频免费在线| 青青青国产免费视频| 天天干夜夜操啊啊啊| 中文字幕在线乱码一区二区| 五月婷婷在线观看视频免费| 2020av天堂网在线观看| 在线播放 日韩 av| 视频在线免费观看你懂得| 97欧洲一区二区精品免费| 欧美国品一二三产区区别| 中文字幕人妻av在线观看| 大鸡八强奸视频在线观看| 2017亚洲男人天堂| 国产福利小视频二区| av在线免费观看亚洲天堂| 欧美黑人巨大性xxxxx猛交| 人人人妻人人澡人人| 亚洲人人妻一区二区三区| 国产综合视频在线看片| 香蕉av影视在线观看| 唐人色亚洲av嫩草| 日韩三级电影华丽的外出| 亚洲成人三级在线播放 | 人妻丝袜精品中文字幕| 久久尻中国美女视频| 青草亚洲视频在线观看| 护士特殊服务久久久久久久 | 91中文字幕最新合集| 超碰中文字幕免费观看| 日韩少妇人妻精品无码专区| 婷婷五月亚洲综合在线| 大香蕉福利在线观看| 国产免费高清视频视频| 欧美熟妇一区二区三区仙踪林| 成人乱码一区二区三区av| 成人24小时免费视频| www日韩a级s片av| 爆乳骚货内射骚货内射在线| 久久精品久久精品亚洲人| 边摸边做超爽毛片18禁色戒| 成人久久精品一区二区三区| 亚洲成人国产综合一区| 亚洲超碰97人人做人人爱| 欧美另类重口味极品在线观看| 丝袜美腿欧美另类 中文字幕| 97青青青手机在线视频| 国产又色又刺激在线视频 | 91www一区二区三区| 美女少妇亚洲精选av| 亚洲自拍偷拍精品网| 一区二区视频视频视频| 97人妻夜夜爽二区欧美极品| 色天天天天射天天舔| 久久精品亚洲成在人线a| av乱码一区二区三区| 亚洲一区自拍高清免费视频| 2020国产在线不卡视频| 精品成人午夜免费看| 久久精品久久精品亚洲人| 少妇与子乱在线观看| 只有精品亚洲视频在线观看| 亚洲福利精品福利精品福利| 日辽宁老肥女在线观看视频| 91色网站免费在线观看| 久久免看30视频口爆视频| 在线免费观看黄页视频| 91精品免费久久久久久| 97人妻色免费视频| 欧美亚洲一二三区蜜臀| 一区二区三区四区中文| 亚洲另类伦春色综合小| 班长撕开乳罩揉我胸好爽| 国产午夜亚洲精品麻豆| 日本av在线一区二区三区| 青青青视频手机在线观看| 午夜国产免费福利av| 中文字幕之无码色多多| 精品黑人一区二区三区久久国产| av中文字幕国产在线观看| aiss午夜免费视频| 亚洲精品国产久久久久久| 美女福利视频网址导航| 亚洲精品三级av在线免费观看| 在线观看的黄色免费网站| 自拍偷拍亚洲另类色图| 熟女人妻在线观看视频| 日韩欧美一级aa大片| 国产女孩喷水在线观看| 超碰97人人做人人爱| 国产又粗又硬又猛的毛片视频| 久草视频首页在线观看| 日韩伦理短片在线观看| 99热碰碰热精品a中文| 亚洲va天堂va国产va久| 瑟瑟视频在线观看免费视频| 亚洲av黄色在线网站| 蝴蝶伊人久久中文娱乐网| chinese国产盗摄一区二区| 韩国黄色一级二级三级| 传媒在线播放国产精品一区| 揄拍成人国产精品免费看视频| 免费无毒热热热热热热久| 啊啊好慢点插舔我逼啊啊啊视频| 国产精品视频男人的天堂| 国产卡一卡二卡三乱码手机| 全国亚洲男人的天堂| 午夜蜜桃一区二区三区| 午夜精品一区二区三区更新| 人妻3p真实偷拍一二区| 国产午夜男女爽爽爽爽爽视频| 97资源人妻免费在线视频| 亚洲 欧美 精品 激情 偷拍 | 色综合色综合色综合色| 桃色视频在线观看一区二区 | 日本熟妇喷水xxx| www天堂在线久久| 女生被男生插的视频网站| 亚洲av第国产精品| 亚洲激情唯美亚洲激情图片| 国产黄色a级三级三级三级| av在线资源中文字幕| 亚洲特黄aaaa片| 亚洲国产在线精品国偷产拍| 91综合久久亚洲综合| 国产精品人久久久久久| 亚洲高清免费在线观看视频| 在线观看免费av网址大全| 欧美特级特黄a大片免费| 国产熟妇一区二区三区av| 亚洲欧洲一区二区在线观看| 国产精品一区二区三区蜜臀av | 99久久久无码国产精品性出奶水| av亚洲中文天堂字幕网| 蜜桃精品久久久一区二区| 精品一线二线三线日本| 中文字幕在线视频一区二区三区| 久久亚洲天堂中文对白| 综合激情网激情五月天| 日韩欧美一级精品在线观看| 一区二区三区久久中文字幕| 国产内射中出在线观看| 天堂av在线播放免费| 中文字幕一区二区亚洲一区| 亚洲av黄色在线网站| 国产白嫩美女一区二区| 久久久久五月天丁香社区| 亚洲公开视频在线观看| 中文乱理伦片在线观看| 青草久久视频在线观看| 蜜桃视频在线欧美一区| av在线免费资源站| 国产污污污污网站在线| 久久久噜噜噜久久熟女av| 高潮视频在线快速观看国家快速| 黄色资源视频网站日韩| 午夜精品在线视频一区| 精品黑人巨大在线一区| 91免费福利网91麻豆国产精品 | 欧美精品久久久久久影院| 91精品一区二区三区站长推荐| 欧美黑人与人妻精品| 成人资源在线观看免费官网| 红杏久久av人妻一区| 日本少妇人妻xxxxx18| 免费男阳茎伸入女阳道视频| 18禁美女黄网站色大片下载| 天天日天天日天天射天天干| 91精品国产综合久久久蜜| 91在线免费观看成人| av亚洲中文天堂字幕网| 精彩视频99免费在线| 懂色av之国产精品| 日本熟妇一区二区x x| 中文字幕乱码人妻电影| 国产一区二区欧美三区| 欧美精品欧美极品欧美视频| 成人av在线资源网站| 黄色男人的天堂视频| 福利午夜视频在线合集| 老熟妇凹凸淫老妇女av在线观看| 91免费放福利在线观看| 黄工厂精品视频在线观看| 91精品国产91久久自产久强| 精品首页在线观看视频| 综合一区二区三区蜜臀| 一区二区三区激情在线| 成人蜜桃美臀九一一区二区三区 | 中文字幕国产专区欧美激情| 国产亚洲欧美另类在线观看| aaa久久久久久久久| 在线播放一区二区三区Av无码| 天堂va蜜桃一区入口| 最新激情中文字幕视频| 嫩草aⅴ一区二区三区| 日本www中文字幕| 天天日夜夜操天天摸| heyzo蜜桃熟女人妻| japanese日本熟妇另类| 日韩剧情片电影在线收看| 亚洲av天堂在线播放| 午夜激情高清在线观看| 好男人视频在线免费观看网站| av在线免费观看亚洲天堂| 黄色三级网站免费下载| 阴茎插到阴道里面的视频| 亚洲成a人片777777| 最新中文字幕乱码在线| 日本xx片在线观看| 久久这里有免费精品| 人妻少妇亚洲精品中文字幕| 最后99天全集在线观看| 日韩欧美国产精品91| 欧美成人黄片一区二区三区 | 亚洲精品ww久久久久久| 男人的网址你懂的亚洲欧洲av| 狠狠操狠狠操免费视频| 婷婷午夜国产精品久久久| 中文字幕AV在线免费看 | 抽查舔水白紧大视频| 这里有精品成人国产99| 91天堂天天日天天操| 久久这里只有精彩视频免费| 日韩精品啪啪视频一道免费| 中文字幕1卡1区2区3区| 美日韩在线视频免费看| 亚洲精品久久视频婷婷| 成人资源在线观看免费官网| 亚洲天堂成人在线观看视频网站| 亚洲伊人久久精品影院一美女洗澡| av日韩在线观看大全| 亚洲av自拍偷拍综合| 热久久只有这里有精品| 国产视频在线视频播放| 国产成人精品亚洲男人的天堂| 天天日天天爽天天干| 日韩剧情片电影在线收看| 日韩近亲视频在线观看| av男人天堂狠狠干| 在线观看视频污一区| 在线观看欧美黄片一区二区三区 | 青青草成人福利电影| 啊啊好慢点插舔我逼啊啊啊视频| 国产午夜男女爽爽爽爽爽视频| 婷婷久久久久深爱网| 欧美精品国产综合久久| 18禁美女无遮挡免费| 色秀欧美视频第一页| 青青草亚洲国产精品视频| 天天日天天舔天天射进去| 黑人借宿ntr人妻的沦陷2| 伊人开心婷婷国产av| 国产精品国产三级国产午| 搞黄色在线免费观看| 十八禁在线观看地址免费| 午夜精品福利91av| 福利在线视频网址导航| 99久久99久国产黄毛片| 爆乳骚货内射骚货内射在线| 青青青青青青青青青国产精品视频| 欧美日本在线观看一区二区 | 欧美日韩高清午夜蜜桃大香蕉| 国产品国产三级国产普通话三级| 在线观看亚洲人成免费网址| 抽查舔水白紧大视频| 北条麻妃肉色丝袜视频| 在线观看国产免费麻豆| 免费国产性生活视频| 中文字幕1卡1区2区3区| 成人区人妻精品一区二视频| 桃色视频在线观看一区二区| 天天摸天天日天天操| 亚洲国产欧美一区二区三区…| 天天日天天鲁天天操| 99热久久这里只有精品| 亚洲国产精品中文字幕网站| 久久精品国产亚洲精品166m| 日本成人一区二区不卡免费在线| 精品一区二区三区午夜| 亚洲综合一区成人在线| 蜜桃视频入口久久久| 久久综合老鸭窝色综合久久 | 成人24小时免费视频| 国产卡一卡二卡三乱码手机| 女同互舔一区二区三区| 国产又粗又硬又猛的毛片视频 | 亚洲成高清a人片在线观看| 亚洲国产欧美国产综合在线| 天堂va蜜桃一区入口| 国产女人露脸高潮对白视频| 97瑟瑟超碰在线香蕉| 亚洲av香蕉一区区二区三区犇| 久久久久久国产精品| 天天摸天天干天天操科普| 国产性感美女福利视频| 超碰在线观看免费在线观看| 在线播放一区二区三区Av无码| 四川乱子伦视频国产vip| 少妇人妻久久久久视频黄片| 免费福利av在线一区二区三区| 初美沙希中文字幕在线| 激情伦理欧美日韩中文字幕| 亚洲色偷偷综合亚洲AV伊人| 中文字幕午夜免费福利视频| 欧美精品 日韩国产| 99精品视频之69精品视频| 欧美日韩一级黄片免费观看| 免费看高清av的网站| 久碰精品少妇中文字幕av | 欲乱人妻少妇在线视频裸| 伊人情人综合成人久久网小说| 中文字幕人妻三级在线观看| 国产亚洲精品欧洲在线观看| 骚货自慰被发现爆操| 国产精品自拍视频大全| av成人在线观看一区| 521精品视频在线观看| 抽查舔水白紧大视频| 91精品国产综合久久久蜜| 午夜精品久久久久久99热| 91九色porny国产蝌蚪视频| 国产亚洲视频在线观看| 亚国产成人精品久久久| 91色网站免费在线观看| 大陆胖女人与丈夫操b国语高清| 熟女91pooyn熟女| 亚洲午夜伦理视频在线 | 精品一区二区三区午夜| 亚洲欧美一区二区三区爱爱动图| 偷拍自拍国产在线视频| 久久久久久久久久久久久97| 又黄又刺激的午夜小视频| 亚洲偷自拍高清视频| 亚洲少妇高潮免费观看| 午夜蜜桃一区二区三区| 人妻凌辱欧美丰满熟妇| 日日夜夜精品一二三| 亚洲欧美成人综合视频| 2022中文字幕在线| 久久www免费人成一看片| 亚洲一级av大片免费观看| 日韩伦理短片在线观看| 亚洲va天堂va国产va久| 狠狠操操操操操操操操操| 亚洲国产欧美国产综合在线| 粉嫩小穴流水视频在线观看| 成人蜜臀午夜久久一区| 真实国产乱子伦一区二区| 综合国产成人在线观看| 一区二区三区欧美日韩高清播放| 日本又色又爽又黄又粗| 亚洲欧美另类自拍偷拍色图| 99精品视频在线观看免费播放| 中文字幕第一页国产在线| 国产精品一区二区三区蜜臀av | 亚洲国产欧美一区二区丝袜黑人| 91国语爽死我了不卡| 亚洲午夜高清在线观看| 天天日天天日天天射天天干| 人人妻人人爱人人草| 又粗又硬又猛又爽又黄的| 女同性ⅹxx女同h偷拍| 欧美偷拍亚洲一区二区| av天堂中文免费在线| 中文字幕综合一区二区| 少妇被强干到高潮视频在线观看| 亚洲国产精品美女在线观看| 国产欧美精品免费观看视频| 三级黄色亚洲成人av| 亚洲精品国产久久久久久| 在线视频免费观看网| 国产中文精品在线观看| 自拍偷拍亚洲另类色图| 性欧美日本大妈母与子| 精品少妇一二三视频在线| 天天干天天插天天谢| 亚洲av琪琪男人的天堂| 日本人妻欲求不满中文字幕| 91精品国产高清自在线看香蕉网| 99热碰碰热精品a中文| 黑人巨大的吊bdsm| 免费在线观看污污视频网站| 日韩三级黄色片网站| 特级无码毛片免费视频播放| 在线播放 日韩 av| 人妻最新视频在线免费观看| 色偷偷伊人大杳蕉综合网| 2017亚洲男人天堂| 亚洲av日韩高清hd| av一区二区三区人妻| 丝袜肉丝一区二区三区四区在线| 都市家庭人妻激情自拍视频| 亚洲午夜高清在线观看| 国产一区二区神马久久| 久久久久久97三级| 天美传媒mv视频在线观看| 免费高清自慰一区二区三区网站 | 91福利视频免费在线观看| 国产精品人妻66p| 男人操女人逼逼视频网站| 蜜桃色婷婷久久久福利在线| 天天摸天天亲天天舔天天操天天爽 | 大陆av手机在线观看| 午夜精品久久久久久99热| 国产精品视频欧美一区二区| 久久机热/这里只有| 亚洲在线一区二区欧美| 亚洲熟妇久久无码精品| 久久永久免费精品人妻专区| 中文乱理伦片在线观看| 亚欧在线视频你懂的| 久草极品美女视频在线观看| 亚洲熟女综合色一区二区三区四区| 亚洲午夜精品小视频| 青青草在观免费国产精品| 毛片一级完整版免费| 人妻少妇精品久久久久久| 丝袜肉丝一区二区三区四区在线看| 久久精品国产999| 日噜噜噜夜夜噜噜噜天天噜噜噜| 在线不卡日韩视频播放| 欧美成人黄片一区二区三区| 看一级特黄a大片日本片黑人| 99精品免费久久久久久久久a| 中国把吊插入阴蒂的视频| av一本二本在线观看| 91精品啪在线免费| 欧美精品黑人性xxxx| 在线免费观看欧美小视频| 超级av免费观看一区二区三区| 漂亮 人妻被中出中文| 婷婷色国产黑丝少妇勾搭AV| 在线观看视频 你懂的| 欧美日韩人妻久久精品高清国产 | 亚洲成av人无码不卡影片一| 久久久久久9999久久久久| 熟女视频一区,二区,三区| 插逼视频双插洞国产操逼插洞| 天天躁日日躁狠狠躁躁欧美av| 中文字幕无码一区二区免费| 亚洲一区二区三区uij| 2022天天干天天操| 国产一级麻豆精品免费| 91极品大一女神正在播放| 精品国产亚洲av一淫| 久久这里只有精品热视频 | 丰满熟女午夜福利视频| 岛国av高清在线成人在线| 国产欧美日韩在线观看不卡| 一区二区三区久久久91| 激情人妻校园春色亚洲欧美| 一区二区三区视频,福利一区二区| 人妻凌辱欧美丰满熟妇| 肏插流水妹子在线乐播下载| 亚洲免费国产在线日韩| 一级黄片大鸡巴插入美女| 不卡一区一区三区在线| 亚洲国产成人在线一区| 国产成人自拍视频在线免费观看| 1769国产精品视频免费观看| 动漫av网站18禁| 国产精品自偷自拍啪啪啪| 夜鲁夜鲁狠鲁天天在线| 国产高清在线观看1区2区| 欧美特色aaa大片| 亚洲一区二区久久久人妻| 亚洲欧美激情人妻偷拍| 亚洲一级av大片免费观看| 欧美黑人性猛交xxxxⅹooo| 91在线视频在线精品3| 国产一级麻豆精品免费| 伊拉克及约旦宣布关闭领空| 黄片三级三级三级在线观看| 黄色在线观看免费观看在线| 亚洲av香蕉一区区二区三区犇| 青青擦在线视频国产在线| 国产成人精品福利短视频| 国产亚洲四十路五十路| 99精品一区二区三区的区| 又粗又硬又猛又黄免费30| 国产性感美女福利视频| 人妻av无码专区久久绿巨人| 日韩av大胆在线观看| 人妻少妇性色欲欧美日韩| 日韩国产乱码中文字幕| 成人区人妻精品一区二视频| 老有所依在线观看完整版 | 亚洲av人人澡人人爽人人爱| 在线视频自拍第三页| 欧美日韩在线精品一区二区三| 人妻少妇亚洲一区二区| 亚洲一区二区三区av网站| 中文字幕免费福利视频6| gay gay男男瑟瑟在线网站| 亚洲av日韩av第一区二区三区| 在线免费观看日本伦理| 快插进小逼里大鸡吧视频| 亚洲一区二区三区久久受| 国产日韩欧美美利坚蜜臀懂色| 精品国产成人亚洲午夜| 都市家庭人妻激情自拍视频| 国产精品视频欧美一区二区| 九色视频在线观看免费| 岛国黄色大片在线观看| 一个色综合男人天堂| 一本久久精品一区二区| 久久人人做人人妻人人玩精品vr| 国产精品一二三不卡带免费视频| 视频一区二区在线免费播放| 日韩欧美亚洲熟女人妻| 激情人妻校园春色亚洲欧美| 动漫美女的小穴视频| 懂色av之国产精品| 久草电影免费在线观看| 天天色天天操天天舔| 十八禁在线观看地址免费| 免费一级特黄特色大片在线观看| 大鸡吧插逼逼视频免费看| 亚洲综合另类精品小说| 超碰在线中文字幕一区二区| 午夜免费体验区在线观看| 日韩欧美一级精品在线观看| 99精品视频在线观看免费播放| 国产精品国产三级国产午| 揄拍成人国产精品免费看视频| 91快播视频在线观看| 91‖亚洲‖国产熟女| 91亚洲国产成人精品性色| 51精品视频免费在线观看| 伊人情人综合成人久久网小说 | 搡老妇人老女人老熟女| 巨乳人妻日下部加奈被邻居中出 | 男人天堂色男人av| nagger可以指黑人吗| 视频一区二区三区高清在线| av在线观看网址av| 国产精品三级三级三级| 国产精品伦理片一区二区| 欧美亚洲少妇福利视频| 宅男噜噜噜666国产| 亚洲国产欧美国产综合在线| v888av在线观看视频| 成人av中文字幕一区| 亚洲在线一区二区欧美| 亚洲第一黄色在线观看| 青草亚洲视频在线观看| 天堂女人av一区二区| 一区二区三区久久中文字幕| 国产美女精品福利在线| 自拍偷拍日韩欧美亚洲| 岛国av高清在线成人在线| 一级黄片大鸡巴插入美女| 日韩美在线观看视频黄| av老司机亚洲一区二区| 最新国产精品网址在线观看| 9久在线视频只有精品| 嫩草aⅴ一区二区三区| 91精品免费久久久久久| 5528327男人天堂| 亚洲人妻国产精品综合| 国产日韩精品电影7777| 青青草原网站在线观看| 人妻少妇亚洲一区二区| 国产精品久久久久网| 91she九色精品国产| 国产变态另类在线观看| 视频久久久久久久人妻| 啊啊好慢点插舔我逼啊啊啊视频| 在线观看免费av网址大全| 欧美久久一区二区伊人| 日本女人一级免费片| 在线免费观看亚洲精品电影| 日韩美女搞黄视频免费| 小泽玛利亚视频在线观看| 直接观看免费黄网站| 美日韩在线视频免费看| 婷婷色国产黑丝少妇勾搭AV | 亚洲中文字字幕乱码| 黄片三级三级三级在线观看| 少妇人妻二三区视频 | 精品91高清在线观看| 美女视频福利免费看| 啪啪啪18禁一区二区三区| 香蕉aⅴ一区二区三区| 国产va在线观看精品| 1024久久国产精品| 亚洲人人妻一区二区三区| 天天干天天操天天爽天天摸| 久久久久久97三级| 白白操白白色在线免费视频| 美女在线观看日本亚洲一区| 欧美在线一二三视频| 成人在线欧美日韩国产| 国产精品视频欧美一区二区| 亚洲码av无色中文| 丰满的子国产在线观看| 天天干天天日天天干天天操| 播放日本一区二区三区电影| 亚洲一级 片内射视正片| 99久久成人日韩欧美精品| 黄色资源视频网站日韩| 亚洲Av无码国产综合色区| 青青尤物在线观看视频网站| 国产精品亚洲在线观看| 2022天天干天天操| 久久久精品国产亚洲AV一| 97人妻人人澡爽人人精品| 噜噜色噜噜噜久色超碰| 日本三极片视频网站观看| 黄色视频成年人免费观看| 偷拍自拍视频图片免费| 欧美 亚洲 另类综合| 亚洲免费在线视频网站| 黄色大片男人操女人逼| 天天干天天操天天玩天天射 | 久久亚洲天堂中文对白| 亚洲av男人天堂久久| 国产精选一区在线播放| 超级碰碰在线视频免费观看| 欧美亚洲免费视频观看| 夜夜骑夜夜操夜夜奸| 免费看高清av的网站| 中文字幕高清资源站| 51国产偷自视频在线播放| 三级黄色亚洲成人av| 91天堂天天日天天操| 久久www免费人成一看片| 晚上一个人看操B片| asmr福利视频在线观看| 大香蕉大香蕉在线看| 国产视频网站一区二区三区| 久久久久国产成人精品亚洲午夜| 最新中文字幕乱码在线| 亚洲少妇人妻无码精品| 91国产在线视频免费观看| 最近中文2019年在线看| 在线观看欧美黄片一区二区三区 | av高潮迭起在线观看| 麻豆精品成人免费视频| 欧美一级色视频美日韩| 都市激情校园春色狠狠| 天堂中文字幕翔田av| 99久久久无码国产精品性出奶水| 日日夜夜狠狠干视频| 大尺度激情四射网站| 国产福利小视频大全| 天天操天天干天天艹| 婷婷五月亚洲综合在线| 男人的网址你懂的亚洲欧洲av| 国产精品欧美日韩区二区| 熟妇一区二区三区高清版| 亚洲人妻av毛片在线| 少妇高潮无套内谢麻豆| 又粗又硬又猛又黄免费30| 精品美女久久久久久| 黑人大几巴狂插日本少妇| 搞黄色在线免费观看| 国产va在线观看精品| 黄色三级网站免费下载| 蜜臀av久久久久蜜臀av麻豆| 老司机福利精品免费视频一区二区| 大香蕉玖玖一区2区| 亚洲一区久久免费视频| 国产真实乱子伦a视频 | 亚洲视频乱码在线观看| 免费看美女脱光衣服的视频| 久草电影免费在线观看| 韩国三级aaaaa高清视频| av在线播放国产不卡| 国产熟妇一区二区三区av| 大肉大捧一进一出好爽在线视频 | 亚洲成人国产av在线| 美女在线观看日本亚洲一区| 精品高潮呻吟久久av| 久久久久久久久久一区二区三区 | 亚洲国产欧美一区二区三区久久| AV无码一区二区三区不卡| 人妻熟女中文字幕aⅴ在线| 中国黄片视频一区91| 亚洲va天堂va国产va久| 亚洲欧洲一区二区在线观看| 91欧美在线免费观看| 91免费福利网91麻豆国产精品| 青青尤物在线观看视频网站| 亚洲自拍偷拍精品网| 亚洲公开视频在线观看| 福利视频网久久91| 天天做天天干天天舔| 欧美成一区二区三区四区| 日本在线不卡免费视频| 男人操女人的逼免费视频| 色哟哟在线网站入口| 国产 在线 免费 精品| 国产成人一区二区三区电影网站| 亚洲激情av一区二区| 午夜精品九一唐人麻豆嫩草成人| 十八禁在线观看地址免费| 精品一区二区三区三区88| 日本av熟女在线视频| 2022中文字幕在线| 国产又粗又猛又爽又黄的视频在线| 亚洲欧美成人综合视频| 欧美综合婷婷欧美综合| 亚洲国产成人无码麻豆艾秋| 天美传媒mv视频在线观看| 欧美亚洲一二三区蜜臀| 又粗又硬又猛又黄免费30| 美女福利视频网址导航| 婷婷五月亚洲综合在线| 亚洲另类伦春色综合小| 这里只有精品双飞在线播放| 国产精品欧美日韩区二区| 玩弄人妻熟妇性色av少妇| 日本美女性生活一级片| 亚洲第17页国产精品| 最新中文字幕免费视频| 国产V亚洲V天堂无码欠欠| av手机免费在线观看高潮| 性生活第二下硬不起来| 欧美老鸡巴日小嫩逼| 欧美激情精品在线观看| 动色av一区二区三区| 欧美亚洲国产成人免费在线| 欧美少妇性一区二区三区| 欧美麻豆av在线播放| 大鸡吧插逼逼视频免费看| 色综合久久五月色婷婷综合| 在线免费观看亚洲精品电影| 日韩在线视频观看有码在线| av久久精品北条麻妃av观看| huangse网站在线观看| 99re6热在线精品| 欧美日本在线视频一区| 99久久激情婷婷综合五月天| 亚洲激情唯美亚洲激情图片| 亚洲av香蕉一区区二区三区犇| avjpm亚洲伊人久久| 精品成人午夜免费看| 日本午夜爽爽爽爽爽视频在线观看| 亚洲精品麻豆免费在线观看| 亚洲va国产va欧美va在线| 狠狠躁狠狠爱网站视频| 中文字幕av第1页中文字幕| 色噜噜噜噜18禁止观看| 日韩美女搞黄视频免费| 特黄老太婆aa毛毛片| 日本韩国免费福利精品| 揄拍成人国产精品免费看视频| 天天日天天添天天爽| 日本后入视频在线观看| 国产精品一区二区三区蜜臀av| 在线免费观看日本伦理| 久久www免费人成一看片| 日韩午夜福利精品试看| 国产福利小视频大全| 国产亚洲成人免费在线观看| 三上悠亚和黑人665番号| 国产精品成人xxxx| 青青青青青手机视频| 视频一区 视频二区 视频| 在线不卡日韩视频播放| 18禁免费av网站| 欧美va亚洲va天堂va| 日韩精品二区一区久久| 97国产精品97久久| 红桃av成人在线观看| 青青青青青青青青青青草青青| 一色桃子人妻一区二区三区| 韩国三级aaaaa高清视频 | 精品人妻每日一部精品| 2017亚洲男人天堂| 亚洲高清国产一区二区三区| 男生舔女生逼逼视频| 亚洲丝袜老师诱惑在线观看| 国产麻豆精品人妻av| 91欧美在线免费观看| 欧美精品一二三视频| 久久精品国产亚洲精品166m| 国产在线观看黄色视频| 亚洲福利午夜久久久精品电影网| 好太好爽好想要免费| 日韩成人性色生活片| 中国黄片视频一区91| 天天操天天干天天日狠狠插 | 99热久久这里只有精品8| 在线视频国产欧美日韩| 中文字幕一区二区人妻电影冢本| 日韩av大胆在线观看| 亚洲av无女神免非久久| 国产在线拍揄自揄视频网站| 999九九久久久精品| 女蜜桃臀紧身瑜伽裤| 欧美亚洲偷拍自拍色图| 免费岛国喷水视频在线观看| 国产综合精品久久久久蜜臀| 亚洲成av人无码不卡影片一| 经典亚洲伊人第一页| 狠狠地躁夜夜躁日日躁| 无码日韩人妻精品久久| 最新日韩av传媒在线| 自拍偷拍亚洲另类色图| rct470中文字幕在线| 天天操天天干天天日狠狠插 | 黑人解禁人妻叶爱071| 国产免费高清视频视频| 久久久人妻一区二区| 9色在线视频免费观看| 成年人啪啪视频在线观看| 亚洲国产精品久久久久蜜桃| 国产精品亚洲а∨天堂免| 日韩欧美亚洲熟女人妻| 人妻丝袜av在线播放网址| 精品一区二区亚洲欧美| 91精品视频在线观看免费| 日本成人不卡一区二区| 日本三极片中文字幕| 国产视频在线视频播放| 少妇露脸深喉口爆吞精| 日韩av大胆在线观看| 91国内精品自线在拍白富美| 在线网站你懂得老司机| 国产之丝袜脚在线一区二区三区 | 国产欧美精品一区二区高清| 五月精品丁香久久久久福利社| 中文字幕在线第一页成人| 91久久国产成人免费网站| 亚洲国产精品久久久久蜜桃| 亚洲一区二区三区久久午夜| 精品一区二区三区在线观看| 亚洲综合在线视频可播放| 一区二区三区久久中文字幕| 国产片免费观看在线观看| 亚洲Av无码国产综合色区| 人妻久久久精品69系列| 亚洲高清国产一区二区三区| 成人福利视频免费在线| 丝袜肉丝一区二区三区四区在线看| 国产精品国产三级麻豆| 最近中文2019年在线看| 精品首页在线观看视频| 国产精品手机在线看片| 免费大片在线观看视频网站| 精品人妻伦一二三区久 | 天天日天天干天天舔天天射| av中文字幕福利网| 视频一区二区综合精品| 在线免费观看日本伦理| 免费人成黄页网站在线观看国产| 日韩精品电影亚洲一区| 欧美一区二区三区乱码在线播放| 大香蕉福利在线观看| 2022国产精品视频| 国产大鸡巴大鸡巴操小骚逼小骚逼| 一本久久精品一区二区| 国产精品久久久久久久女人18| 国产视频精品资源网站| 久久免看30视频口爆视频| 色综合久久无码中文字幕波多| av在线免费资源站| 视频久久久久久久人妻| 亚洲成人三级在线播放| 亚洲精品麻豆免费在线观看| 国产精品一区二区久久久av| 精品一区二区三区三区88| 亚洲国产欧美一区二区三区…| av俺也去在线播放| 亚洲丝袜老师诱惑在线观看| 成人免费公开视频无毒| 欧美aa一级一区三区四区| 888亚洲欧美国产va在线播放| 97成人免费在线观看网站| 天堂va蜜桃一区入口| 黑人巨大精品欧美视频| 久久这里只有精彩视频免费| 亚洲一区二区三区久久午夜| 97超碰免费在线视频| 青草亚洲视频在线观看| 国产一级麻豆精品免费| 午夜av一区二区三区| 久久丁香婷婷六月天| 中文人妻AV久久人妻水| 中文字幕在线第一页成人 | a v欧美一区=区三区| 漂亮 人妻被中出中文| 午夜精品九一唐人麻豆嫩草成人 | av男人天堂狠狠干| 扒开腿挺进肉嫩小18禁视频| 亚洲自拍偷拍综合色| 亚洲天堂有码中文字幕视频| 大鸡巴操b视频在线| 337p日本大胆欧美人| 日本人竟这样玩学生妹| 国产麻豆国语对白露脸剧情| 色吉吉影音天天干天天操| 国产欧美精品一区二区高清| 国产一区二区久久久裸臀| 国产视频网站国产视频| 日韩精品激情在线观看| 少妇露脸深喉口爆吞精| 91精品啪在线免费| 欧美一区二区三区高清不卡tv| 亚洲欧美人精品高清| 中文字幕在线欧美精品| 日本熟女精品一区二区三区| 偷拍自拍国产在线视频| 国产之丝袜脚在线一区二区三区| 色婷婷六月亚洲综合香蕉| 懂色av蜜桃a v| 色呦呦视频在线观看视频| 亚洲一区二区久久久人妻| 青青青青青免费视频| 青青青视频手机在线观看| 亚洲欧美另类手机在线| 亚洲一区二区三区uij| 亚洲一区二区三区精品乱码| 亚洲高清一区二区三区视频在线| 成人亚洲精品国产精品| 中文字幕亚洲久久久| 日日操夜夜撸天天干| 国产精品探花熟女在线观看| 东游记中文字幕版哪里可以看到| 天天日天天干天天舔天天射| 久久免看30视频口爆视频| 都市激情校园春色狠狠| 999热精品视频在线| 99国内小视频在现欢看| av中文字幕在线观看第三页| 黄色三级网站免费下载| 国产大鸡巴大鸡巴操小骚逼小骚逼| 中文字幕日韩精品日本| 国产亚州色婷婷久久99精品| 亚洲精品av在线观看| 狠狠嗨日韩综合久久| 操的小逼流水的文章| 欧美精品一区二区三区xxxx| 日美女屁股黄邑视频| 国产麻豆精品人妻av| 亚洲另类伦春色综合小| 沙月文乃人妻侵犯中文字幕在线| 婷婷六月天中文字幕| 午夜激情精品福利视频| 97人人模人人爽人人喊| 97少妇精品在线观看| 欧美精品亚洲精品日韩在线| 夜色撩人久久7777| 欧美亚洲少妇福利视频| 人妻久久无码中文成人| 亚洲高清免费在线观看视频| 3344免费偷拍视频| 99一区二区在线观看| 欧美爆乳肉感大码在线观看| 中文字幕1卡1区2区3区| 青青青青操在线观看免费| 97国产精品97久久| 亚洲一区二区三区uij| 日本av高清免费网站| 成人免费做爰高潮视频| 密臀av一区在线观看| 中文字幕免费在线免费| 色爱av一区二区三区| 人妻在线精品录音叫床| 日本av高清免费网站| 91九色porny蝌蚪国产成人| 夫妻在线观看视频91| 岛国一区二区三区视频在线| 青青草原网站在线观看| 91天堂天天日天天操| 一个色综合男人天堂| 日本特级片中文字幕| 中文字母永久播放1区2区3区| 日韩精品中文字幕播放| 亚洲卡1卡2卡三卡四老狼| 国产日韩欧美美利坚蜜臀懂色| 日韩av有码一区二区三区4| 日本少妇精品免费视频| 福利午夜视频在线观看| 美女被肏内射视频网站| 97人人妻人人澡人人爽人人精品| 欧美精品免费aaaaaa| 美女骚逼日出水来了| 成年午夜影片国产片| 中文字幕免费在线免费| 中国黄片视频一区91| 色av色婷婷人妻久久久精品高清| 孕妇奶水仑乱A级毛片免费看| 黄色的网站在线免费看| 青青草成人福利电影| 国产福利小视频免费观看| 亚洲中文字幕人妻一区| 国产va在线观看精品| 亚洲精品国品乱码久久久久| 青青草国内在线视频精选| 亚洲中文精品字幕在线观看| 果冻传媒av一区二区三区| 天天日天天天天天天天天天天| 国产在线免费观看成人| 国产日韩欧美视频在线导航| 亚洲激情av一区二区| 啊用力插好舒服视频| 日韩av中文在线免费观看| 在线免费观看国产精品黄色| 开心 色 六月 婷婷| 偷拍自拍 中文字幕| 风流唐伯虎电视剧在线观看| 91福利在线视频免费观看| 国产91嫩草久久成人在线视频| 人人妻人人澡欧美91精品| 5528327男人天堂| 国产熟妇乱妇熟色T区| 岳太深了紧紧的中文字幕| 2017亚洲男人天堂| 在线观看操大逼视频| 一个人免费在线观看ww视频| 9国产精品久久久久老师| 爱爱免费在线观看视频| 青青草人人妻人人妻| 在线亚洲天堂色播av电影| 天天操天天弄天天射| 天天色天天操天天透| 亚洲图片欧美校园春色| 精品首页在线观看视频| 日本黄色特一级视频| 不戴胸罩引我诱的隔壁的人妻| 天堂va蜜桃一区入口| 久久亚洲天堂中文对白| 97a片免费在线观看| 国产视频一区二区午夜| 91精品高清一区二区三区| 亚洲国产美女一区二区三区软件| 日比视频老公慢点好舒服啊| 亚洲一级av大片免费观看| 99精品视频在线观看免费播放| 亚洲精品国产在线电影| 国产亚洲成人免费在线观看| 人妻丰满熟妇综合网| 国产妇女自拍区在线观看| 日本美女成人在线视频| 337p日本大胆欧美人| 国产97视频在线精品| 国产精品黄色的av| 成人免费公开视频无毒| 久久综合老鸭窝色综合久久| 亚洲少妇高潮免费观看| 极品性荡少妇一区二区色欲| 天码人妻一区二区三区在线看| 99国内小视频在现欢看| 在线观看911精品国产| 久久精品36亚洲精品束缚| 国产精品自拍偷拍a| 亚洲国产第一页在线观看| 成年午夜免费无码区| 天天日天天日天天射天天干| 亚洲av黄色在线网站| 日本啪啪啪啪啪啪啪| 亚洲精品久久视频婷婷| 国产免费av一区二区凹凸四季| 97成人免费在线观看网站| 欧美精产国品一二三产品价格| 精品久久久久久久久久中文蒉| 国产视频网站国产视频| 精品视频中文字幕在线播放| 日韩av大胆在线观看| 91中文字幕免费在线观看| 天天色天天舔天天射天天爽| 日本人妻欲求不满中文字幕| 欧美黑人巨大性xxxxx猛交| 高潮喷水在线视频观看| 国产又粗又猛又爽又黄的视频在线| 2020中文字幕在线播放| 午夜激情高清在线观看| 天天射,天天操,天天说| 中文字幕在线第一页成人| 97资源人妻免费在线视频| 少妇系列一区二区三区视频| 国产黄色大片在线免费播放| 亚洲激情,偷拍视频| 久久这里有免费精品| 色哟哟国产精品入口| 男女第一次视频在线观看| 中文字幕在线观看国产片| 大香蕉日本伊人中文在线| 精品国产乱码一区二区三区乱| 婷婷综合蜜桃av在线| 亚洲精品 日韩电影| 一区二区三区日韩久久| 一区二区三区毛片国产一区| 日本又色又爽又黄又粗| 久久久久久9999久久久久| 亚洲 图片 欧美 图片| 青青青青草手机在线视频免费看 | 日本韩国免费一区二区三区视频| 中文字幕 亚洲av| 懂色av蜜桃a v| 亚洲男人的天堂a在线| 天堂资源网av中文字幕| 在线国产日韩欧美视频| 亚洲成人国产综合一区| 日本真人性生活视频免费看| 天天日天天干天天插舔舔| 成人免费毛片aaaa| 91老熟女连续高潮对白| 超碰中文字幕免费观看| www天堂在线久久| 国产精品熟女久久久久浪潮| 99热99这里精品6国产| 岛国av高清在线成人在线| 不卡一不卡二不卡三| 国产又粗又猛又爽又黄的视频美国| wwwxxx一级黄色片| 人人妻人人爱人人草| 亚洲精品久久综合久| 麻豆性色视频在线观看| 五十路丰满人妻熟妇| 午夜毛片不卡在线看| 天天操,天天干,天天射| 啊啊好大好爽啊啊操我啊啊视频 | 午夜大尺度无码福利视频| 后入美女人妻高清在线| 午夜精品一区二区三区4| av乱码一区二区三区| 91九色porny国产蝌蚪视频| 成人av亚洲一区二区| 蜜桃视频17c在线一区二区| 欧美精品伦理三区四区| 99精品亚洲av无码国产另类 | 午夜在线观看一区视频| 久久h视频在线观看| 亚洲av极品精品在线观看| 久久精品国产999| 久久这里有免费精品| 欧美黑人与人妻精品| 夜鲁夜鲁狠鲁天天在线| 日韩精品中文字幕在线| 一二三中文乱码亚洲乱码one| 啪啪啪啪啪啪啪啪啪啪黄色| 人妻无码中文字幕专区| 动色av一区二区三区| 亚洲国产欧美一区二区丝袜黑人 | 欧美成人黄片一区二区三区| 99热这里只有国产精品6| av森泽佳奈在线观看| 91欧美在线免费观看| 一级黄色av在线观看| 黄色片黄色片wyaa| 国产精品视频资源在线播放| 日本www中文字幕| 日韩二区视频一线天婷婷五| 青青草原色片网站在线观看| 在线免费观看视频一二区| 国产片免费观看在线观看| 日比视频老公慢点好舒服啊| 亚洲综合在线观看免费| 2021天天色天天干| 偷拍自拍 中文字幕| 天天日天天操天天摸天天舔 | 欧美亚洲国产成人免费在线 | 绯色av蜜臀vs少妇| 日韩视频一区二区免费观看| 色综合色综合色综合色| 亚洲国产中文字幕啊啊啊不行了 | 免费一级特黄特色大片在线观看| 国产第一美女一区二区三区四区| 2o22av在线视频| 日本三极片中文字幕| 国产高清97在线观看视频| 日本一区美女福利视频| 亚洲人妻视频在线网| 亚洲成人线上免费视频观看| 97人人妻人人澡人人爽人人精品| 天天日天天干天天搡| 9l人妻人人爽人人爽| 97年大学生大白天操逼| 久久久久久cao我的性感人妻| 亚洲av日韩av第一区二区三区| 亚洲另类综合一区小说| 中国无遮挡白丝袜二区精品| 国产精品系列在线观看一区二区 | 黄片大全在线观看观看| 2017亚洲男人天堂| 天天躁日日躁狠狠躁躁欧美av | 欧美日韩熟女一区二区三区| 91麻豆精品传媒国产黄色片| 97年大学生大白天操逼| 91成人在线观看免费视频| 亚洲变态另类色图天堂网| 欧美日韩亚洲国产无线码| 99精品视频之69精品视频 | 国产福利小视频免费观看| 韩国男女黄色在线观看| 999九九久久久精品| 9色精品视频在线观看| 亚洲图库另类图片区| 人妻自拍视频中国大陆| 久久丁香婷婷六月天| 欧洲亚洲欧美日韩综合| 国产高清在线观看1区2区| 不卡精品视频在线观看| 在线观看911精品国产| 国产福利小视频免费观看| 欧美第一页在线免费观看视频| 午夜在线观看岛国av,com| 青青青青青手机视频| 欧美一区二区三区高清不卡tv| 亚洲精品精品国产综合| 欧美日韩高清午夜蜜桃大香蕉| 99热色原网这里只有精品| 国产成人午夜精品福利| 中出中文字幕在线观看| 自拍偷拍vs一区二区三区| av高潮迭起在线观看| 国产精品国产三级国产午| 女生自摸在线观看一区二区三区| 久久精品国产亚洲精品166m| 免费看美女脱光衣服的视频| 动漫美女的小穴视频| 欧美一级片免费在线成人观看| 97国产福利小视频合集| 天天夜天天日天天日| 天天色天天操天天舔| 亚洲av香蕉一区区二区三区犇| 中文字幕之无码色多多| 免费福利av在线一区二区三区| 日韩精品中文字幕播放| 巨乳人妻日下部加奈被邻居中出 | 91久久综合男人天堂| 玖玖一区二区在线观看| 操操网操操伊剧情片中文字幕网| 男人操女人的逼免费视频| 免费福利av在线一区二区三区| 国产伊人免费在线播放| 在线新三级黄伊人网| 国产大学生援交正在播放| 色97视频在线播放| 日本性感美女写真视频| 午夜激情久久不卡一区二区 | 亚洲综合在线观看免费| 婷婷久久久综合中文字幕| 日本午夜爽爽爽爽爽视频在线观看| 青青青国产免费视频| 亚洲福利精品福利精品福利| 老有所依在线观看完整版| 久久丁香花五月天色婷婷| 麻豆精品成人免费视频| 欧美韩国日本国产亚洲| 国内精品在线播放第一页| 免费岛国喷水视频在线观看| 97人人妻人人澡人人爽人人精品| 51国产成人精品视频| 91综合久久亚洲综合| 亚洲特黄aaaa片| 中文字幕1卡1区2区3区| 国产精品亚洲在线观看| 五十路熟女人妻一区二区9933| 一区二区三区四区视频| 国产精品午夜国产小视频| 免费69视频在线看| 精内国产乱码久久久久久| 一级黄片久久久久久久久| 一区国内二区日韩三区欧美| 精品人妻一二三区久久| av高潮迭起在线观看| 免费看国产又粗又猛又爽又黄视频 | 一级黄色片夫妻性生活| 欧美80老妇人性视频| 欧美日韩中文字幕欧美| 国产a级毛久久久久精品| 国产91嫩草久久成人在线视频| 99热久久极品热亚洲| 中文字幕日韩精品日本| 国产一区二区神马久久| tube69日本少妇| 337p日本大胆欧美人| 中文字幕在线第一页成人| 男人在床上插女人视频| 日本美女成人在线视频| 成人高清在线观看视频| 国产精品国产三级麻豆| 国产福利小视频二区| 在线 中文字幕 一区| 91啪国自产中文字幕在线| 久久久麻豆精亚洲av麻花| 中文亚洲欧美日韩无线码| 欧美中国日韩久久精品| 狠狠躁夜夜躁人人爽天天天天97| 午夜蜜桃一区二区三区| 999热精品视频在线| 日韩欧美一级aa大片| 亚洲色偷偷综合亚洲AV伊人| 久久艹在线观看视频| 大屁股熟女一区二区三区| 在线制服丝袜中文字幕| 国产aⅴ一线在线观看| 日本性感美女视频网站| 精品黑人一区二区三区久久国产 | av无限看熟女人妻另类av| 春色激情网欧美成人| 91老师蜜桃臀大屁股| 成人av天堂丝袜在线观看 | 中文字幕之无码色多多| 美女吃鸡巴操逼高潮视频| 国产白袜脚足J棉袜在线观看| 欧美日韩一级黄片免费观看| 91极品新人『兔兔』精品新作| 97年大学生大白天操逼| 亚洲激情,偷拍视频| 中文字幕AV在线免费看 | 日本少妇高清视频xxxxx| AV无码一区二区三区不卡| 免费黄高清无码国产| 亚洲区欧美区另类最新章节| 三上悠亚和黑人665番号| ka0ri在线视频| 日韩亚国产欧美三级涩爱| 中文字幕一区的人妻欧美日韩| 91精品啪在线免费| 最新黄色av网站在线观看| 深田咏美亚洲一区二区| 香蕉av影视在线观看| 国产日韩一区二区在线看| 亚洲精品欧美日韩在线播放 | 国产成人一区二区三区电影网站| 婷婷综合亚洲爱久久| 免费黄高清无码国产| 九色porny九色9l自拍视频| 精品久久婷婷免费视频| 欧美性感尤物人妻在线免费看| 操的小逼流水的文章| 亚洲欧美综合在线探花| 亚洲人妻国产精品综合| 亚洲区美熟妇久久久久| 狠狠鲁狠狠操天天晚上干干| 亚洲天天干 夜夜操| 视频一区二区三区高清在线| 99久久激情婷婷综合五月天| 亚洲一级特黄特黄黄色录像片| 国产va在线观看精品| 欧美交性又色又爽又黄麻豆| 日本少妇人妻xxxxx18| japanese日本熟妇另类| 2018在线福利视频| 欧美黄片精彩在线免费观看| 亚洲免费国产在线日韩| 老熟妇凹凸淫老妇女av在线观看| 欧美日韩熟女一区二区三区| 在线免费观看99视频| 老司机福利精品视频在线| 成人18禁网站在线播放| 成年人黄色片免费网站| 一区二区三区综合视频| 日韩在线视频观看有码在线| av大全在线播放免费| 操日韩美女视频在线免费看 | av新中文天堂在线网址| 亚洲国产成人无码麻豆艾秋| 伊人情人综合成人久久网小说 | 天天操天天爽天天干| 色噜噜噜噜18禁止观看| asmr福利视频在线观看| 亚洲精品色在线观看视频| 在线免费观看99视频| 欧美熟妇一区二区三区仙踪林| 欧美另类重口味极品在线观看| 欧美色婷婷综合在线| 日本韩国免费福利精品| 91免费放福利在线观看| 在线成人日韩av电影| 东京热男人的av天堂| 91天堂天天日天天操| 二区中出在线观看老师| 青青热久免费精品视频在线观看 | 欧美性受xx黑人性猛交| 香蕉片在线观看av| 91国内精品自线在拍白富美| 97青青青手机在线视频| 91精品国产黑色丝袜| 亚洲一区二区三区av网站| 欧美亚洲偷拍自拍色图| 伊人情人综合成人久久网小说| 一区二区三区av高清免费| 亚洲男人的天堂a在线| 日韩一区二区三区三州| 亚洲av男人天堂久久| 亚洲精品一区二区三区老狼| 人妻久久久精品69系列| 亚洲综合乱码一区二区| 欧亚日韩一区二区三区观看视频| 中文字幕—97超碰网| 欧美区一区二区三视频| 国产精选一区在线播放| 亚洲成人熟妇一区二区三区| 六月婷婷激情一区二区三区| 制服丝袜在线人妻中文字幕| 91超碰青青中文字幕| 91九色porny国产在线| 日本午夜爽爽爽爽爽视频在线观看| 啪啪啪啪啪啪啪啪av| 在线观看一区二区三级| free性日本少妇| 日本av熟女在线视频| 精品视频中文字幕在线播放| 99人妻视频免费在线| 91精品国产91久久自产久强| 亚洲精品ww久久久久久| 久久香蕉国产免费天天| aⅴ精产国品一二三产品| 日本少妇的秘密免费视频| 日本免费午夜视频网站| 狠狠躁夜夜躁人人爽天天天天97 | 黑人进入丰满少妇视频| 一区二区三区另类在线| 亚国产成人精品久久久| 社区自拍揄拍尻屁你懂的| 亚洲欧洲一区二区在线观看| 91chinese在线视频| 欲满人妻中文字幕在线| 四川乱子伦视频国产vip| 丝袜长腿第一页在线| 日本女大学生的黄色小视频| 天天日天天日天天射天天干| 久久久久久久久久久免费女人| 天天插天天色天天日| 激情国产小视频在线| 日韩精品啪啪视频一道免费| gogo国模私拍视频| 午夜免费体验区在线观看| 78色精品一区二区三区| 美女 午夜 在线视频| 四川乱子伦视频国产vip| 100%美女蜜桃视频| 亚洲福利午夜久久久精品电影网| 亚洲高清国产自产av| 亚洲一级美女啪啪啪| 亚洲精品高清自拍av| 人妻在线精品录音叫床| 免费啪啪啪在线观看视频| 亚洲公开视频在线观看| 中文字幕成人日韩欧美| 人妻爱爱 中文字幕| 国产久久久精品毛片| 亚洲一区二区三区久久午夜 | 亚洲乱码中文字幕在线| 国产在线自在拍91国语自产精品| 国产熟妇人妻ⅹxxxx麻豆| 66久久久久久久久久久| 欧美地区一二三专区| 自拍偷拍一区二区三区图片| 日视频免费在线观看| 久久尻中国美女视频| 视频二区在线视频观看| 国产精品视频欧美一区二区| 亚洲丝袜老师诱惑在线观看| 日本乱人一区二区三区| 综合色区亚洲熟妇shxstz| 人人妻人人人操人人人爽| 啊啊好大好爽啊啊操我啊啊视频 | 天天日天天天天天天天天天天| 色婷婷久久久久swag精品| 免费观看丰满少妇做受| 美女av色播在线播放| 都市家庭人妻激情自拍视频| 十八禁在线观看地址免费| 欧美精产国品一二三产品区别大吗| av中文字幕电影在线看| 亚洲国产欧美一区二区三区…| 精品乱子伦一区二区三区免费播| 护士小嫩嫩又紧又爽20p| 精彩视频99免费在线| 国产成人小视频在线观看无遮挡| 老熟妇凹凸淫老妇女av在线观看| 夜夜操,天天操,狠狠操| 日视频免费在线观看| 美女张开两腿让男人桶av| 人妻丝袜榨强中文字幕| 又色又爽又黄的美女裸体| 91成人精品亚洲国产| 成人av免费不卡在线观看| 亚洲免费国产在线日韩| 欧美日韩在线精品一区二区三| 成年美女黄网站18禁久久| 亚洲中文字幕人妻一区| 男女啪啪视频免费在线观看| 亚洲福利精品福利精品福利| 亚洲人妻国产精品综合| 人妻少妇av在线观看| 午夜精品一区二区三区福利视频| av网址国产在线观看| 特级欧美插插插插插bbbbb| 精品一区二区亚洲欧美| 国产黑丝高跟鞋视频在线播放| 亚洲综合图片20p| 夜夜嗨av一区二区三区中文字幕| 国产麻豆国语对白露脸剧情 | 欧美xxx成人在线| 欧洲精品第一页欧洲精品亚洲| 91精品高清一区二区三区| 中文字幕高清在线免费播放 | 黄色录像鸡巴插进去| 99精品视频之69精品视频 | 天天摸天天日天天操| 国产欧美日韩第三页| weyvv5国产成人精品的视频| 欧美在线一二三视频| 最新日韩av传媒在线| 香港一级特黄大片在线播放| 国产精品国产三级国产精东| 亚洲人成精品久久久久久久| 韩国爱爱视频中文字幕| 性欧美日本大妈母与子| av在线观看网址av| 97青青青手机在线视频| 亚洲成人国产综合一区| 中国把吊插入阴蒂的视频| 中文字幕av第1页中文字幕| 成人免费公开视频无毒 | 91香蕉成人app下载| 日本一区精品视频在线观看| 亚洲精品精品国产综合| 国产成人一区二区三区电影网站| 最新黄色av网站在线观看| 亚洲2021av天堂| 国产视频一区二区午夜| 在线观看黄色成年人网站| 国产精品污污污久久| 中国熟女一区二区性xx| 亚洲最大黄了色网站| 日本xx片在线观看| 久久尻中国美女视频| 成人免费公开视频无毒| 日本一二三中文字幕| 最新91九色国产在线观看| 超碰97人人澡人人| 真实国模和老外性视频| 亚洲综合乱码一区二区| av中文字幕电影在线看| 中文字幕av第1页中文字幕| 国产女人露脸高潮对白视频| 天天操天天干天天艹| 国产麻豆国语对白露脸剧情 | 91亚洲精品干熟女蜜桃频道 | 小泽玛利亚视频在线观看| 国产三级影院在线观看| 亚洲精品在线资源站| huangse网站在线观看| 国产成人综合一区2区| 中文字幕乱码人妻电影| 男人天堂色男人av| 熟女人妻在线观看视频| 亚洲精品久久综合久| 亚洲人一区二区中文字幕| 国产成人精品福利短视频| 高清成人av一区三区| 午夜精彩视频免费一区| 欧美中国日韩久久精品| 日韩欧美一级黄片亚洲| 日韩在线视频观看有码在线| 99re久久这里都是精品视频| 国产免费高清视频视频| 亚洲成人线上免费视频观看| 免费男阳茎伸入女阳道视频| 久久机热/这里只有| 欧美精产国品一二三区| 国产黄网站在线观看播放| 亚洲成人精品女人久久久| 天天日天天舔天天射进去| 日本av在线一区二区三区| 亚洲天堂精品久久久| 超碰97人人澡人人| 麻豆精品成人免费视频| 成年人黄色片免费网站| 免费男阳茎伸入女阳道视频| 一区二区三区欧美日韩高清播放| 亚洲欧美一区二区三区电影| 91久久精品色伊人6882| 中文字幕在线观看极品视频| 亚洲高清国产一区二区三区| 99国产精品窥熟女精品| 91中文字幕最新合集| 好吊操视频这里只有精品| 这里只有精品双飞在线播放| 人人在线视频一区二区| 又色又爽又黄又刺激av网站| 天天做天天干天天操天天射| 中文字幕日韩精品就在这里| 五月婷婷在线观看视频免费| 99re6热在线精品| 国产又色又刺激在线视频 | 国产三级影院在线观看| 国产一区二区久久久裸臀| 91九色国产熟女一区二区| 亚洲色偷偷综合亚洲AV伊人| 亚洲卡1卡2卡三卡四老狼| 狠狠的往里顶撞h百合| 老司机福利精品免费视频一区二区| 久久久超爽一二三av| 精彩视频99免费在线| 久久综合老鸭窝色综合久久| 91国产资源在线视频| 亚洲高清自偷揄拍自拍| 亚洲麻豆一区二区三区| 无码中文字幕波多野不卡| 日本一本午夜在线播放| 一区二区三区蜜臀在线| 午夜的视频在线观看| 红杏久久av人妻一区| 水蜜桃国产一区二区三区| 国产日本精品久久久久久久| 在线观看亚洲人成免费网址| 中文字幕第一页国产在线| 夜色撩人久久7777| 青青社区2国产视频| 激情五月婷婷免费视频| 日本美女成人在线视频| 不卡一不卡二不卡三| 美日韩在线视频免费看| 新婚人妻聚会被中出| 免费在线黄色观看网站| 免费无码人妻日韩精品一区二区| av视屏免费在线播放| 97a片免费在线观看| 早川濑里奈av黑人番号| 亚洲av色图18p| 久久这里只有精彩视频免费| 国产成人精品久久二区91| 国语对白xxxx乱大交| 日本啪啪啪啪啪啪啪| 国产av欧美精品高潮网站| 无码国产精品一区二区高潮久久4| 国产麻豆剧传媒精品国产av蜜桃| 一级黄片久久久久久久久| 亚洲成人国产综合一区| 78色精品一区二区三区| 亚洲少妇高潮免费观看| 午夜频道成人在线91| 2020中文字幕在线播放| 岛国黄色大片在线观看| 国产精品国产三级国产午| 乱亲女秽乱长久久久| 性感美女福利视频网站| 老司机福利精品视频在线| 护士小嫩嫩又紧又爽20p| 国产精品久久久久国产三级试频 | japanese日本熟妇另类| 班长撕开乳罩揉我胸好爽| 少妇人妻二三区视频 | jul—619中文字幕在线| 激情啪啪啪啪一区二区三区 | 欧美视频综合第一页| 国产片免费观看在线观看| 综合精品久久久久97| 国产片免费观看在线观看| 亚洲国产在线精品国偷产拍 | 自拍偷拍日韩欧美亚洲| av网址在线播放大全| 丝袜亚洲另类欧美变态| av老司机精品在线观看| 在线观看黄色成年人网站| 国产成人午夜精品福利| 久久午夜夜伦痒痒想咳嗽P| 国产精彩福利精品视频| 班长撕开乳罩揉我胸好爽| 日本啪啪啪啪啪啪啪| 国产三级精品三级在线不卡| 成人色综合中文字幕| 亚洲精品麻豆免费在线观看| 九一传媒制片厂视频在线免费观看 | 福利在线视频网址导航| 天天干天天操天天摸天天射| 国产成人小视频在线观看无遮挡| 欧亚乱色一区二区三区| 久草视频 久草视频2| 91大神福利视频网| 91精品国产高清自在线看香蕉网 | 丰满少妇人妻xxxxx| 极品性荡少妇一区二区色欲| 四川乱子伦视频国产vip| 国产一级精品综合av| 免费在线观看污污视频网站| 人妻少妇中文有码精品| 91大屁股国产一区二区| 在线观看视频 你懂的| 欧美另类z0z变态| 亚洲欧洲一区二区在线观看| 搞黄色在线免费观看| 中文字幕在线欧美精品| 中国黄片视频一区91| 99精品视频在线观看免费播放| 精品人妻每日一部精品| 国产亚洲四十路五十路| 日本丰满熟妇大屁股久久| japanese五十路熟女熟妇| 亚洲国产在人线放午夜| 亚洲精品欧美日韩在线播放| 亚国产成人精品久久久| 天堂资源网av中文字幕| 在线观看日韩激情视频| 成人av亚洲一区二区| 亚洲av香蕉一区区二区三区犇| 黑人性生活视频免费看| 亚洲熟女久久久36d| 日本人妻少妇18—xx| 亚洲护士一区二区三区| 国产刺激激情美女网站| 欧美激情精品在线观看| 亚洲免费av在线视频| 欧美一区二区三区激情啪啪啪| 午夜激情精品福利视频| 精品亚洲在线免费观看| 成人av免费不卡在线观看| 91国语爽死我了不卡| av在线免费中文字幕| 一区二区在线视频中文字幕| 午夜福利资源综合激情午夜福利资| 美洲精品一二三产区区别| 香蕉91一区二区三区| 熟妇一区二区三区高清版| 亚洲特黄aaaa片| 3337p日本欧洲大胆色噜噜| 中文字幕中文字幕 亚洲国产| 亚洲丝袜老师诱惑在线观看| 在线观看的黄色免费网站| 天堂女人av一区二区| 97香蕉碰碰人妻国产樱花| 天天日天天爽天天爽| 日韩欧美一级精品在线观看| 免费一级特黄特色大片在线观看 | 国产超码片内射在线| av日韩在线免费播放| 手机看片福利盒子日韩在线播放| 在线观看视频污一区| 精品成人啪啪18免费蜜臀| 999久久久久999| 91免费福利网91麻豆国产精品| 亚洲欧美人精品高清| 亚洲区欧美区另类最新章节| 青青草原色片网站在线观看| 久碰精品少妇中文字幕av| 少妇ww搡性bbb91| 午夜福利资源综合激情午夜福利资| 欧美精品中文字幕久久二区| 天天干天天操天天插天天日| 中文字幕一区二区亚洲一区| 91高清成人在线视频| 亚洲av成人免费网站| 青青擦在线视频国产在线| 一区二区三区欧美日韩高清播放| 9久在线视频只有精品| 精品一区二区亚洲欧美| 免费无码人妻日韩精品一区二区| 国产亚洲欧美45p| 国产91嫩草久久成人在线视频| 成人激情文学网人妻 | 精品高跟鞋丝袜一区二区| 成人资源在线观看免费官网| 久久久制服丝袜中文字幕| 午夜美女少妇福利视频| 免费高清自慰一区二区三区网站 | 美洲精品一二三产区区别 | 老司机99精品视频在线观看| 天天日天天干天天搡| 日本在线不卡免费视频| 亚洲国产成人在线一区| 国产精品精品精品999| av俺也去在线播放| av高潮迭起在线观看| 国产精品久久久久久久久福交| 黄色视频成年人免费观看| 国产日韩一区二区在线看| 一二三中文乱码亚洲乱码one| 中文字幕高清在线免费播放| 日本丰满熟妇大屁股久久| 日韩精品二区一区久久| 男人操女人的逼免费视频| 久久久91蜜桃精品ad| 国产精彩对白一区二区三区| 日本韩国免费一区二区三区视频| 黄色片黄色片wyaa| 风流唐伯虎电视剧在线观看| 欧美日本在线观看一区二区| 日韩一个色综合导航| 欧美女同性恋免费a| 人妻av无码专区久久绿巨人| 青青青青视频在线播放| 欧美亚洲国产成人免费在线| 97色视频在线观看| 亚洲人妻30pwc| 9色精品视频在线观看| 欧美久久一区二区伊人| 视频二区在线视频观看| 国产精品精品精品999| 日韩欧美在线观看不卡一区二区| 亚洲偷自拍高清视频| 888欧美视频在线| 很黄很污很色的午夜网站在线观看| 国产精品久久综合久久| 国产精品人妻66p| 免费费一级特黄真人片| 久久久久久久久久久免费女人| av黄色成人在线观看| 国产伊人免费在线播放| 日韩激情文学在线视频| 亚洲1区2区3区精华液| 男人的天堂在线黄色| 国产精品视频欧美一区二区 | 韩国AV无码不卡在线播放| 爱爱免费在线观看视频| 色噜噜噜噜18禁止观看| 91免费观看国产免费| 亚洲成人av一区久久| 亚洲日产av一区二区在线| 偷拍自拍亚洲美腿丝袜| 中文字幕之无码色多多| 欧美亚洲国产成人免费在线| 久久综合老鸭窝色综合久久| 无码中文字幕波多野不卡| 77久久久久国产精产品| 亚洲av成人免费网站| 在线视频自拍第三页| 欧美在线精品一区二区三区视频| 欧美亚洲免费视频观看| 1000部国产精品成人观看视频 | 日本高清在线不卡一区二区| 国产一区二区在线欧美| 天堂v男人视频在线观看| 精品av国产一区二区三区四区| 麻豆性色视频在线观看| av手机在线观播放网站| 熟女人妻一区二区精品视频| 蜜桃专区一区二区在线观看| 99视频精品全部15| 初美沙希中文字幕在线| 亚洲国产精品黑丝美女| 91啪国自产中文字幕在线| 国产一区av澳门在线观看| 绝色少妇高潮3在线观看| 国语对白xxxx乱大交| 国产妇女自拍区在线观看| 福利一二三在线视频观看| 日本中文字幕一二区视频| 午夜精品福利一区二区三区p | 国产普通话插插视频| 欧洲国产成人精品91铁牛tv| 青青色国产视频在线| 亚洲免费国产在线日韩| 男生用鸡操女生视频动漫| av成人在线观看一区| 青青青青草手机在线视频免费看| 国产大学生援交正在播放| 亚洲码av无色中文| 久久久久久久精品成人热| 中文字幕之无码色多多| 欧美日韩不卡一区不区二区| 无码国产精品一区二区高潮久久4| 亚洲第一黄色在线观看| 任你操视频免费在线观看| av中文字幕国产在线观看| 国产成人一区二区三区电影网站 | 天天综合天天综合天天网| 国产麻豆乱子伦午夜视频观看| 福利在线视频网址导航| 在线观看av2025| 欧美一区二区三区啪啪同性| 免费大片在线观看视频网站| 91色网站免费在线观看| 国产精品自偷自拍啪啪啪| 欧美一区二区三区啪啪同性| 老司机午夜精品视频资源| 成人高潮aa毛片免费| 国产精品中文av在线播放| 中国熟女一区二区性xx| 一个人免费在线观看ww视频| 老司机免费视频网站在线看| 91福利在线视频免费观看| 大鸡八强奸视频在线观看| 天天操天天爽天天干| 久久美欧人妻少妇一区二区三区| 色狠狠av线不卡香蕉一区二区| 九色视频在线观看免费| 日本少妇的秘密免费视频| 亚洲中文字幕乱码区| 97成人免费在线观看网站| 又粗又硬又猛又爽又黄的| 一级黄片大鸡巴插入美女| 免费高清自慰一区二区三区网站 | av无限看熟女人妻另类av| 亚洲嫩模一区二区三区| 在线视频自拍第三页| 久草福利电影在线观看| 免费无毒热热热热热热久| 三级av中文字幕在线观看| 激情啪啪啪啪一区二区三区 | 亚洲综合另类精品小说| 欧美黑人性猛交xxxxⅹooo| 色天天天天射天天舔| 精品区一区二区三区四区人妻| 大黑人性xxxxbbbb| 中文字幕熟女人妻久久久| 在线观看国产网站资源| 亚洲精品国品乱码久久久久| 51精品视频免费在线观看| 亚洲综合乱码一区二区|