帶你走進(jìn)靈動(dòng)島
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
一、簡(jiǎn)介實(shí)時(shí)活動(dòng) (Live Activity),是 iOS16 新增的擴(kuò)展組件功能,可以在靈動(dòng)島和鎖定屏幕上顯示應(yīng)用程序的實(shí)時(shí)數(shù)據(jù)。用于追蹤事件和任務(wù)進(jìn)度實(shí)時(shí)活動(dòng)的開始和結(jié)束都是離散的,具體畫面場(chǎng)景如下:蘋果 蘋果在 iPhone 14 Pro 及 iPhone 14 Pro MAX 上推出了靈動(dòng)島。靈動(dòng)島將 iPhone 前置鏡頭和軟件通知結(jié)合在一起的全新設(shè)計(jì),用出色的交互設(shè)計(jì)掩蓋硬件的缺陷,是一次交互玩法的革新。靈動(dòng)島可以通過點(diǎn)按、長(zhǎng)按、輕掃來進(jìn)行交互,最多支持兩個(gè)應(yīng)用同時(shí) “登島”。 靈動(dòng)島全稱 Dynamic Island,作為 iOS 中實(shí)時(shí)活動(dòng)(Live Activities)功能的一部分,用來展示需要實(shí)時(shí)更新的消息。例如外賣配送信息,地圖實(shí)時(shí)導(dǎo)航信息等。靈動(dòng)島有 3 種展現(xiàn)形式。 1.1 展現(xiàn)形式1.1.1 緊湊(Compact)當(dāng)系統(tǒng)只有 1 個(gè)實(shí)時(shí)活動(dòng)的內(nèi)容時(shí),靈動(dòng)島默認(rèn)使用緊湊模式。緊湊模式下 UI 由頭部(Leading side)和尾部(Trailing side)組成,如圖所示。用戶可以點(diǎn)擊靈動(dòng)島打開 App 查看實(shí)時(shí)活動(dòng)的內(nèi)容 1.1.2 最小化 (Minimal)當(dāng)系統(tǒng)有多個(gè)實(shí)時(shí)活動(dòng)的內(nèi)容時(shí),靈動(dòng)島自動(dòng)切換使用最小化模式。最小化模式下由附著的頭部(Leading(attached))和分割開的尾部(Trailing(detached))組成,如圖所示。和緊湊模式一樣,最小化模式也支持用戶點(diǎn)擊打開 App。 1.1.3 擴(kuò)展(Expanded)當(dāng)用戶在緊湊或最小化模式輕掃或長(zhǎng)按靈動(dòng)島時(shí),靈動(dòng)島可以切換成擴(kuò)展模式。用于向用戶展示更多信息。擴(kuò)展模式的 UI 設(shè)計(jì)盡量保持和緊湊模式一致,用戶從緊湊模式切換到擴(kuò)展模式會(huì)有一個(gè)平滑的體驗(yàn)。 當(dāng)我們向 App Store 提交了適配靈動(dòng)島的 App 版本時(shí),以上 3 種模式都需要適配。 二、場(chǎng)景限制2.1 樣式限制1、實(shí)時(shí)活動(dòng)針對(duì)鎖定屏幕和靈動(dòng)島提供了不同的視圖。鎖定屏幕可以出現(xiàn)在所有支持 iOS 16 的設(shè)備上。而靈動(dòng)島在支持設(shè)備上,使用以下視圖顯示實(shí)時(shí)活動(dòng):緊湊前視圖、緊湊尾視圖、最小視圖和擴(kuò)展視圖。 2、當(dāng)用戶觸摸靈動(dòng)島,且靈動(dòng)島中有緊湊或最小視圖,同時(shí)實(shí)時(shí)活動(dòng)更新時(shí),會(huì)出現(xiàn)擴(kuò)展視圖。在不支持靈動(dòng)島的設(shè)備上,擴(kuò)展視圖顯示為實(shí)時(shí)活動(dòng)更新的橫幅。 3、為確保系統(tǒng)可以在每個(gè)位置顯示 App 的實(shí)時(shí)活動(dòng),開發(fā)者必須支持所有視圖。 建議:同場(chǎng)景多卡片由于樣式趨同且折疊,不建議同時(shí)創(chuàng)建多卡片 靈動(dòng)島頁面需要實(shí)現(xiàn)的部分有 4 個(gè): a、不支持靈動(dòng)島的機(jī)型 或 鎖屏?xí)r的 顯示 b、緊湊級(jí)展示(即左右貼合靈動(dòng)島的展示) c、多 Live activity 時(shí)的展示(即極小視圖,左貼合,右分離) d、擴(kuò)展視圖(長(zhǎng)按靈動(dòng)島時(shí)觸發(fā)) 備注:還有一個(gè) App 同時(shí)存在的實(shí)時(shí)活動(dòng)面板最多只能創(chuàng)建 5 個(gè),這也是一個(gè)場(chǎng)景約束條件。Error requesting delivery Live Activity The operation couldn’t be completed. Maximum number of activities for target already exists 2.2 時(shí)間限制實(shí)時(shí)活動(dòng)最多可以保持八小時(shí)的活動(dòng)狀態(tài),除非其應(yīng)用程序或人員在此限制之前結(jié)束活動(dòng)。超過八小時(shí)限制后,系統(tǒng)自動(dòng)結(jié)束直播活動(dòng),并立即將其移出動(dòng)態(tài)島。但是,實(shí)時(shí)活動(dòng)會(huì)保留在鎖定屏幕上,直到有人將其刪除,或者在系統(tǒng)將其刪除之前最多再保留四個(gè)小時(shí)(以先到者為準(zhǔn))。因此,實(shí)時(shí)活動(dòng)在鎖定屏幕上保留最多 12 小時(shí)。 官方表述:https://developer.apple.com/documentation/activitykit/displaying-live-data-with-live-activities A Live Activity can be active for up to eight hours unless your app or a person ends it before this limit. After the 8-hour limit, the system automatically ends it. When a Live Activity ends, the system immediately removes it from the Dynamic Island. However, the Live Activity remains on the Lock Screen until a person removes it or for up to four additional hours before the system removes it — whichever comes first. As a result, a Live Activity remains on the Lock Screen for a maximum of twelve hours. 2.3 數(shù)據(jù)更新每個(gè)實(shí)時(shí)活動(dòng)運(yùn)行在自己的沙盒中,與小組件不同的是,它無法訪問網(wǎng)絡(luò)或接收位置更新。若要更新實(shí)時(shí)活動(dòng)的動(dòng)態(tài)數(shù)據(jù),少量 (不能超過 4KB) 數(shù)據(jù)可通過遠(yuǎn)程推送通知發(fā)送,或通過 ActivityKit 框架后臺(tái)活動(dòng)刷新數(shù)據(jù)。 ActivityKit 更新和 ActivityKit 推送通知的更新動(dòng)態(tài)數(shù)據(jù)大小不能超過 4 KB。 2.4 網(wǎng)絡(luò)限制a、卡片本身禁止定位以及網(wǎng)絡(luò)請(qǐng)求,數(shù)據(jù)刷新依賴本地刷新,實(shí)施活動(dòng)推送刷新,同 2) 所述; b、Live Activity 內(nèi)部禁用網(wǎng)絡(luò)圖片,傳統(tǒng)的服務(wù)端傳圖片 URL 的方式無法滿足實(shí)際使用,但是希望傳入訂單圖片來個(gè)性化地表達(dá)并且區(qū)分不同訂單。 iOS 16 beta 版創(chuàng)建時(shí)可以通過將圖片轉(zhuǎn)為 Data 格式傳入卡片,但是 iOS16.1 該方案僅限傳入 4KB 左右的圖片(API 限制),因此暫時(shí)不考慮非本地圖片方案,采用內(nèi)置圖片方式實(shí)現(xiàn)。 2.5 埋點(diǎn)限制** 場(chǎng)景情況:** 由于默認(rèn)情況點(diǎn)擊是回主程序,而并不是固定頁面,因此有必要自定義 widgetUrl (如用于回到訂單頁面),也可以通過 Link 實(shí)現(xiàn)分區(qū)域的跳轉(zhuǎn),Link 和 widgetUrl 共存時(shí),點(diǎn)擊 Link 區(qū)域會(huì)響應(yīng) Link,因此兩者同時(shí)使用即可。 無法在 widget 內(nèi)部直接添加埋點(diǎn),并且靈動(dòng)島收起時(shí),僅支持添加同一個(gè) widgetUrl,對(duì)于收起狀態(tài)添加 Link 并沒有響應(yīng)。 ** 埋點(diǎn)方式:** 因?yàn)辄c(diǎn)擊直接跳轉(zhuǎn)到主 App,因此考慮將埋點(diǎn)參數(shù)加入 URL 參數(shù)即可,主 App 解析時(shí)埋點(diǎn)。但是無法記錄包括用戶查看、用戶關(guān)閉(關(guān)閉卡片 繼續(xù)發(fā)送推送也沒有報(bào)錯(cuò) 因此無法判斷)等行為的埋點(diǎn)。 對(duì)于靈動(dòng)島的區(qū)分,實(shí)際測(cè)試發(fā)現(xiàn),在展開模式下,可以加入 Link 并且可以正常響應(yīng),這與官方文檔中的描述一致。 三、適配3.1 UI 適配1、尺寸: 目前只有 iPhone 14 Pro 及 iPhone 14 Pro MAX 具有靈動(dòng)島功能。在兩種機(jī)型上,靈動(dòng)島的圓角半徑都為 44Points,這個(gè)數(shù)值和前置深感攝像頭的半徑是一樣的。按照前述的 3 種模式,靈動(dòng)島的具體參數(shù)如下表格所示(表格涉及的數(shù)值表示 Points)。
2、顏色 開發(fā)者無法更改靈動(dòng)島的背景顏色,只能更改文字顏色、素材顏色、靈動(dòng)島邊框顏色等。UI 適配需要考慮系統(tǒng)的深色模式,必要情況可以使用兩套 UI。 3.2 開發(fā)適配3.2.1 開發(fā)框架簡(jiǎn)介蘋果在 iOS 16.1 正式對(duì)外開放了靈動(dòng)島適配框架 3.2.2 權(quán)限管理靈動(dòng)島作為實(shí)時(shí)活動(dòng)的一部分,需要實(shí)時(shí)活動(dòng)權(quán)限才能正常展示。和通知權(quán)限,相機(jī)權(quán)限等類似,實(shí)時(shí)活動(dòng)權(quán)限需要 App 3.2.3 生命周期Request Update Observe avtivity state End 四、遠(yuǎn)程通知更新數(shù)據(jù)實(shí)時(shí)活動(dòng)也支持遠(yuǎn)程推送更新,根據(jù)文檔以下 9 點(diǎn)要求實(shí)現(xiàn) (avtivity 遠(yuǎn)程推送每小時(shí)有通知預(yù)算 (數(shù)量未明確),超出后系統(tǒng)將關(guān)閉通知) 1、確保啟動(dòng) activity 時(shí) [ 2、獲取啟動(dòng)后的 activity 的推送令牌 pushToken,傳給服務(wù)端用來推送更新 activity;(實(shí)時(shí)活動(dòng)的 pushToken 不是消息通知的 token,這個(gè)是獨(dú)立出來的) 3、服務(wù)端推送的更新內(nèi)容字段需要和 ActivityAttributes 的 4、設(shè)置推送的報(bào)頭 apns-push-type 的值為 liveactivity; 5、設(shè)置推送的報(bào)頭 apns-topic 的值為.push-type.liveactivity; 6、正確的推送對(duì)應(yīng)的內(nèi)容和狀態(tài); 7、使用 8、當(dāng) Activity 結(jié)束時(shí),服務(wù)器端的 pushToken 將失效; 注意: 1、不用為推送提供聲音,如果推送延遲,在 activity 結(jié)束后收到時(shí)將被忽略,avtivity 每小時(shí)有通知預(yù)算 (數(shù)量未明確),超出后系統(tǒng)將關(guān)閉通知; 2、實(shí)時(shí)活動(dòng)的 pushToken 不是消息通知的 token,這個(gè) token 上報(bào)到 JDPush 服務(wù),需要單獨(dú)管理和歸類。 備注:
運(yùn)用場(chǎng)景 1、需在屏幕駐留的文字、圖像為主的信息:如地圖導(dǎo)航、airdrop 傳輸情況等; 2、后臺(tái)進(jìn)行的音頻類:如接電話、放音樂、錄音、倒計(jì)時(shí)等; 3、即時(shí)交互反饋:如充電、靜音、人臉識(shí)別等。超過這三類信息后,桌面可能會(huì)變得雜亂無章 參考文章 https://developer.apple.com/videos/play/wwdc2023/10194 https://developer.apple.com/videos/play/wwdc2023/10184 https://www.jianshu.com/p/f410eba6c392 https://www.bilibili.com/read/cv18549307/
該文章在 2023/12/26 9:25:16 編輯過 |
相關(guān)文章
正在查詢... |