技術(shù)層面聊下蘋(píng)果工程師對(duì)App Clip技術(shù)構(gòu)建

蘋(píng)果在 WWDC2020 上發(fā)布了 App Clip,有媒體叫做“蘋(píng)果小程序”遣耍。雖然 Clip 在產(chǎn)品理念上和小程序有相似之處袋狞,但是在技術(shù)實(shí)現(xiàn)層面卻是截然不同的東西忆嗜。本文會(huì)針對(duì) Clip 的技術(shù)層面做全面的介紹吓笙。

實(shí)現(xiàn)方式:native 代碼秕豫、native 框架、native app 一樣的分發(fā)

在實(shí)現(xiàn)上观蓄,Clip 和原生的 app 使用一樣的方式。在 UI 框架上同時(shí)支持 UIKit 和 SwiftUI祠墅,有些開(kāi)發(fā)者認(rèn)為只能使用 SwiftUI 開(kāi)發(fā)侮穿,這點(diǎn)是錯(cuò)誤的。Clip 的定位和 watch app毁嗦、app extension 類(lèi)似亲茅,和 app 在同一個(gè) project 里,是一個(gè)單獨(dú)的 target。只是 Clip 并沒(méi)有自己的專屬 framework(其實(shí)有一個(gè)克锣,但是主要包含的是一些特色 api)茵肃,使用的框架和 app 一致,可以認(rèn)為是一個(gè)精簡(jiǎn)版的原生 App袭祟。

App Clip

image

Clip 不能單獨(dú)發(fā)布验残,必須關(guān)聯(lián)一個(gè) app。因此發(fā)布的流程和 app 和一樣的巾乳,在 apple connect 上創(chuàng)建一個(gè)版本您没,和 app 一起提交審核。和 app 在技術(shù)上的最大區(qū)別只是大小限制在 10MB 以內(nèi)胆绊,因?yàn)?Clip 的基礎(chǔ)就是希望用戶可以最迅速的被用戶使用氨鹏,如果體積大了就失去了產(chǎn)品的根本。

產(chǎn)品定位:用完即走

App Clip

image

蘋(píng)果對(duì) Clip 的使用場(chǎng)景非常明確:在一個(gè)特定的情境里压状,用戶可以快速的使用 app 的核心服務(wù)仆抵。是小程序內(nèi)味了!

坦率的說(shuō)种冬,很難說(shuō) Clip 的理念是蘋(píng)果原創(chuàng)的镣丑,在產(chǎn)品的定位上和微信小程序如出一轍。尤其是微信小程序在國(guó)內(nèi)已經(jīng)完全普及了碌廓,微信小程序初始發(fā)布的時(shí)候也被蘋(píng)果加了多條限制传轰。其中一條就是小程序不能有虛擬商品支付功能。現(xiàn)在回頭看蘋(píng)果自己的 Clip 可以完美支持 apple pay谷婆,很難說(shuō)蘋(píng)果沒(méi)有私心慨蛙。

觸手可及

App Clip

image

Clip 使用一段 URL 標(biāo)識(shí)自己,格式遵從 universal link纪挎。因?yàn)樘O(píng)果對(duì) Clip 的使用場(chǎng)景非常明確期贫,所以在 Clip 的調(diào)起方式做了嚴(yán)格限制。Clip 的調(diào)用只能是用戶主動(dòng)要發(fā)起才能訪問(wèn)异袄,所以不存在用戶在某個(gè) app 里不小心點(diǎn)了一個(gè)按鈕通砍,就跳轉(zhuǎn)下載了 Clip。

Clip 的發(fā)起入口有以下幾種:

  • NFC
  • 二維碼
  • Safari 中關(guān)聯(lián)了 Clip 的網(wǎng)頁(yè)
  • 蘋(píng)果消息應(yīng)用
  • Siri 附近建議和蘋(píng)果地圖

NFC 和二維碼的入口很容易理解烤蜕,必須用戶主動(dòng)拿出手機(jī)靠近 NFC封孙、打開(kāi)相機(jī)掃描。蘋(píng)果專屬的 Clip 碼生成工具在年底才會(huì)開(kāi)放讽营。

App Clip

image

Safari 中發(fā)起和之前的 universal link 類(lèi)似虎忌,在網(wǎng)站配置了關(guān)聯(lián)的 Clip 信息后,會(huì)有一個(gè) banner 提示打開(kāi)應(yīng)用橱鹏。

App Clip

image

因?yàn)?Clip 提交 app store 審核的信息里也會(huì)配置好相關(guān)的 url膜蠢,因此如果在 message 里發(fā)了 clip 的鏈接堪藐,操作系統(tǒng)也會(huì)在應(yīng)用里生成一個(gè) Clip 的卡片,用戶如果需要可以主動(dòng)點(diǎn)擊挑围。

App Clip

image

Siri 附近建議和蘋(píng)果地圖(在 connect 中可以配置 clip 的地理位置)礁竞。場(chǎng)景和前面的二維碼類(lèi)似,如果我在地圖上看到一個(gè)商家杉辙,商家有提供服務(wù)的 Clip模捂,我可以在地圖或者 Siri 建議里直接打開(kāi) Clip。

App Clip

image

再次總結(jié)一下 Clip 的入口限制:只能是用戶主動(dòng)發(fā)起才能訪問(wèn)奏瞬。雖然 Clip 的入口是一段 universal link枫绅,在代碼里的處理方式也和 universal link 一致,但是為了 Clip 不被濫用硼端,Clip 的調(diào)起只能是操作系統(tǒng)調(diào)起并淋。App 沒(méi)有能力主動(dòng)調(diào)起一個(gè) Clip 程序。

無(wú)需安裝珍昨、卸載

因?yàn)?Clip 的大小被限制在了 10MB 以下县耽,在當(dāng)下的網(wǎng)絡(luò)狀態(tài)下,可以實(shí)現(xiàn)快速的打開(kāi)镣典。為了給用戶使用非常輕松的感覺(jué)兔毙,在 UI 上不會(huì)體現(xiàn)“安裝”這樣的字眼,而是直接“打開(kāi)”兄春。預(yù)期的場(chǎng)景下用戶打開(kāi) Clip 和打開(kāi)一個(gè)網(wǎng)頁(yè)類(lèi)似澎剥。因此在用戶的視角里就不存在軟件的安裝、卸載赶舆。

Clip 的生命周期由操作系統(tǒng)全權(quán)接管哑姚。如果 Clip 用戶一段時(shí)間后沒(méi)有使用,操作系統(tǒng)就會(huì)自動(dòng)清除掉 Clip芜茵,Clip 里存儲(chǔ)的數(shù)據(jù)也會(huì)被一并清除叙量。因此雖然 Clip 提供了存儲(chǔ)的能力,但是程序不應(yīng)該依賴存儲(chǔ)的數(shù)據(jù)九串,只能把存儲(chǔ)當(dāng)做 cache 來(lái)使用绞佩,操作系統(tǒng)可能自動(dòng)清除緩存的數(shù)據(jù)。

橫向比較:PWA猪钮、Instant Apps品山、小程序

Instant Apps

18 年正式發(fā)布的 Android Instant apps 和 Clip 在技術(shù)上是最接近的。Instant apps 中文被翻成“免安裝應(yīng)用”烤低,在體驗(yàn)上也是希望用戶能夠最低成本的使用上 app肘交,讓用戶感受不到安裝這個(gè)步驟。Instant apps 也可以通過(guò) url 標(biāo)識(shí)(deep link)拂玻,如果在 chrome 里搜索到應(yīng)用的網(wǎng)站酸些,chrome 如果識(shí)別到域名下有關(guān)聯(lián)應(yīng)用,可以直接“打開(kāi)”檐蚜。消息中的鏈接也可以被識(shí)別魄懂。只是 Instant apps 發(fā)布的早,國(guó)外用戶也沒(méi)有使用二維碼的習(xí)慣闯第,所以入口上不支持二維碼市栗、NFC。

兩者的根本區(qū)別還是在定位上咳短,Instant apps 提出的場(chǎng)景是提供一個(gè) app 的試用版填帽。因此場(chǎng)景是你已經(jīng)到了 app 的下載頁(yè)面,這個(gè)時(shí)候如果一個(gè) app 幾百兆你可能就放棄下載了咙好,但是有一個(gè)極簡(jiǎn)的試用版,就會(huì)提高你使用 app 的可能。這個(gè)場(chǎng)景在游戲 app 里尤其明顯罩引,一方面高質(zhì)量的游戲 app 體積比較大嵌器。另一方面,如果是一個(gè)付費(fèi)下載的應(yīng)用层宫,如果有一個(gè)免費(fèi)的試用版杨伙,也可以增加用戶的下載可能。在蘋(píng)果生態(tài)里很多應(yīng)用會(huì)提供一個(gè)受限的免費(fèi) lite 版本也是一樣的需求萌腿。

但是 Instant apps 在國(guó)內(nèi)沒(méi)有產(chǎn)生任何影響限匣。因?yàn)檎叩脑颍珿oogle Play 不支持在國(guó)內(nèi)市場(chǎng)使用毁菱。國(guó)內(nèi)的安卓應(yīng)用市場(chǎng)也是魚(yú)龍混雜米死,對(duì)于 Instant apps 也估計(jì)也沒(méi)有統(tǒng)一支持。另外國(guó)內(nèi)的安卓生態(tài)也和歐美地區(qū)區(qū)別比較大鼎俘,早期安卓市場(chǎng)上收費(fèi)的應(yīng)用很少哲身,對(duì)于用戶而言需要試用免費(fèi) app 的場(chǎng)景很少。另外大廠也可能會(huì)推出專門(mén)的急速版應(yīng)用贸伐,安裝后利用動(dòng)態(tài)化技術(shù)下發(fā)代碼勘天,應(yīng)用體積也可以控制在 10 MB 以內(nèi)。

Clip 則是非常明確的面向線下提供服務(wù)的場(chǎng)景捉邢,在應(yīng)用能力上可以接入 sign in with apple脯丝,apple pay。這樣一個(gè)全新的用戶伏伐,可以很快速的使用線下服務(wù)并且進(jìn)行注冊(cè)宠进、支付。用戶體驗(yàn)會(huì)好的多藐翎。安卓因?yàn)閲?guó)內(nèi)生態(tài)的原因材蹬,各個(gè)安卓廠商沒(méi)有統(tǒng)一的新用戶可以快速注冊(cè)的接口实幕,也沒(méi)有統(tǒng)一的支付接口,很難提供相匹敵的體驗(yàn)堤器。如果開(kāi)發(fā)者針對(duì)各個(gè)廠商單獨(dú)開(kāi)發(fā)昆庇,那成本上就不是“小程序”了。

Progressive Web App(PWA)

App Clip

Progressive Web App 是基于 web 的技術(shù)闸溃。在移動(dòng)互聯(lián)網(wǎng)興起之后整吆,大家的流量都轉(zhuǎn)移到了移動(dòng)設(shè)備上。然而在移動(dòng)上的 web 體驗(yàn)并不好辉川。于是 W3C 和谷歌就基于瀏覽器的能力表蝙,制定了一套協(xié)議,讓 web app 可以擁有更多的 native 能力乓旗。

PWA 不是特指某一項(xiàng)技術(shù)府蛇,而是應(yīng)用了多項(xiàng)技術(shù)的 Web App。其核心技術(shù)包括 App Manifest寸齐、Service Worker欲诺、Web Push。

PWA 相當(dāng)于把小程序里的代碼直接下載到了本地渺鹦,有了獨(dú)立的 app 入口扰法。運(yùn)行的時(shí)候基于瀏覽器的能力。但是對(duì)于用戶感受和原生 app 一樣毅厚。

我個(gè)人對(duì) PWA 技術(shù)很有好感塞颁,它的初衷有著初代互聯(lián)網(wǎng)般的美好。希望底層有一套協(xié)議后吸耿,用戶體驗(yàn)還是沒(méi)有邊界的互聯(lián)網(wǎng)祠锣。然而時(shí)代已經(jīng)變了。PWA 在中國(guó)基本上是涼了咽安。

PWA 從出生就帶了硬傷伴网,雖然谷歌希望有一套 web 標(biāo)準(zhǔn)可以運(yùn)行在移動(dòng)設(shè)備上,但是對(duì)于蘋(píng)果的商業(yè)策略而言妆棒,這并不重要澡腾。因此 PWA 的一個(gè)協(xié)議,從制定出來(lái)糕珊,再到移動(dòng)設(shè)備(iOS)上支持這個(gè)特性动分,幾年就過(guò)去了。而且對(duì)于移動(dòng)用戶而言红选,可以擁有一個(gè)美好的 web app 并不是他們的痛點(diǎn)澜公。

總結(jié)起來(lái) PWA 看著美好,但似乎更多是對(duì)于 web 開(kāi)發(fā)者心中的美好愿景喇肋。在落實(shí)中遇到了很多現(xiàn)實(shí)的問(wèn)題坟乾,技術(shù)支持的不好迹辐,開(kāi)發(fā)者就更沒(méi)有動(dòng)力在這個(gè)技術(shù)上做軟件生態(tài)了。

微信小程序

前面提過(guò)在產(chǎn)品理念上小程序和 Clip 很相似甚侣,甚至說(shuō)不定 Clip 是受了小程序的啟發(fā)右核。在市場(chǎng)上,小程序是 Clip 的真正對(duì)手渺绒。

小程序基于微信的 app,Clip 基于操作系統(tǒng)菱鸥,因此在能力上 Clip 有優(yōu)勢(shì)宗兼。小程序的入口需要先打開(kāi)微信,而 Clip 可以通過(guò) NFC 靠近直接激活應(yīng)用氮采。對(duì)于開(kāi)發(fā)者而言殷绍,Clip 可以直接獲得很多原生的能力(比如 push),如果用戶喜歡可以關(guān)聯(lián)下載自己的原生應(yīng)用鹊漠。在小程序中主到,微信出于商業(yè)原因開(kāi)發(fā)者不能直接跳轉(zhuǎn)到自有 app,小程序的能力也依賴于微信提供的接口躯概。

對(duì)于從 Clip 關(guān)聯(lián)主 app 蘋(píng)果還挺重視的登钥,提供了幾個(gè)入口展示關(guān)聯(lián) app。

首先在 clip 的展示頁(yè)就會(huì)顯示:

App Clip

image

每次使用 Clip 時(shí)也會(huì)有一個(gè)短暫的浮層展示:

App Clip

image

開(kāi)發(fā)者也可以自己通過(guò) SKOverlay 來(lái)展示:

App Clip

image.png

不過(guò)如果開(kāi)發(fā)者沒(méi)有自己的獨(dú)立 app娶靡,那么也就只能選擇小程序了牧牢。小程序發(fā)展到現(xiàn)在場(chǎng)景也比最早提出的線下服務(wù)更加多了,反而類(lèi)似 Instant apps姿锭,更像一個(gè)輕量級(jí)的 app塔鳍。

考慮到國(guó)內(nèi)很多小程序的廠商都沒(méi)有自己的獨(dú)立 app,因此 clip 對(duì)于這部分群體也并沒(méi)有什么吸引力呻此。不過(guò)對(duì)于線下服務(wù)類(lèi)轮纫,尤其有支付場(chǎng)景的,Clip 在用戶體驗(yàn)上會(huì)比小程序好一些焚鲜。

總結(jié)掌唾,Clip 的業(yè)務(wù)場(chǎng)景和小程序有一小部分是重疊的,小程序覆蓋的場(chǎng)景還是更多一些恃泪。兩者在大部分時(shí)候并不是互斥式的競(jìng)爭(zhēng)關(guān)系郑兴,即便在一些場(chǎng)景下 Clip 有技術(shù)優(yōu)勢(shì),商家也不會(huì)放棄小程序贝乎,因?yàn)檫€有安卓用戶嘛情连。還是看商家在某些場(chǎng)景里,是否愿意為用戶多提供一種更好的交互方式览效。

對(duì)比原生 app 的技術(shù)限制

雖然 Clip 可以直接使用 iOS framework却舀,但是因?yàn)?Clip 的使用場(chǎng)景是新用戶的初次虫几、簡(jiǎn)短、當(dāng)下(in-the-moment experience)的使用挽拔,相比原生 app 蘋(píng)果還是進(jìn)行了一些限制辆脸。

App 不能訪問(wèn)用戶的隱私信息:

  • 運(yùn)動(dòng)和健身數(shù)據(jù)
  • Apple Music 和多媒體文件
  • 通訊錄、信息螃诅、照片啡氢、文件等數(shù)據(jù)

不過(guò)為了能夠提供給用戶更加輕便的體驗(yàn),通過(guò)專門(mén)為 Clip 設(shè)計(jì)了免申請(qǐng)的通知术裸、定位權(quán)限倘是。不過(guò)也有限制:免申請(qǐng)的通知只在 8 個(gè)小時(shí)內(nèi)有效。位置只能獲取一次袭艺。如果 app 需要重度使用這兩類(lèi)權(quán)限就還是和原來(lái)一樣搀崭,可以彈窗申請(qǐng)。

某些高級(jí)應(yīng)用能力也會(huì)受限猾编,需要在完整的應(yīng)用中才能使用:

  • 不能請(qǐng)求追蹤授權(quán)
  • 不能進(jìn)行后臺(tái)請(qǐng)求任務(wù)
  • 沒(méi)在激活狀態(tài)藍(lán)牙連接會(huì)斷開(kāi)

總的而言雖然有一些限制瘤睹,但是這些限制的出發(fā)點(diǎn)是希望開(kāi)發(fā)者關(guān)注 Clip 的正確使用場(chǎng)景。對(duì)于 Clip 所提倡的使用場(chǎng)景里答倡,蘋(píng)果提供的能力是完全夠用的轰传。

一些技術(shù)細(xì)節(jié)

可以建立一個(gè)共享 targets 的 Asset catalog 來(lái)共用圖片資源。

App Clip

image

在 Clip 中申請(qǐng)的授權(quán)瘪撇,在下載完整應(yīng)用后會(huì)被同步到應(yīng)用中绸吸。

通過(guò) App Group Container 來(lái)共享 clip 和 app 的數(shù)據(jù)。

App Clip

image

Clip 的 url 可以配置參數(shù):

App Clip

image

在 App Store connect 中還可以針對(duì)指定的參數(shù)配置不一樣的標(biāo)題和圖片设江。比如一家連鎖咖啡店锦茁,可能不同的店你希望彈出的標(biāo)題圖片是不一樣的,可以進(jìn)行單獨(dú)的配置叉存。

App Clip

image

總結(jié)

蘋(píng)果給定義的 Clip 的關(guān)鍵詞是:lightweight码俩、native、fast歼捏、focused稿存、in-the-moment experience。

Clip 在特定的線下場(chǎng)景里有著相當(dāng)好的用戶體驗(yàn)瞳秽。對(duì)于已經(jīng)擁有獨(dú)立 app 的公司來(lái)說(shuō)瓣履,開(kāi)發(fā)一個(gè) clip 應(yīng)用的成本并不高。我個(gè)人還是期待這樣一個(gè)好的技術(shù)可以被更多開(kāi)發(fā)者接納练俐,可以提供給用戶更好的體驗(yàn)袖迎。對(duì)于小程序,clip 的場(chǎng)景窄的多,兩者并不是直接競(jìng)爭(zhēng)關(guān)系燕锥。我更愿意看做是特定場(chǎng)景下辜贵,對(duì)于小程序原生能力不足的一種補(bǔ)充。

青山不改归形,綠水常流托慨。謝謝大家支持!O玖瘛厚棵!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蔼紧,隨后出現(xiàn)的幾起案子窟感,更是在濱河造成了極大的恐慌,老刑警劉巖歉井,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異哈误,居然都是意外死亡哩至,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)蜜自,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)菩貌,“玉大人,你說(shuō)我怎么就攤上這事重荠〖祝” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵戈鲁,是天一觀的道長(zhǎng)仇参。 經(jīng)常有香客問(wèn)我,道長(zhǎng)婆殿,這世上最難降的妖魔是什么诈乒? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮婆芦,結(jié)果婚禮上怕磨,老公的妹妹穿的比我還像新娘。我一直安慰自己消约,他們只是感情好肠鲫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著或粮,像睡著了一般导饲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,115評(píng)論 1 296
  • 那天帜消,我揣著相機(jī)與錄音棠枉,去河邊找鬼。 笑死泡挺,一個(gè)胖子當(dāng)著我的面吹牛辈讶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播娄猫,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼贱除,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了媳溺?” 一聲冷哼從身側(cè)響起月幌,我...
    開(kāi)封第一講書(shū)人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎悬蔽,沒(méi)想到半個(gè)月后扯躺,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蝎困,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年录语,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片禾乘。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡澎埠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出始藕,到底是詐尸還是另有隱情蒲稳,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布伍派,位于F島的核電站江耀,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏诉植。R本人自食惡果不足惜决记,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望倍踪。 院中可真熱鬧系宫,春花似錦、人聲如沸建车。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)缤至。三九已至潮罪,卻和暖如春康谆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嫉到。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工沃暗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人何恶。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓孽锥,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親细层。 傳聞我的和親對(duì)象是個(gè)殘疾皇子惜辑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容