封存 Google 訊息的 RCS 訊息

背景

本文將說明如何整合、測試及驗證 Google 訊息中的 RCS 封存功能。

解決方案總覽

  • 用戶端封存:封存供應商必須開發 Android 應用程式,供 IT 管理員部署至受管理裝置。
  • 由 Google 訊息提供技術支援:這項功能需要將 Google 訊息設為預設訊息應用程式。IT 管理員可以使用 Android Enterprise 控制項強制設定預設應用程式。
  • 需要 Android Enterprise:這項功能僅適用於全代管裝置。

工作流程

RCS 訊息封存工作流程
圖 1. RCS 封存工作流程。
  1. IT 管理員使用 Android Enterprise 部署封存應用程式。
  2. 選用:IT 管理員使用 Android Enterprise 控制項,透過程式輔助方式設定封存應用程式。
    • 必要條件:
      • 封存應用程式需要 READ_SMS 權限
    • 建議做法:
      • 禁止使用者控管 Google 訊息和封存應用程式
      • IT 管理員強制將 Google 訊息設為預設的簡訊/RCS 用戶端
      • 如果封存解決方案支援 MCM,IT 管理員也可以選擇使用 MCM 預先註冊封存應用程式
  3. IT 管理員使用多重客戶管理在 Google 訊息中啟用封存功能。
  4. Google 訊息會在訊息事件發生時,將訊息資料寫入 Android。訊息事件包括:傳送訊息、接收訊息、編輯訊息或刪除訊息。
  5. Google 訊息會通知封存應用程式有新的訊息事件,包括 RCS 和簡訊/多媒體訊息。
  6. 封存應用程式會從 Telephony 提供者讀取訊息資料。
  7. 封存應用程式會批次處理更新,然後傳送至伺服器。

實作

Google 訊息 MCM 結構定義

封存功能是在 Google 訊息中透過 messages_archival 鍵設定,管理員可透過套件名稱指定封存應用程式,該鍵接受字串值。如果值為空白、空值或沒有鍵,則會停用封存功能。如果指定值,系統會啟用封存功能,且 Google 訊息會在訊息事件中,將明確的廣播傳送至指定套件名稱。

通知封存應用程式

  • 系統會將明確廣播訊息傳送至指定的封存應用程式,並採取以下動作: GOOGLE_MESSAGES_ARCHIVAL_UPDATE
  • 在某些情況下,訊息 URI 會包含在廣播額外資訊中,可用於擷取觸發廣播的訊息: com.google.android.apps.messaging.EXTRA_ARCHIVAL_URI

封存應用程式規定

必要條件:

  • 聲明 FOREGROUND_SERVICE 權限
  • 在資訊清單中聲明前景服務,包括封存更新廣播的意圖篩選器,並授予權限,確保只有 Google 訊息可以啟動服務。
<service
        android:enabled="true"
        android:foregroundServiceType="shortService"
        android:name=".TestService"
        android:exported="true"
        android:permission="android.permission.WRITE_SMS">
      <intent-filter>
        <action android:name="GOOGLE_MESSAGES_ARCHIVAL_UPDATE" />
      </intent-filter>
</service>
  • 實作該服務來處理意圖、從電話讀取資料,並比較電話的先前狀態與目前狀態,判斷訊息事件的類型,然後將訊息事件和電話的更新狀態都快取起來,前者會上傳至封存服務後端,後者則會在下一個事件中用於比較。

建議做法:

  • 使用 JobScheduler 將訊息事件批次更新至伺服器。

    • IT 管理員可以確保使用者不會終止應用程式或刪除應用程式資料,讓批次更新作業順利進行。
    • 將前台服務時間縮短至僅符合重要封存需求,可將對使用者體驗和系統健康狀態的影響降至最低。
  • 使用 MCM 以程式輔助方式設定應用程式 (如「Messages MCM schema」一文所述),這樣使用者就不必手動登入或指定伺服器註冊詳細資料。

測試

如要測試實作結果,請使用 TestDPC 或偏好的 EMM 用戶端。