簡(jiǎn)介
appclip是一個(gè)用戶(hù)需要時(shí)才由系統(tǒng)觸發(fā)下載的native小程序
appclip關(guān)聯(lián)宿主App诈乒,但沒(méi)有宿主app也可以運(yùn)行
Appclip experience是打開(kāi)鏈接后用戶(hù)看到彈起的小卡片胰坟,是開(kāi)啟appClip的入口,初次下載后可以通過(guò)用戶(hù)界面上的對(duì)應(yīng)icon再次打開(kāi)视卢。一個(gè)appclip可以有多個(gè)appclip experience
用戶(hù)使用時(shí)通過(guò)各種途徑比如NFC或掃碼獲取到url,Appclip experience會(huì)拉起一個(gè)小卡片是钥,用戶(hù)點(diǎn)擊Open后觸發(fā)appclip下載并啟動(dòng)老翘,通過(guò)NSUserActivity獲取到url,在appclip里路由到指定頁(yè)面舔哪。
喚起applicp入口:NFC欢顷、二維碼、AppclipCode尸红、蘋(píng)果地圖上的鏈接吱涉、Siri附近推薦刹泄、Safari鏈接外里、短信里的鏈接(微信鏈接應(yīng)該需要跳轉(zhuǎn)到safari打開(kāi))
Appclip Code:
appclip的一個(gè)優(yōu)勢(shì)是可以將宿主app入口比較深的模塊立即暴露給用戶(hù)在最需要的時(shí)機(jī)打開(kāi)。對(duì)于宿主app特石,啟動(dòng)入口更多了盅蝗;對(duì)于功能模塊來(lái)說(shuō),在用戶(hù)手機(jī)上有自己的固定入口姆蘸,曝光機(jī)會(huì)更多墩莫,用戶(hù)觸達(dá)路徑更短了
開(kāi)發(fā)appclip
其實(shí)和開(kāi)發(fā)一個(gè)app類(lèi)似芙委,盡量重用宿主app里已有代碼
app工程里新增一個(gè)appclip target,asset和文件加到appclip target狂秦,添加相關(guān)依賴(lài)庫(kù)
不支持的庫(kù): CallKit, CareKit, CloudKit, HealthKit, HomeKit, ResearchKit, SensorKit, and Speech
Link appclip三部曲
1. 配置web服務(wù)器和appclip
跟添加webcredential自動(dòng)填充密碼的步驟類(lèi)似灌侣,webServer根路徑要放一個(gè)文件,key為“appclip”裂问,value加上appclip的bundle id侧啼。
從NSUserActivity拿到url,解析后跳轉(zhuǎn)對(duì)應(yīng)頁(yè)面堪簿,如果用戶(hù)已安裝宿主app痊乾,系統(tǒng)會(huì)打開(kāi)宿主app,所以宿主里也需要保證有相應(yīng)跳轉(zhuǎn)邏輯椭更∧纳螅可參考https://developer.apple.com/videos/play/wwdc2019/717
添加test url 測(cè)試appclip
2. 配置appclip卡片體驗(yàn)和appstore
可參考
相關(guān)限制
如果想在safari和message以外入口打開(kāi),比如NFC虑瀑,一定要設(shè)置下面這個(gè)高級(jí)體驗(yàn)
一個(gè)appclip可以設(shè)置n個(gè)url湿滓,每個(gè)url對(duì)應(yīng)一個(gè)appclip experience,有自己的icon缴川;也可以通過(guò)prefix后加各種query來(lái)拓展一個(gè)appclip experience茉稠,在appclip代碼里路由到不同業(yè)務(wù)邏輯
相關(guān)設(shè)置,可以把彈窗和真實(shí)地址關(guān)聯(lián)
3. 配置smart appclip banner
也就是網(wǎng)頁(yè)里拉起appclip experience的入口把夸,添加網(wǎng)頁(yè)標(biāo)簽即可而线,僅限Safari
default和advanced experience
總結(jié)
Appclip是一個(gè)即用即走的native小程序,專(zhuān)門(mén)用于某個(gè)特定使用場(chǎng)景恋日,需要和app一起提交審核
和宿主app互斥膀篮,如果用戶(hù)已安裝宿主app,則不會(huì)觸發(fā)appclip的下載岂膳,而是直接由appclip experience打開(kāi)宿主app誓竿;如果安裝appclip后再安裝宿主app,appclip會(huì)自動(dòng)卸載
由于appclip觸發(fā)時(shí)機(jī)就是用戶(hù)最需要的時(shí)候谈截,appclip應(yīng)該盡可能小筷屡,來(lái)保證快速下載和迅速啟動(dòng),所以大小有10MB限制簸喂,但可以開(kāi)啟appclip后下載其他需要的資源
支持applePay毙死、notification、登錄等幾乎所有宿主app能力喻鳄,用戶(hù)隱私(比如健康數(shù)據(jù))和一些系統(tǒng)庫(kù)受限
解析二維碼或蘋(píng)果碼得到url扼倘,對(duì)應(yīng)一個(gè)appclip experience,在appstore配置好后除呵,系統(tǒng)解析到對(duì)應(yīng)url再菊,會(huì)彈出對(duì)應(yīng)appclip experience爪喘,用戶(hù)點(diǎn)擊open后,自動(dòng)下載app clip的二進(jìn)制文件運(yùn)行
appclip下載后纠拔,會(huì)在用戶(hù)手機(jī)界面保留appclip experience圖標(biāo)秉剑,可以再次打開(kāi),appclip幾天不用會(huì)卸載稠诲,所以只能作為cache存儲(chǔ)數(shù)據(jù)
可以通過(guò)SKOverLay引導(dǎo)用戶(hù)下載宿主app
可以和app共享數(shù)據(jù)秃症、權(quán)限,安裝app后用戶(hù)隱私權(quán)限自動(dòng)遷移到宿主App吕粹,放在group container里的用戶(hù)數(shù)據(jù)會(huì)自動(dòng)遷移到app种柑,group container外的數(shù)據(jù)會(huì)隨app clip卸載丟失
Reference
demo:https://developer.apple.com/documentation/swiftui/fruta_building_a_feature-rich_app_with_swiftui
https://developer.apple.com/videos/play/wwdc2020/10174
https://developer.apple.com/videos/play/wwdc2020/10146
https://developer.apple.com/videos/play/wwdc2020/10118
https://developer.apple.com/videos/play/wwdc2020/10172
https://developer.apple.com/documentation/app_clips/creating_an_app_clip
https://developer.apple.com/documentation/app_clips/developing_a_great_app_clip