跳轉至

高级

創建通知組

您可以將顯示在通知中心的通知進行分組。來自同一事件的通知可以被分組並折疊。折疊的通知組可以由用戶再次展開,並且通知組中的每個成員都可以單獨訪問。

通知組可以在 the Hive 控制台 > Notification > Register Push Campaign > Campaign Register > Option > Group Key 中創建。將組鍵更改為使用並添加組鍵值。在 Hive 控制台中創建組後,您可以在發送 本地推送 或遠程推送時使用 groupId 應用通知組。如果應用了通知組,則通知將按組顯示並折疊,如下所示。

Android
iOS

iOS 10 進階通知

隨著 Apple 在 iOS 10 中新增了 UserNotifications.framework,您可以在通知中附加圖片或視頻片段。

JPG(圖片)
GIF(圖片)
MP4(視頻片段)

系統需求

  • 它需要 Xcode 8.0 和可用的 MacOS 版本,以及能够安装 iOS 10 的设备。
  • 在较低版本的 OS 中,即使应用了扩展,仍然会收到相同的通知。

  • iOS 10 支持的设备

Note

iOS 10.1 和更低版本可能會因為操作系統缺陷而在運行擴展時遇到問題。如果是這樣,請將擴展的部署目標設置為 10.2,並為操作系統 10.1 和更低版本實現以接收一般通知類型。

執行過程

此功能通过利用 通知服务扩展(“扩展”)的 iOS 运行。

通知服務擴展是應用擴展之一,允許您在遠程通知傳送給用戶之前修改有效載荷。這是一種技術,可在不改變上下文的情況下使用其他應用程序(UI或功能)的過程。

欲了解更多信息,请参阅 更多

  • 遠端通知應用擴展的傳輸過程

檔案容量和類型限制

容量限制附加媒體檔案。 有關此更多資訊,請參見 UNNotificationAttachment

Warning

如果用户在运行Youtube或各种类型的手机游戏(例如,召唤师战争、龙之怒吼、连锁打击)时通过AVAudioSession传输推送服务发送的音频,主屏幕(Springboard)将会重启。无论iOS版本、设备类型和Hive SDK如何,苹果的内部系统都会崩溃。
我们于2018年12月20日向苹果请求解决此错误,因此请确保停止通过媒体通知使用音频传输功能

類型 格式 容量
音訊 WAV, MP3, MP4(音訊) 5MB
圖片 JPG, JPEG, PNG, GIF 10MB
視頻 MP4, AVI 50MB
  • 如果因網絡問題發生超時,使用者將收到沒有媒體的通用通知。
  • 在低速網絡上,下載可能需要長達10分鐘,因此請確保根據當地網絡條件使用合理容量的媒體。

實作

下載媒體、重新配置通知對象並將其傳遞給用戶需要一些設置和源代碼的添加。

Note

通知服務擴展無法包含在庫或框架中。因此,您必須根據Hive SDK提供的指南進行設置以使用擴展。

添加擴展

要使用此功能,您需要將通知服務擴展添加到您的項目中,並向項目添加一個新目標,而無需手動添加或覆蓋該類。

當您將目標添加到項目時,會自動生成一個模板。

1. 在項目設置中,點擊加號形狀的按鈕(下面的紅色方框)以添加目標。

2. 选择通知服务扩展,然后点击下一步
(通知服务扩展可在 Xcode 8 及更高版本中作为目标添加到项目中)

3. 輸入 產品名稱

4. 當頁面彈出如下所示時,點擊啟用按鈕。
擴展將自動嵌入當前項目,並將添加構建方案。

5. 確認在一般標籤上添加的擴展

6. 一個名為NotificationService的新模板類已添加到項目中。

7. 將新增的擴展部署目標設置為10.2及更高版本。

添加Hiveextensions 框架

HIVEExtension.framework,由Hive SDK提供,使下載媒體變得簡單。
要添加HIVEExtensionFramework:

1. 手動添加框架。

  • 在專案中添加 HIVEExtension.framework。

  • 當頁面彈出如下所示時,檢查新增擴展的目標並點擊 完成 按鈕。

2. 配置框架搜索路径。

將 HIVEExtension.framework 的保存路徑添加到 Xcodeproj > 選擇生成的擴展目標 > 建構設置 > 框架搜索路徑

3. 配置框架狀態。

對於支持 iOS 10.2 及更低版本的遊戲,將 HIVEExtensions.framework 設置為可選。

  • Xcodeproj > 選擇生成的擴展目標 > 一般 > 連結的框架和庫

應用框架

將框架導入到 NotificationService.m,如以下示例代碼所示。

實現從模板中的方法調用HIVEExtensions.framework提供的方法,然後刪除方法中的初始模板代碼

#import <HIVEExtensions/HIVEExtensions.h>

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
[HIVENotificationService didReceiveNotificationRequest:request withContentHandler:contentHandler];
}

- (void)serviceExtensionTimeWillExpire {
[HIVENotificationService serviceExtensionTimeWillExpire];
}

媒體應用的注意事項

發送和接收時間的差異

在扩展完成所有任务后,向用户发送通知可能会导致发送时间和接收时间之间的差异。客户端将显示服务器发送的时间。

例如,如果您在15:00发送通知,而下载在15:05完成,则通知到达时间为15:00。

設備容量

透過推播服務傳送的媒體儲存在用戶設備中,並通過推播通知顯示。接收到的媒體儲存在內部快取記憶體中,佔用用戶設備的內部容量。

當用戶設備的內部存儲容量不足時,OS 會從快取數據空間刪除一些數據。

使用用戶的行動數據

媒體下載會使用用戶的行動數據。媒體是通過推播通知傳送的,下載將在未經用戶同意的情況下進行,因此可能會產生下載的數據使用費用。

當用戶通過推送服務接收音頻或視頻文件時,請在下載之前檢查每個用戶的網絡連接狀態。如果用戶未啟用Wi-Fi,則在不下載媒體的情況下公開推送,以防止下載。

透過推播通知傳遞的媒體類型會根據媒體URL末尾指定的擴展名進行檢查,並且僅暴露[檔案容量和類型限制]項目中指定的擴展名。

轉移的 URL Wi-Fi LTE/3G
http://xxx/notimovie.mp4 下載後始終在推播通知中顯示媒體 在推播通知中顯示媒體而不下載,因為視頻文件的擴展名已指定 (.mp4)
http://xxx/notimovie 下載後始終在推播通知中顯示媒體 下載後在推播通知中顯示媒體,因為它不是音頻或媒體文件
http://xxx/notisound.wav 下載後始終在推播通知中顯示媒體 在推播通知中顯示媒體而不下載,因為音頻文件的擴展名已指定 (.wav)
http://xxx/notiimage.jpg 下載後始終在推播通知中顯示媒體 下載後在推播通知中顯示媒體,因為它不是音頻或媒體文件

應用程式傳輸安全設定

一般來說,Apple 的政策是允許所有應用程式使用 https 進行伺服器通訊。此政策會影響通過通知接收的 URL。如果您想使用 http,則需要設置 應用程式傳輸安全 ("ATS") 例外。 在擴展中配置 ATS 例外,以便在接收的 URL 中通過推播通知使用 http,即使應用程式已經處理了 ATS 例外。

如何排除位元碼錯誤

如果在已添加的扩展的设置中启用了位代码,则可能会出现如下错误。当错误发生时,set Xcodeproj > Select the generated Extension Target > Build Settings > Enable Bitcode 设置为 No

若在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 的架構是否包含 armv7arm64 的值。