【極光筆記】iOS 15推送新特性初探

 

前言

北京時間2021年6月8日凌晨1點,蘋果召開了WWDC 21大會。在會上發佈了新版的iOS 15系統,iOS的主題是Focus, connect, and explore。

 

有關注的同學應該發現了本次主題其中提到的Focus正是在iOS 15當中新增的關於通知的變化。本篇文章所分享的就是iOS 15中新增的推送特性。

 

Focus(專注模式)

其實在iOS 15之前也有專注模式,iOS 15的專注模式,其實是當前版本勿擾模式的演進產品。

 

能看到第一部分就是具體的模式,默認的有個人,勿擾模式,工作,睡眠。其實四種沒什麼區別就是用名字作爲區分,在不同時間選擇不同的模式,來給自己帶來更好的通知使用體驗。我們還可以手動添加專注模式,設置專注模式的名字,圖標,以及對應的配置。

 

 

我們可以設置在所有設備中共享專注模式,也可以設置哪些App能夠訪問用戶的專注狀態,該功能目前僅開放給蘋果自己的App,目前筆者還沒有發現有代碼和設置能夠訪問該功能。

 

電話成爲了唯一一個可以單獨在專注模式上進行全局設置的App,可以在專注模式打開時指定能夠接收的電話。

 

我們點擊“個人”進入具體的專注模式,能看到有多個配置。我們可以爲某些通訊錄成員和App設置一個不受專注模式影響的白名單。

 

還可以設置是否打開時效性通知(Time Sensitive)接收功能,時效性通知也是iOS 15中提供的一個新的通知特性,我們會在後續的文章中提到。

 

 

設置共享專注狀態,和剛剛那個全局的設置可以訪問專注模式的功能類似,就是作用域不一樣了,但是還是和剛剛的問題一樣,目前沒發現在哪裏能夠獲取到專注模式的狀態,推測蘋果會在後續的版本中更新(另一種可能是使用getNotificationSettingsWithCompletionHandler接口進行獲取,只是獲取到的不是專注模式,這個官方地方文檔描述確實有點模糊,還不能完全確認)

 

Interruption level(中斷級別)

在iOS 15及更高版本中,人們可以通過指定的消息派發時間和設置專注模式對通知行爲進行更加細粒度的調整。派發通知計劃允許用戶選擇是立即接收通知,還是在他們選擇的時間段內使用摘要派發通知。專注模式幫助人們在他們定義的時間段內過濾通知,例如睡眠、工作、閱讀或駕駛等活動。

 

人們可以在專注模式中爲選擇的聯繫人和應用程序設置白名單以接受通知。

 

例如,在以工作爲中心的環境中,人們可能希望立即收到來自同事、家庭成員和與工作相關的應用程序的消息。人們可能還希望在開啓專注模式期間接收所有對時間敏感的通知。對時間敏感的通知包含人們希望立即獲得的基本信息。

 

需要注意的是即使專注模式可能會延遲通知的派發,通知本身也會在到達時立即可用。

 

爲應用程序可以發送的每個通知指定系統定義的中斷級別。系統使用中斷級別幫助確定何時派發通知;當通信通知到達時,系統使用發送方的配置確定何時派發通知。

 

系統爲非通信通知定義了四個中斷級別:

 

  • Passive(被動的)。人們可以在閒暇時查看信息,比如餐廳推薦。
  • Active(活動,默認設置)。當信息到達時,人們可能希望知道它,比如他們最喜歡的球隊的分數更新。
  • Time Sensitive(時間敏感)。直接影響用戶並需要他們立即關注的信息,如帳戶安全問題或快遞信息。
  • Critical(重要)。直接影響用戶並要求其立即關注的有關個人健康和公共安全的緊急信息。關鍵通知非常罕見,通常來自政府和公共機構或醫療保健應用程序。使用該中斷級別需要申請對應的權限。

 

 

四種級別對應的能力如上圖。被動和活躍是一樣的,時間敏感的級別能夠覆蓋定時推送功能和專注模式,重要級別的通知甚至能夠屏蔽電話和靜音設置。

 

在這個新特性上我們能看到一些蘋果歷史以來的設計思路,蘋果希望開發者能夠準確設置每個通知的緊急程度來建立信任。

 

用戶有幾種方法來調整他們從你的應用程序接收通知的方式,例如:關閉所有通知。因此在分配中斷級別時,必須儘可能現實。我想你不會希望用戶覺得你使用了一個高級別的通知去打斷他們的工作,但是信息確是一個低級別的信息,這很可能會導致用戶關閉你App的通知權限。

 

當你的應用程序第一次收到時間敏感的通知時,系統會描述這種通知是如何工作的,如果用戶不同意這些信息需要立即關注,系統會提供一種關閉通知的方法。

 

切勿使用時間敏感的中斷級別發送營銷通知。用戶可能已經同意從你的應用程序接收營銷通知,但是這樣的通知不應該突破專注模式或預定的通知派發設置。

 

關於中斷級別這段有很大一部分是翻譯的蘋果原文,有興趣的同學可以看一下。

 

筆者嘗試全鏈路的去驗證下不同中斷級別的體驗,然而iOS 15剛剛發佈,處於早期階段,在《生成一個遠程通知》文檔和《發送通知請求到APNs》文檔中,暫時沒有找到相關資料,因此無法實測。

 

於是我轉換了一個思路,雖然API沒有更新,但是代碼可能已經更新了,於是我更新了Xcode 13.0 beta版本並查看對應的框架API。

 

 

我們可以在<UserNotifications/UserNotifications.h>框架中找到最新的iOS 15相關的代碼,在<UserNotifications/UNNotificationContent.h>中我們能看到新的關於中斷級別的枚舉。

 

我們看英文描述,在這裏能看到被動和活躍中斷級別的區別。被動的中斷級別不會亮屏和播放推送聲音,並且只會加入到通知列表(應該說的是通知中心)中,而活躍的也就是默認的,會立刻被展示並亮屏,播放推送聲音。

 

除此之外,還有對應的新增的屬性。

 

 

interruptionLevel應該很好理解,就是該推送的中斷級別。除此之外還能看到一個屬性叫做relevanceScore相關分數,相關分數的高低會影響在通知中心中的排序,這個在WWDC中有一嘴帶過,但是在蘋果通知導讀文檔中卻沒有提到,這個屬性應該在APNs的API也能夠設置纔對。

 

 

不想現在就下載Xcode beta版本,但是又想了解最新的API的在官方的iOS文檔中也能夠看到。

 

Xcode越來越大了

 

 

 

定時推送摘要

最後在說一下這個定時推送摘要,前面有經常說到一個根據實際派發推送通知的就是這個。

 

由於官方APNs API沒更新的限制,筆者還沒有完全搞清楚定時推送摘要的具體邏輯。我們先看一下在iOS 15中的設置部分。

 

 

在通知界面增加了一個定時推送摘要的入口,我們打開這個功能,然後根據時間設置一天推送幾次摘要,我們需要選擇具體的App適應這個配置,默認是全關閉的。比如說我設置了一天4次派發通知摘要,那麼在發送通知的時候應該不會立即提示,而是等到摘要的時間纔會顯示。

 

但是實際現象是這樣的,我發送了一條通知,立即就收到了,然後比如說我在下午5點發的消息,消息被放到了一個新的分類叫做晚上的推送摘要中和預期不太一樣,推測可能是因爲默認消息類型是活動導致的,可能需要發送被動類型的消息才能觸發這個功能。

 

對於摘要這一塊,還有比較多的不確定的東西需要探索。

 

那麼到這裏,關於iOS 15上的通知新特性的初探就結束了,筆者在寫這篇文章的時候還是覺得目前iOS 15仍處於一個Beta版本的早期階段,查閱文檔發現的部分功能都還處於未完全放開的階段,按照蘋果的習慣在發佈GM版本之前應該還有有一些調整,所以該文章中的內容是有被改動的可能性的,請大家還是以最新的iOS 15上能看到的效果爲準。

 

感謝各位閱讀。文章編寫於2021年6月21日,iOS 15第一個Beta版本。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章