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