高级
建立通知群組¶
在通知中心可以將通知以群組方式顯示。屬於相同事件的通知可以分組並摺疊顯示。摺疊的通知群組使用者可以再次展開,子通知(群組內的各個通知)可以個別執行。
可以在 Hive 主控台 > 通知 > Push v4 > 註冊推播活動 > 註冊活動 > 選項 > 群組金鑰 中,將群組金鑰改為使用並新增金鑰值來建立通知群組。在 Hive 主控台建立群組後,發送本地推播及遠端推播時,可以透過 groupId 套用通知群組。套用群組後,通知會如下所示依群組摺疊顯示。
| | |
![]() | ![]() |
iOS 媒體通知¶
利用 Apple 的 UserNotifications 框架,可以在 Notification 中新增圖片、影片等媒體檔案。
![]() | ![]() | ![]() |
運作流程¶
媒體通知功能是利用 iOS 的 Notification Service Extension(以下稱 Extension)來運作。 Notification Service Extension 是一種 App Extension,可以在 Remote Notification 傳送給使用者之前修改 Payload,能在不切換 Context 的情況下使用其他 App 的處理程序(UI 或功能)。 詳細內容請參考以下連結。詳細內容
檔案容量與類型限制¶
附加媒體檔案時有容量限制,詳細內容可以在 UNNotificationAttachment 中確認。
Warning
YouTube 或使用 AVAudioSession 的各種行動遊戲(例如: Summoners War, 별이되어라, Chain Strike)等 App 執行中時,若傳送透過推播接收到的音訊,會發現主畫面(Springboard)重新開機的現象。此現象與 iOS 版本或裝置種類無關,且已確認是在 Apple 系統內部發生衝突,與 Hive 平台無關。已於 2018 年 12 月 20 日向 Apple 方詢問此現象,在對策確定之前,請停止使用透過媒體推播傳送音訊的功能。
| 分類 | 類型 | 限制容量 |
|---|---|---|
| 圖片 | JPG, JPEG, PNG, GIF | 10MB |
| 影片 | MP4, AVI | 50MB |
- 若因網路不穩定而發生逾時,使用者將收到不含媒體的一般 Notification。
- 在網路速度非常慢的情況下,下載最長可能進行 10 分鐘,因此請考量該地區的網路狀態,使用容量適當的媒體。
實作與應用¶
若要下載媒體並重新建構 Notification 物件後傳送給使用者,需要進行一些設定並新增原始碼。
Note
Notification Service Extension 無法包含在函式庫或框架中發布,因此若要使用 Extension,必須依照 Hive 平台提供的指南進行設定。
新增 Extension¶
若要使用媒體通知功能,必須在專案中新增 Notification Service Extension。此方式不需要直接新增或覆寫類別,而是在專案中新增一個新的 Target。
在專案中新增 Target 後,會自動產生 Template。
在 Unity 專案中新增 Target¶
在 Unity 編輯器中,Hive SDK 會透過 PostProcess 功能自動執行新增 Target、撰寫 Info.plist 等一系列流程。只需勾選是否使用媒體推播即可,不需要進行其他作業。
- 在 Unity 編輯器上方選單列進入 Hive > Build project post process settings > iOS 選單
- 啟用 Push Media Contents
在 Unity 以外的環境中新增 Target¶
開始之前,請先確認以下項目。
- 若要使用推播擴充 Target,請確認 Provisioning Profile 中是否包含
aps-environment權限(entitlement)。如有需要,請重新核發 Provisioning Profile 與憑證。 - 若直接透過 Xcode GUI 新增 Target,擴充 Target 的最低支援目標版本預設值可能會被設為最新 OS。請確認此數值未超過主要遊戲 App Target 的最低支援目標版本。
新增 Target 的方法如下。
- 在 Xcode 專案設定中點選**新增 Target** 按鈕 (左下角的 + 按鈕)

- 選擇 Notification Service Extension 後,點選 Next
(自 Xcode 8 起,即可在專案中新增 Notification Service Extension 作為 Target)
- 輸入 Product Name

- 出現如下彈出視窗時,點選 Activate
目前專案中會自動包含(Embedded) Extension,並新增用於建置的 Scheme
- 在 General 分頁中,確認專案已新增 Extension

- 確認專案中已新增 NotificationService 範本類別

新增 HIVEExtensions.framework¶
利用 Hive 平台提供的 HIVEExtensions.framework,可以輕鬆下載媒體。
新增 HIVEExtensions.framework 的方法如下。
-
Hive SDK 支援 CocoaPods。若專案路徑中沒有 Podfile,請執行
pod init。
若已有 Podfile,請開啟檔案並撰寫 target 'NotificationServiceExtension(範例 Target 名稱)' do-end 語法。

-
開啟 NotificationSample(範例專案名稱).xcworkspace 後,可以確認如下所示已新增 Pods 專案。現在可以在 NotificationSample 與 NotificationServiceExtension Target 中匯入 HIVEExtensions。

套用 Framework¶
請在 NotificationService.swift 檔案中依照範例匯入 Framework。 請在範本提供的方法中實作呼叫 HIVEExtensions.framework 所提供的方法,並刪除原本存在於方法內部的初始範本程式碼。
import HIVEExtensions
func didReceiveNotificationRequest(request: UNNotificationRequest, with contentHandler: (UNNotificationContent) -> Void) {
HIVENotificationService.didReceive(request) { content in
guard let content else { return }
contentHandler(content)
}
}
func serviceExtensionTimeWillExpire() {
HIVENotificationService.serviceExtensionTimeWillExpire()
}
#import <HIVEExtensions/HIVEExtensions.h>
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
[HIVENotificationService didReceiveNotificationRequest:request withContentHandler:contentHandler];
}
- (void)serviceExtensionTimeWillExpire {
[HIVENotificationService serviceExtensionTimeWillExpire];
}
套用時的注意事項¶
發送與接收時間的差異¶
由於 Extension 中所有作業結束後才會將 Notification 傳送給使用者,因此發送時間與接收時間可能會有差異,用戶端會依照伺服器發送的時間顯示。
例如,若於 15:00 發送 Notification,而下載完成時間為 15:05,則 Notification 會顯示為於 15:00 送達。
裝置容量¶
透過推播接收的媒體會先儲存在使用者裝置內部,再透過推播顯示,接收到的媒體會儲存在裝置內部的 Cache 資料空間,進而佔用使用者裝置的內部容量。 若使用者裝置內部儲存容量不足,OS 會自行刪除 Cache 資料空間中的資料。
使用者的行動數據使用量¶
下載透過推播接收的媒體時會使用使用者的行動數據,且下載作業會在未經使用者同意的情況下進行,因此下載時可能會產生數據使用費用。
透過推播接收音訊/影片檔案時,請在下載前確認使用者的網路連線狀態,若使用者並非處於 Wi-Fi 連線狀態,則不進行下載,改為顯示不含媒體的推播。
此時,透過推播接收的媒體類型是以媒體 URL 最末端所標示的副檔名來判斷,僅有 [檔案容量與類型限制] 項目中所列的副檔名才會正常顯示。
| 接收到的 URL | wifi | LTE / 3G |
| http://xxx/notimovie.mp4 | 一律先下載後於推播中顯示媒體 | 因具有影片檔案對應的副檔名 (mp4),故無需下載媒體即可顯示推播 |
| http://xxx/notimovie | 一律先下載後於推播中顯示媒體 | 因非音訊檔案/媒體檔案,故下載後才於推播中顯示媒體 |
| http://xxx/notisound.wav | 一律先下載後於推播中顯示媒體 | 因具有音訊檔案對應的副檔名 (wav),故無需下載媒體即可顯示推播 |
| http://xxx/notiimage.jpg | 一律先下載後於推播中顯示媒體 | 因非音訊檔案/媒體檔案,故下載後才於推播中顯示媒體 |
App Transport Security 設定¶
Apple 的預設政策是所有 App 執行的伺服器通訊均需採用 https,透過 Notification 接收的 URL 也會受此政策影響。若要使用 Http 網域進行通訊,需要設定 App Transport Security(以下稱 ATS) 例外。
此時,即使 Application 已設定 ATS 例外,若要在透過推播接收的 url 中使用 http 網域,仍需在 Extension 中設定 ATS 例外。 
Unity 中媒體未傳送的情況¶
Hub connection error Error Domain=NSCocoaErrorDomain Code=4097 "connection to service named com.com2us.hivesdk.normal.freefull.apple.global.ios.universal.NotificationServiceExtension" UserInfo={NSDebugDescription=connection to service named com.com2us.hivesdk.normal.freefull.apple.global.ios.universal.NotificationServiceExtension}
在 Unity 中若出現如上述的錯誤紀錄且媒體未傳送,請確認所建立的 Extension Target 的 Architectures 中,是否同時包含 armv7 與 arm64 值。 
推播動作按鈕¶
推播動作按鈕是指如下所示,長按推播通知時顯示的系統按鈕。透過在推播通知中顯示這類額外按鈕,可以引導使用者做出反應。
Hive SDK 只需簡單設定,即可選擇性實作推播動作按鈕。
| Android | iOS |
|---|---|
![]() | ![]() |
Note
Hive SDK Android 不需要為推播動作按鈕進行額外設定,可以參考單一推播 API - ActionPayload 指南的內容來使用動作按鈕功能。 Hive SDK iOS 可以參考「基本實作方法」與「進階實作方法」兩種方式來實作推播動作按鈕。
Warning
在 Hive SDK iOS 中,若將推播動作按鈕與上述 iOS 媒體通知 一併套用,iOS 媒體通知功能可能會無法完整運作。發送推播時,「媒體網址」與「動作推播」請每次只使用其中一項功能。若同時使用兩項功能,媒體僅會在接收推播時以縮圖形式顯示,長按時不會顯示展開的檢視器。
Warning
若要在 Unreal Engine 中使用 iOS 推播動作,必須使用 Unreal Engine 5.3.2 起提供的 Modern Build 來建置 iOS App(已在 Unreal Engine 5.6.0 / Xcode 16.1 / macOS 15.5 環境下測試完成)。
基本實作方法 (iOS)¶
Hive SDK 提供將常用問答模式化的預設推播動作按鈕組合。內建「確認」、「拒絕」等常用按鈕組合,可以快速套用,並提供彈性架構,可依需求定義並擴充自訂動作按鈕組合。基本提供的推播動作按鈕組合清單如下。
- 確認
- 關閉
- 確認, 關閉
- 執行, 取消
- 一鍵接受, 關閉
- 立即領取, 關閉
- 購買, 拒絕
- 販售, 拒絕
- 接受, 拒絕, 保留
| 類別(類別識別碼) | 按鈕名稱(動作識別碼) |
|---|---|
| 確認(INFO_CATEGORY) | 確認(CONFIRM_ID) |
| 結束(CLOSE_CATEGORY) | 關閉(CLOSE_ID) |
| 選擇確認(CONFIRM_CATEGORY) | 確認(CONFIRM_ID), 關閉(CLOSE_ID) |
| 是否執行(EXECUTE_CATEGORY) | 執行(EXECUTE_ID), 取消(CANCEL_ID) |
| 批次處理(ACCEPT_ALL_CATEGORY) | 一鍵接受(ACCEPT_ALL_ID), 關閉(CLOSE_ID) |
| 立即領取(ACCEPT_NOW_CATEGORY) | 立即領取(ACCEPT_NOW_ID), 關閉(CLOSE_ID) |
| 購買決定(PURCHASE_CATEGORY) | 購買(PURCHASE_ID), 拒絕(DECLINE_ID) |
| 販售請求(SALE_CATEGORY) | 販售(SALE_ID), 拒絕(DECLINE_ID) |
| 決策(ACCEPT_DECISION_CATEGORY) | 接受(ACCEPT_ID), 拒絕(REJECT_ID), 保留(HOLDING_ID) |
若要套用上述推播動作按鈕組合,不需要另外實作程式碼,但必須在專案中新增 Notification Content Extension Target。請參考以下依開發環境區分的「推播動作按鈕組合套用指南」,新增 Target 並啟用推播動作按鈕。
在 Unity 中套用推播動作按鈕組合¶
在 Unity 編輯器中,Hive SDK 會透過 PostProcess 功能自動執行新增 Target、撰寫 Info.plist 等一系列流程。只需勾選是否使用推播動作按鈕即可,不需要進行其他作業。
- 在 Unity 編輯器上方選單列進入 Hive > Build project post process settings > iOS 選單。
- 啟用 Push Action Buttons。
啟用按鈕時顯示的清單,是下方進階實作方法中所使用的 hive_push_actions.json 檔案內 categories 欄位清單的預覽。若未提供該檔案而以基本實作方式進行,則會標示為 'none'。
在 Unity 以外的環境中套用推播動作按鈕組合¶
開始之前,請先確認以下項目。
- 若要使用推播擴充 Target,請確認 Provisioning Profile 中是否包含
aps-environment權限(entitlement)。如有需要,請重新核發 Provisioning Profile 與憑證。 - 若直接透過 Xcode GUI 新增 Target,擴充 Target 的最低支援目標版本預設值可能會被設為最新 OS。請確認此數值未超過主要遊戲 App Target 的最低支援目標版本。
接下來,產生 Xcode 專案(.xcodeproj)後,請依下列順序進行。
步驟 1. 新增推播擴充 Target¶
請依照以下順序建立新的擴充 Target,並將其連結至 App Target。
- 在 Xcode 專案設定中,點選左下角的 + 按鈕以新增 Target。

- 選擇 Notification Content Extension 後,點選 Next。

- 輸入 Product Name,並在 Embed in Application 中指定主要遊戲 App Target。

- 出現以下彈出視窗時,點選 Activate。目前專案中會自動包含(Embedded) Extension,並新增用於建置的 Scheme。

- 在主要遊戲 App Target 的 General > Frameworks, Libraries, and Embedded Content 中,確認已新增上方輸入的 Product Name。

步驟 2. 自訂自動產生的檔案¶
請針對 Product Name 群組中自動產生的以下 3 個檔案,分別執行下列作業。
移除 MainInterface.storyboard¶
移除 Product Name/MainInterface.storyboard。
修改 NotificationViewController.swift¶
修改 Product Name/NotificationViewController.swift。
請將如上所示自動產生的範本類別檔案內容修改如下。您可以複製下方程式碼區塊使用,或新增圖片中以橘色標示的行。
import UIKit
import HIVEExtensions
import UserNotifications
import UserNotificationsUI
class NotificationViewController: UIViewController, UNNotificationContentExtension {
func didReceive(_ notification: UNNotification) {
HiveNotificationContent.didReceive(notification)
}
func didReceive(_ response: UNNotificationResponse) async -> UNNotificationContentExtensionResponseOption {
await HiveNotificationContent.didReceive(response)
}
}
修改 Info.plist¶
修改 Product Name/Info.plist。
請依照以下順序,將下方程式碼貼到最上層 Information Property List 行(根字典,圖片中以橘色標示的行)之下。
- 展開最上層
Information Property List行,並移除其下的NSExtension項目。 - 收合同一行,按右鍵後選擇 Paste(貼上)。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>UNNotificationExtensionInitialContentSizeRatio</key>
<integer>0</integer>
<key>UNNotificationExtensionCategory</key>
<array>
<string>INFO_CATEGORY</string>
<string>CLOSE_CATEGORY</string>
<string>CONFIRM_CATEGORY</string>
<string>EXECUTE_CATEGORY</string>
<string>ACCEPT_ALL_CATEGORY</string>
<string>ACCEPT_NOW_CATEGORY</string>
<string>PURCHASE_CATEGORY</string>
<string>SALE_CATEGORY</string>
<string>ACCEPT_DECISION_CATEGORY</string>
</array>
</dict>
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_NAME).NotificationViewController</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.usernotifications.content-extension</string>
</dict>
</dict>
</plist>
步驟 3. 填寫自訂類別¶
在上一步驟修改的 Info.plist 中,UNNotificationExtensionCategory 的值是先前介紹的 Hive SDK 基本提供類別。若您依照下方進階實作方法在 hive_push_actions.json 中撰寫了自訂類別,請一併新增為陣列元素。
步驟 4. 新增相依性¶
連結推播擴充 Target 所需的相依性。若在產生專案後已透過 CocoaPods 等方式新增,則可略過此步驟。
- 使用相依性管理工具新增
- 手動新增
- 在 Xcode GUI 上手動新增,或撰寫建置流程腳本進行連結
- 若為 Unreal Engine,因不支援其他相依性管理工具,請採用此方式
- 在擴充 Target 設定的 General > Frameworks and Libraries 中新增
HIVEExtensions.framework
若已在各開發環境中套用推播動作按鈕組合,請在 Hive 主控台發送推播時一併指定動作
指定動作時,請使用上方推播動作按鈕組合清單(詳細)中各類別與動作的識別碼(identifier)。
主控台設定的詳細內容請參考主控台指南。
進階實作方法 (iOS)¶
請在 hive_push_actions.json 檔案中定義對應 actions 與 categories 的值。定義完成後,將 hive_push_actions.json 檔案包含至 Target 中並建置 App,App 執行時 Hive SDK 會自動解析檔案內容,並將動作與類別註冊至通知中心。
hive_push_actions.json 檔案的內容範例如下。
hive_push_actions.json 範例
{
"actions": {
"ACCEPT_ALL_ID": {
"ar": "قبول الكل",
"de": "Alle akzeptieren",
"en": "Accept All",
"es": "Aceptar todo",
"fr": "Tout accepter",
"id": "Terima Semua",
"it": "Accetta tutto",
"ja": "一括承諾",
"ko": "일괄 수락",
"pt": "Aceitar tudo",
"ru": "Принять все",
"th": "ยอมรับทั้งหมด",
"tr": "Hepsini Kabul Et",
"vi": "Chấp Nhận Tất Cả",
"zh-Hans": "批量接受",
"zh-Hant": "一鍵接受",
"tl": "Tanggapin ang Lahat"
},
"ACCEPT_ID": {
"ar": "قبول",
"de": "Akzeptieren",
"en": "Accept",
"es": "Aceptar",
"fr": "Accepter",
"id": "Terima",
"it": "Accetta",
"ja": "承諾",
"ko": "수락",
"pt": "Aceitar",
"ru": "Принять",
"th": "ยอมรับ",
"tr": "İzin Ver",
"vi": "Chấp Nhận",
"zh-Hans": "接受",
"zh-Hant": "接受",
"tl": "Tanggapin"
},
"ACCEPT_NOW_ID": {
"ar": "استلام الآن",
"de": "Jetzt erhalten",
"en": "Claim Now",
"es": "Recibir ahora",
"fr": "Recevoir maintenant",
"id": "Klaim Sekarang",
"it": "Prendi ora",
"ja": "今すぐ受け取る",
"ko": "지금 받기",
"pt": "Obter agora",
"ru": "Получить сейчас",
"th": "รับเลย",
"tr": "Şimdi Al",
"vi": "Nhận Ngay",
"zh-Hans": "立即领取",
"zh-Hant": "立即領取",
"tl": "Mag-claim Ngayon"
},
"CANCEL_ID": {
"ar": "تنفيذ",
"de": "Abbrechen",
"en": "Cancel",
"es": "Cancelar",
"fr": "Annuler",
"id": "Batal",
"it": "Annulla",
"ja": "キャンセル",
"ko": "취소",
"pt": "Cancelar",
"ru": "Отменить",
"th": "ยกเลิก",
"tr": "İptal",
"vi": "Hủy",
"zh-Hans": "取消",
"zh-Hant": "取消",
"tl": "Kanselahin"
},
"CLOSE_ID": {
"ar": "إغلاق",
"de": "Schließen",
"en": "Close",
"es": "Cerrar",
"fr": "Fermer",
"id": "Tutup",
"it": "Chiudi",
"ja": "閉じる",
"ko": "닫기",
"pt": "Fechar",
"ru": "Закрыть",
"th": "ปิด",
"tr": "Kapat",
"vi": "Đóng",
"zh-Hans": "关闭",
"zh-Hant": "關閉",
"tl": "Isara"
},
"CONFIRM_ID": {
"ar": "موافق",
"de": "OK",
"en": "OK",
"es": "Confirmar",
"fr": "Voir",
"id": "OK",
"it": "Ok",
"ja": "OK",
"ko": "확인",
"pt": "Confirmar",
"ru": "OK",
"th": "ตกลง",
"tr": "TAMAM",
"vi": "OK",
"zh-Hans": "确认",
"zh-Hant": "確認",
"tl": "Sige"
},
"DECLINE_ID": {
"ar": "رفض",
"de": "Ablehnen",
"en": "Decline",
"es": "Rechazar",
"fr": "Refuser",
"id": "Tolak",
"it": "Rifiuta",
"ja": "拒否する",
"ko": "거절하기",
"pt": "Recusar",
"ru": "Отклонить",
"th": "ปฏิเสธ",
"tr": "Reddet",
"vi": "Từ Chối",
"zh-Hans": "拒绝",
"zh-Hant": "拒絕",
"tl": "Tanggihan"
},
"EXECUTE_ID": {
"ar": "إلغاء",
"de": "Ausführen",
"en": "Run",
"es": "Ejecutar",
"fr": "Exécuter",
"id": "Jalankan",
"it": "Avvia",
"ja": "実行",
"ko": "실행",
"pt": "Executar",
"ru": "Запустить",
"th": "ดำเนินการ",
"tr": "Devam Et",
"vi": "Kích Hoạt",
"zh-Hans": "执行",
"zh-Hant": "執行",
"tl": "Tumakbo"
},
"HOLDING_ID": {
"ar": "الاختيار لاحقًا",
"de": "Halten",
"en": "Hold",
"es": "Pendiente",
"fr": "En attente",
"id": "Tahan",
"it": "Rimanda",
"ja": "保留",
"ko": "보류",
"pt": "Manter",
"ru": "Отложить",
"th": "พักไว้",
"tr": "Tut",
"vi": "Tạm Hoãn",
"zh-Hans": "暂缓",
"zh-Hant": "保留",
"tl": "Hawakan"
},
"PURCHASE_ID": {
"ar": "شراء",
"de": "Kaufen",
"en": "Purchase",
"es": "Comprar",
"fr": "Acheter",
"id": "Beli",
"it": "Compra",
"ja": "購入する",
"ko": "구매하기",
"pt": "Comprar",
"ru": "Купить",
"th": "ซื้อ",
"tr": "Satın Al",
"vi": "Mua",
"zh-Hans": "购买",
"zh-Hant": "購買",
"tl": "Pagbili"
},
"REJECT_ID": {
"ar": " رفض",
"de": "Ablehnen",
"en": "Decline",
"es": "Rechazar",
"fr": "Refuser",
"id": "Tolak",
"it": "Rifiuta",
"ja": "拒否",
"ko": "거절",
"pt": "Recusar",
"ru": "Отклонить",
"th": "ปฏิเสธ",
"tr": "Reddet",
"vi": "Từ Chối",
"zh-Hans": "拒绝",
"zh-Hant": "拒絕",
"tl": "Tanggihan"
},
"SALE_ID": {
"ar": "بيع",
"de": "Verkaufen",
"en": "Sell",
"es": "Vender",
"fr": "Vendre",
"id": "Jual",
"it": "Vendi",
"ja": "販売する",
"ko": "판매하기",
"pt": "Vender",
"ru": "Продать",
"th": "ขาย",
"tr": "Sat",
"vi": "Bán",
"zh-Hans": "出售",
"zh-Hant": "販售",
"tl": "Ibenta"
}
},
"categories": {
"INFO_CATEGORY": [
"CONFIRM_ID"
],
"CLOSE_CATEGORY": [
"CLOSE_ID"
],
"CONFIRM_CATEGORY": [
"CONFIRM_ID",
"CLOSE_ID"
],
"EXECUTE_CATEGORY": [
"EXECUTE_ID",
"CANCEL_ID"
],
"ACCEPT_ALL_CATEGORY": [
"ACCEPT_ALL_ID",
"CLOSE_ID"
],
"ACCEPT_NOW_CATEGORY": [
"ACCEPT_NOW_ID",
"CLOSE_ID"
],
"PURCHASE_CATEGORY": [
"PURCHASE_ID",
"DECLINE_ID"
],
"SALE_CATEGORY": [
"SALE_ID",
"DECLINE_ID"
]
}
}
撰寫內容時,請注意以下事項。
- 每個類別(組合)可設定的按鈕數量上限為 3 個。
- 上方範例是針對基本提供按鈕組合的定義。自訂動作按鈕若使用相同的 identifier 將無法辨識,請使用不重複且可識別的字串。
- 多國語系會依照「遊戲語言」,可輸入 Hive SDK 支援的 17 種語言。英文(
"en")為多國語系字串的預設值,請務必新增。
Note
支援 Unity PostProcess。在 Unity 專案中 hive_config.xml 檔案所在路徑新增 hive_push_actions.json 檔案後,建置 Xcode 專案時會自動將 hive_push_actions.json 檔案新增至 App Target。
Warning
撰寫內容後,請在 Notification Content Extension 的 Info.plist 中 UNNotificationExtensionCategory 新增內容 "categories" 欄位的 key。
若為 Unity 環境,則會自動解析檔案內容並新增。















