ios14 本地網(wǎng)絡(luò) 適配

如果應(yīng)用中需要使用 本地網(wǎng)絡(luò) 需要在 Info.plist 中配置兩個(gè)選項(xiàng)芹缔,詳細(xì)描述為什么需要使用該權(quán)限捶闸,以及需要列出具體使用 本地網(wǎng)絡(luò) 的服務(wù)列表。


在6月份剛結(jié)束的首次線上 WWDC 2020 發(fā)布會(huì)上蘋果向我們展示了新的 iOS14 系統(tǒng)乾忱。iOS14 的適配彤守,很重要的一環(huán)就集中在用戶隱私和安全方面。

在 iOS13 及以前洒缀,當(dāng)用戶首次訪問(wèn)應(yīng)用程序時(shí)瑰谜,會(huì)被要求開(kāi)放大量權(quán)限,比如相冊(cè)树绩、定位萨脑、聯(lián)系人,實(shí)際上該應(yīng)用可能僅僅需要一個(gè)選擇圖片功能饺饭,卻被要求開(kāi)放整個(gè)照片庫(kù)的權(quán)限渤早,這確實(shí)是不合理的。對(duì)于相冊(cè)瘫俊,在 iOS14 中引入了 “LimitedPhotos Library” 的概念鹊杖,用戶可以授予應(yīng)用訪問(wèn)其一部分的照片,對(duì)于應(yīng)用來(lái)說(shuō)扛芽,僅能讀取到用戶選擇讓應(yīng)用來(lái)讀取的照片骂蓖,讓我們看到了 Apple 對(duì)于用戶隱私的尊重。這僅僅是一部分川尖,在iOS14 中登下,可以看到諸多類似的保護(hù)用戶隱私的措施,也需要我們升級(jí)適配叮喳。

本文主要分享一下 iOS14 上對(duì)于隱私授權(quán)的變更和部分適配方案被芳,歡迎補(bǔ)充指正。

適配點(diǎn)

?? 相冊(cè)

?? iOS14 新增了“Limited Photo Library Access” 模式馍悟,在授權(quán)彈窗中增加了 Select Photo 選項(xiàng)畔濒。用戶可以在 App 請(qǐng)求調(diào)用相冊(cè)時(shí)選擇部分照片讓 App 讀取。從 App 的視?來(lái)看赋朦,你的相冊(cè)里就只有這幾張照片篓冲,App 無(wú)法得知其它照片的存在。

image.png

? iOS14 中當(dāng)用戶選擇

“PHAuthorizationStatusLimited” 時(shí)宠哄,如果未進(jìn)行適配壹将,有可能會(huì)在每次觸發(fā)相冊(cè)功能時(shí)都進(jìn)行彈窗詢問(wèn)用戶是否需要修改照片權(quán)限。

?? 對(duì)于這種情況可通過(guò)在 Info.plist 中設(shè)置

“PHPhotoLibraryPreventAutomaticLimitedAccessAlert”的值為 YES 來(lái)阻止該彈窗反復(fù)彈出毛嫉,并且可通過(guò)下面這個(gè) API 來(lái)主動(dòng)控制何時(shí)彈出PHPickerViewController 進(jìn)行照片選擇

[[PHPhotoLibrary sharedPhotoLibrary]presentLimitedLibraryPickerFromViewController:self];

? 在 iOS14 中官方推薦使用? PHPicker 來(lái)替代原 API 進(jìn)行圖片選擇诽俯。PHPicker 為獨(dú)立進(jìn)程,會(huì)在視圖最頂層進(jìn)行展示承粤,應(yīng)用內(nèi)無(wú)法對(duì)其進(jìn)行截圖也無(wú)法直接訪問(wèn)到其內(nèi)的數(shù)據(jù)暴区。

UIImagePickerController? -> PHPickerViewController, UIImagePickerViewController 功能受限辛臊,每次只能選擇一張圖片仙粱,將逐漸被廢棄。

image

PHPicker 支持多選彻舰,支持搜索伐割,支持按 image,video刃唤,livePhotos 等進(jìn)行選擇隔心。

image

?? 新API及遷移demo:

image

@interfaceViewController()<PHPickerViewControllerDelegate>@property(weak,nonatomic)IBOutlet UIImageView*imageView;@property(nonatomic,strong)NSArray<NSItemProvider*>*itemProviders;@end@implementationViewController-(void)viewDidLoad{[superviewDidLoad];// Do any additional setup after loading the view.}-(IBAction)button:(id)sender{// 以下 API 僅為 iOS14 onlyPHPickerConfiguration*configuration=[[PHPickerConfiguration alloc]init];configuration.filter=[PHPickerFilter videosFilter];// 可配置查詢用戶相冊(cè)中文件的類型,支持三種configuration.selectionLimit=0;// 默認(rèn)為1尚胞,為0時(shí)表示可多選硬霍。PHPickerViewController*picker=[[PHPickerViewController alloc]initWithConfiguration:configuration];picker.delegate=self;// picker vc,在選完圖片后需要在回調(diào)中手動(dòng) dismiss[selfpresentViewController:picker animated:YES completion:^{}];}#pragmamark - Delegate-(void)picker:(PHPickerViewController*)picker didFinishPicking:(NSArray<PHPickerResult*>*)results{[picker dismissViewControllerAnimated:YES completion:nil];if(!results||!results.count){return;}NSItemProvider*itemProvider=results.firstObject.itemProvider;if([itemProvider canLoadObjectOfClass:UIImage.class]){__weaktypeof(self)weakSelf=self;[itemProvider loadObjectOfClass:UIImage.class completionHandler:^(__kindof id<NSItemProviderReading>_Nullable object,NSError*_Nullable error){if([object isKindOfClass:UIImage.class]){__strongtypeof(self)strongSelf=weakSelf;dispatch_async(dispatch_get_main_queue(),^{strongSelf.imageView.image=(UIImage*)object;});}}];}}

?? 需要注意的是笼裳,在 limit Photo 模式下巡社,AssetsLibrary 訪問(wèn)相冊(cè)會(huì)失敗捷犹;在 writeOnly 模式下岭接,AssetLibrary 也會(huì)有顯示問(wèn)題。建議還在使用 AssetsLibrary 的同學(xué)盡快遷移到新 API楔脯。

? 授權(quán)相關(guān):舊 API 廢棄撩轰,增加 PHAccessLevel 參數(shù)。如果再使用以前的API來(lái)獲取權(quán)限狀態(tài)昧廷,

PHAuthorizationStatusLimited 狀態(tài)下也會(huì)返回

PHAuthorizationStatusAuthorized

image

typedefNS_ENUM(NSInteger,PHAccessLevel){PHAccessLevelAddOnly=1,// 僅允許添加照片PHAccessLevelReadWrite=2,// 允許訪問(wèn)照片堪嫂,limitedLevel 必須為 readWrite}API_AVAILABLE(macos(10.16),ios(14),tvos(14));// 查詢權(quán)限PHAccessLevel level=PHAccessLevelReadWrite;PHAuthorizationStatus status=[PHPhotoLibrary authorizationStatusForAccessLevel:level];switch(status){casePHAuthorizationStatusLimited:NSLog(@"limited");break;casePHAuthorizationStatusDenied:NSLog(@"denied");break;casePHAuthorizationStatusAuthorized:NSLog(@"authorized");break;default:break;}// 請(qǐng)求權(quán)限,需注意 limited 權(quán)限盡在 accessLevel 為 readAndWrite 時(shí)生效[PHPhotoLibrary requestAuthorizationForAccessLevel:level handler:^(PHAuthorizationStatus status){switch(status){casePHAuthorizationStatusLimited:NSLog(@"limited");break;casePHAuthorizationStatusDenied:NSLog(@"denied");break;casePHAuthorizationStatusAuthorized:NSLog(@"authorized");break;default:break;}}];

?? 定位

?? 在 iOS13 及以前木柬,App 請(qǐng)求用戶定位授權(quán)時(shí)為如下形態(tài):一旦用戶同意應(yīng)用獲取定位信息皆串,當(dāng)前應(yīng)用就可以獲取到用戶的精確定位。

?? iOS14 新增用戶大致位置選項(xiàng)可供用戶選擇眉枕,原因是大多數(shù) App 實(shí)際上并不需要獲取用戶到用戶最準(zhǔn)確的定位信息恶复。iOS14 授權(quán)彈窗新增的 Precise的開(kāi)關(guān)默認(rèn)會(huì)選中精確位置怜森。用戶通過(guò)這個(gè)開(kāi)關(guān)可以進(jìn)行更改,當(dāng)把這個(gè)值設(shè)為 On 時(shí)谤牡,地圖上會(huì)顯示精確位置副硅;切換為Off時(shí),將顯示用戶的大致位置翅萤。

?? 對(duì)于對(duì)用戶位置敏感度不高的 App 來(lái)說(shuō)恐疲,這個(gè)似乎無(wú)影響,但是對(duì)于強(qiáng)依賴精確位置的 App 適配工作就顯得非常重要了套么∨嗉海可以通過(guò)用戶在 “隱私設(shè)置” 中設(shè)置來(lái)開(kāi)啟精確定位,但是可能用戶寧可放棄使用這個(gè)應(yīng)用也不愿意開(kāi)啟胚泌。這個(gè)時(shí)候省咨,iOS14 在 CLLocationManager 新增兩個(gè)方法可用于向用戶申請(qǐng)臨時(shí)開(kāi)啟一次精確位置權(quán)限。

image

使用方式也很簡(jiǎn)單玷室,需要首先在 Info.plist 中配置“NSLocationTemporaryUsageDescriptionDictionary”字典中需要配置 key 和 value 表明使用位置的原因茸炒,以及具體的描述。

image

在本例中阵苇,key 即為獲取用戶權(quán)限時(shí)傳的 "purposeKey"壁公,最終呈現(xiàn)給用戶的就是左圖,右圖為當(dāng)App主動(dòng)關(guān)閉精確定位權(quán)限申請(qǐng)绅项。

image

?? 對(duì)于地理位置不敏感的App 來(lái)說(shuō)紊册,iOS14 也可以通過(guò)直接在 info.plist 中添加 NSLocationDefaultAccuracyReduced? 為 true 默認(rèn)請(qǐng)求大概位置。

image

?? 這樣設(shè)置之后快耿,即使用戶想要為該 App 開(kāi)啟精確定位權(quán)限囊陡,也無(wú)法開(kāi)啟。

?? 也可以直接通過(guò)API來(lái)根據(jù)不同的需求設(shè)置不同的定位精確度掀亥。

image

?? 需要注意的是撞反,當(dāng) App 在 Background 模式下,如果并未獲得精確位置授權(quán)搪花,那么 Beacon 及其他位置敏感功能都將受到限制遏片。

?? Local Network

?? iOS14 當(dāng) App 要使用 Bonjour 服務(wù)時(shí)或者訪問(wèn)本地局域網(wǎng),使用 mDNS 服務(wù)等撮竿,都需要授權(quán)吮便,開(kāi)發(fā)者需要在 Info.plist 中詳細(xì)描述使用的為哪種服務(wù)以及用途。下圖為需要無(wú)需申請(qǐng)權(quán)限與需要授權(quán)的服務(wù):

image

?? 在 "隱私設(shè)置" 中也可以查看和修改具體有哪些 App 正在使用 LocalNetwork

image

?? 如果應(yīng)用中需要使用 LocalNetwork 需要在 Info.plist 中配置兩個(gè)選項(xiàng)幢踏,詳細(xì)描述為什么需要使用該權(quán)限髓需,以及需要列出具體使用 LocalNetwork 的服務(wù)列表。

image

?? 對(duì)于使用了下列包含 Bonjour 的 framework房蝉,都需要更新描述.

image

? Wi-Fi Address

?? iOS8 - iOS13 僚匆,用戶在不同的網(wǎng)絡(luò)間切換和接入時(shí)微渠,mac 地址都不會(huì)改變,這也就使得網(wǎng)絡(luò)運(yùn)營(yíng)商還是可以通過(guò) mac 地址對(duì)用戶進(jìn)行匹配和用戶信息收集咧擂,生成完整的用戶信息敛助。iOS14 提供 Wifi 加密服務(wù),每次接入不同的 WiFi 使用的 mac 地址都不同屋确。每過(guò) 24 小時(shí),mac 地址還會(huì)更新一次续扔。需要關(guān)注是否有使用用戶網(wǎng)絡(luò) mac 地址的服務(wù)攻臀。

?? 下圖為 iOS13 及之前用戶接入網(wǎng)絡(luò)時(shí) mac 地址并不會(huì)進(jìn)行改變

image

?? 下圖為 iOS14 用戶接入 Wi-Fi 時(shí) mac 地址的變化情況

image

?? 并且用戶也可以自行選擇是否開(kāi)啟 private Wi-Fi address

image

? 剪切板

?? 在 iOS14 中,讀取用戶剪切板的數(shù)據(jù)會(huì)彈出提示纱昧。

image

?? 彈出提示的原因是使用 UIPasteboard 訪問(wèn)用戶數(shù)據(jù)刨啸,訪問(wèn)以下數(shù)據(jù)都會(huì)彈出 toast 提示。

image

?? 兼容方案:如果應(yīng)用訪問(wèn)剪切板僅僅用于判斷是否為URL格式识脆,則 iOS14 新增了兩個(gè) API 可以用于規(guī)避該提示设联。如果應(yīng)用想直接訪問(wèn)剪切板的數(shù)據(jù),暫時(shí)可能無(wú)法做到規(guī)避該提示灼捂。iOS14 新增兩種

UIPasteboardDetectionPattern离例。

image

?? 上面的兩個(gè) API 可用于規(guī)避提示,但只能用于判斷剪切板中是否有 URL悉稠,并不是真正的訪問(wèn)剪貼板數(shù)據(jù)宫蛆,也拿不到剪切板的真實(shí)數(shù)據(jù)。下面兩個(gè) API 可以獲得具體的 URL 信息的猛,但是會(huì)觸發(fā)剪切板提示耀盗。并且實(shí)測(cè)當(dāng)用戶剪切板中包含多個(gè) URL 時(shí)只會(huì)返回第一個(gè)。

image

?? 使用示例

NSSet*patterns=[[NSSet alloc]initWithObjects:UIPasteboardDetectionPatternProbableWebURL,nil];[[UIPasteboard generalPasteboard]detectPatternsForPatterns:patterns completionHandler:^(NSSet<UIPasteboardDetectionPattern>*_Nullable result,NSError*_Nullable error){if(result&&result.count){// 當(dāng)前剪切板中存在 URL}}];

? 相機(jī)和麥克風(fēng)

?? iOS14 中 App 使用相機(jī)和麥克風(fēng)時(shí)會(huì)有圖標(biāo)提示以及綠點(diǎn)和黃點(diǎn)提示卦尊,并且會(huì)顯示當(dāng)前是哪個(gè) App 在使用此功能叛拷。我們無(wú)法控制是否顯示該提示。

image

?? 會(huì)觸發(fā)錄音小黃點(diǎn)的代碼示例:

AVAudioRecorder*recorder=[[AVAudioRecorder alloc]initWithURL:recorderPath settings:nil error:nil];[recorder record];

?? 觸發(fā)相機(jī)小綠點(diǎn)的代碼示例:

AVCaptureDeviceInput*videoInput=[[AVCaptureDeviceInput alloc]initWithDevice:videoCaptureDevice error:nil];AVCaptureSession*session=[[AVCaptureSession alloc]init];if([session canAddInput:videoInput]){[session addInput:videoInput];}[session startRunning];

? IDFA

?? IDFA 全稱為 Identity for Advertisers 岂却,即廣告標(biāo)識(shí)符忿薇。用來(lái)標(biāo)記用戶,目前最廣泛的用途是用于投放廣告躏哩、個(gè)性化推薦等煌恢。

?? 在 iOS13 及以前,系統(tǒng)會(huì)默認(rèn)為用戶開(kāi)啟允許追蹤設(shè)置震庭,我們可以簡(jiǎn)單的通過(guò)代碼來(lái)獲取到用戶的 IDFA 標(biāo)識(shí)符瑰抵。

if([[ASIdentifierManager sharedManager]isAdvertisingTrackingEnabled]){NSString*idfaString=[[ASIdentifierManager sharedManager]advertisingIdentifier].UUIDString;NSLog(@"%@",idfaString);}

?? 但是在 iOS14 中,這個(gè)判斷用戶是否允許被追蹤的方法已經(jīng)廢棄器联。

image.png

?? iOS14 中二汛,系統(tǒng)會(huì)默認(rèn)為用戶關(guān)閉廣告追蹤權(quán)限婿崭。

image

?? 對(duì)于這種情況,我們需要去請(qǐng)求用戶權(quán)限肴颊。首先需要在 Info.plist 中配置" NSUserTrackingUsageDescription " 及描述文案氓栈,接著使用 AppTrackingTransparency 框架中的 ATTrackingManager 中的 requestTrackingAuthorizationWithCompletionHandler 請(qǐng)求用戶權(quán)限,在用戶授權(quán)后再去訪問(wèn) IDFA 才能夠獲取到正確信息婿着。

#import#import-(void)testIDFA{if(@available(iOS14,*)){[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status){if(status==ATTrackingManagerAuthorizationStatusAuthorized){NSString*idfaString=[[ASIdentifierManager sharedManager]advertisingIdentifier].UUIDString;}}];}else{// 使用原方式訪問(wèn) IDFA}}

? 上傳 AppStore

更加嚴(yán)格的隱私審核授瘦,可以讓用戶在下載 App 之前就知道此 App 將會(huì)需要哪些權(quán)限。目前蘋果商店要求所有應(yīng)用在上架時(shí)都必須提供一份隱私政策竟宋。如果引入了第三方收集用戶信息等SDK提完,都需要向蘋果說(shuō)明是這些信息的用途。

image

總結(jié)

對(duì)于這次 iOS14 的隱私權(quán)限大升級(jí)和新嘗試丘侠,體現(xiàn)了蘋果對(duì)于用戶隱私的尊重徒欣。

從用戶角度來(lái)說(shuō),近年來(lái)越來(lái)越精準(zhǔn)的廣告投放讓我們?cè)絹?lái)越感覺(jué)自己被”監(jiān)視“著蜗字,此次升級(jí)后打肝,我們有了更多保護(hù)自己隱私的方式以及避免廣告騷擾的方法,蘋果此舉無(wú)疑會(huì)加大我們對(duì)其的好感度和信任感挪捕。但從另一個(gè)角度來(lái)說(shuō)粗梭,對(duì)于 IDFA 的限制,可能會(huì)導(dǎo)致之前許多依靠廣告投放收入的免費(fèi) App 難以繼續(xù)維持生計(jì)级零,也可能也會(huì)導(dǎo)致免費(fèi) App 的數(shù)量有所降低楼吃。從開(kāi)發(fā)者的角度來(lái)說(shuō),除了對(duì) iOS14 隱私升級(jí)的積極適配外妄讯,也讓我們感受到了 iOS14 中對(duì)于用戶隱私的重視無(wú)疑會(huì)提高獲取用戶行為信息的成本孩锡。

沖擊最大的應(yīng)該就是廣告行業(yè),對(duì)于目前的推薦算法和用戶拉新都會(huì)受到影響亥贸,如何在充分尊重用戶隱私的前提下進(jìn)行廣告的精準(zhǔn)投放對(duì)于開(kāi)發(fā)者和廣告商來(lái)說(shuō)都是一個(gè)不小的機(jī)遇和挑戰(zhàn)躬窜。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市炕置,隨后出現(xiàn)的幾起案子荣挨,更是在濱河造成了極大的恐慌,老刑警劉巖朴摊,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件默垄,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡甚纲,警方通過(guò)查閱死者的電腦和手機(jī)口锭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人鹃操,你說(shuō)我怎么就攤上這事韭寸。” “怎么了荆隘?”我有些...
    開(kāi)封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵恩伺,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我椰拒,道長(zhǎng)晶渠,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任燃观,我火速辦了婚禮褒脯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘仪壮。我一直安慰自己,他們只是感情好胳徽,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布积锅。 她就那樣靜靜地躺著,像睡著了一般养盗。 火紅的嫁衣襯著肌膚如雪缚陷。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天往核,我揣著相機(jī)與錄音箫爷,去河邊找鬼。 笑死聂儒,一個(gè)胖子當(dāng)著我的面吹牛虎锚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播衩婚,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼窜护,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了非春?” 一聲冷哼從身側(cè)響起柱徙,我...
    開(kāi)封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎奇昙,沒(méi)想到半個(gè)月后护侮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡储耐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年羊初,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片什湘。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凳忙,死狀恐怖业踏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情涧卵,我是刑警寧澤勤家,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站柳恐,受9級(jí)特大地震影響伐脖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜乐设,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一讼庇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧近尚,春花似錦蠕啄、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至格遭,卻和暖如春哈街,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拒迅。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工骚秦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人璧微。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓作箍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親前硫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蒙揣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345