高级
創建通知組¶
您可以將顯示在通知中心的通知進行分組。來自同一事件的通知可以被分組並折疊。折疊的通知組可以由用戶再次展開,並且通知組中的每個成員都可以單獨訪問。
通知組可以在 the Hive 控制台 > Notification > Register Push Campaign > Campaign Register > Option > Group Key 中創建。將組鍵更改為使用並添加組鍵值。在 Hive 控制台中創建組後,您可以在發送 本地推送 或遠程推送時使用 groupId
應用通知組。如果應用了通知組,則通知將按組顯示並折疊,如下所示。
| |
iOS 10 進階通知¶
隨著 Apple 在 iOS 10 中新增了 UserNotifications.framework,您可以在通知中附加圖片或視頻片段。
系統需求¶
Note
iOS 10.1 和更低版本可能會因為操作系統缺陷而在運行擴展時遇到問題。如果是這樣,請將擴展的部署目標設置為 10.2,並為操作系統 10.1 和更低版本實現以接收一般通知類型。
執行過程¶
此功能通过利用 通知服务扩展(“扩展”)的 iOS 运行。
通知服務擴展是應用擴展之一,允許您在遠程通知傳送給用戶之前修改有效載荷。這是一種技術,可在不改變上下文的情況下使用其他應用程序(UI或功能)的過程。
欲了解更多信息,请参阅 更多。
檔案容量和類型限制¶
容量限制附加媒體檔案。 有關此更多資訊,請參見 UNNotificationAttachment。
Warning
如果用户在运行Youtube或各种类型的手机游戏(例如,召唤师战争、龙之怒吼、连锁打击)时通过AVAudioSession传输推送服务发送的音频,主屏幕(Springboard)将会重启。无论iOS版本、设备类型和Hive SDK如何,苹果的内部系统都会崩溃。
我们于2018年12月20日向苹果请求解决此错误,因此请确保停止通过媒体通知使用音频传输功能。
類型 | 格式 | 容量 |
---|---|---|
圖片 | JPG, JPEG, PNG, GIF | 10MB |
視頻 | MP4, AVI | 50MB |
- 如果因網絡問題發生超時,使用者將收到沒有媒體的通用通知。
- 在低速網絡上,下載可能需要長達10分鐘,因此請確保根據當地網絡條件使用合理容量的媒體。
實作¶
下載媒體、重新配置通知對象並將其傳遞給用戶需要一些設置和源代碼的添加。
Note
通知服務擴展無法包含在庫或框架中。因此,您必須根據Hive SDK提供的指南進行設置以使用擴展。
添加擴展¶
要使用此功能,您需要將通知服務擴展添加到您的項目中,並向項目添加一個新目標,而無需手動添加或覆蓋該類。
當您將目標添加到項目時,會自動生成一個模板。
1. 在項目設置中,點擊加號形狀的按鈕(下面的紅色方框)以添加目標。
2. 选择通知服务扩展,然后点击下一步。
(通知服务扩展可在 Xcode 8 及更高版本中作为目标添加到项目中)
4. 當頁面彈出如下所示時,點擊啟用按鈕。
擴展將自動嵌入當前項目,並將添加構建方案。
6. 一個名為NotificationService的新模板類已添加到項目中。
添加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 的架構是否包含 armv7 和 arm64 的值。