CTNotificationService
👋 简介
一个简单的 Notification Service Extension 类,用于向 iOS 10 丰富推送通知添加媒体附件。从 iOS 10 开始,您可以向 iOS 推送通知添加媒体附件(图片、GIF、视频、音频)。此库提供一个简单的滴入式类来实现这一点。
丰富推送通知是通过iOS 10中的一个Notification Service Extension来启用,这是一个嵌入到您的应用程序包的单独且独立的二进制文件。
📋 需求
-
与iOS 10.0 或更高版本兼容
-
配置您应用程序以推送通知和添加通知服务扩展目标
-
在您的主应用程序中启用推送通知。
-
在您的项目中创建一个通知服务扩展。要在 Xcode 项目中这样做,请选择 File -> New -> Target,然后选择通知服务扩展模板。
-
🎉 安装
使用 CocoaPods
使用CocoaPods将CTNotificationService
安装到您的通知服务扩展中。
您的Podfile
应该看起来像这样
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!
target 'YOUR_NOTIFICATION_SERVICE_TARGET_NAME' do
pod 'CTNotificationService'
end
然后运行pod install
。
Carthage
CTNotificationService 支持 Carthage 将依赖打包成框架。
要使用 Carthage 将 CTNotificationService 集成到您的 Xcode 项目中,请在您的 Cartfile
中指定以下内容
github "CleverTap/CTNotificationService"
运行 carthage update
以构建框架,并将构建的 CTNotificationService.framework
拖放到您的 Xcode 项目中。
Swift Package Manager
Swift Package Manager 是 Xcode 中的一个工具,用于安装项目依赖项。要使用它安装 CTNotificationService SDK,请按照以下步骤操作
- 在 Xcode 中,转到 文件 -> Swift Package Manager -> 添加包依赖。
- 选择包仓库时,输入 https://github.com/CleverTap/CTNotificationService.git,然后点击 下一步。
- 在下一屏上,选择一个 SDK 版本(默认情况下,Xcode 选择最新稳定版本)。点击 下一步。
- 点击 完成 确保已将 CTNotificationService 添加到适当的目标。
🚀 集成
配置您的通知服务扩展以使用 CTNotificationServiceExtension 类
默认情况下,CTNotificatonServiceExtension 会查找具有表示您媒体文件 URL 值的 push 消息负载密钥 ct_mediaUrl
和具有媒体类型(图像、视频、音频或 gif)值的密钥 ct_mediaType
。
如果您对默认密钥名称感到满意,则可以将 CTNotificationServiceExtension
插入您的扩展类名称,作为通知服务扩展目标 Info.plist 中 NSExtension -> NSExtensionPrincipalClass 条目的值。请参阅此处示例。
或者,您可以将 NSExtensionPrincipalClass 条目保留为不变,同时让您的 NotificationService 类扩展 CTNotificationServiceExtension 类。然后,如果您愿意,也可以覆盖默认键名。请参阅 此处 Swift 示例 和 此处 Objective-C 示例。在这种情况下,仅覆盖示例中显示的 didReceive request: contentHandler:
。
如果您计划下载非SSL URL,请确保在plist中启用App Transport Security设置 -> 允许任意加载 -> 开启。 请在此处查看plist示例。
配置您的APNS有效负载
然后,当通过APNS发送通知时
- 请确保在有效负载的aps条目中包含mutable-content标志(此键必须在aps有效负载中存在,否则系统不会调用您的应用扩展)
- 在aps条目之外添加
ct_mediaUrl
和ct_mediaType
键值(或您自定义的键值)到有效负载中。
{
"aps": {
"alert": {
"body": "test message",
"title": "test title",
},
"mutable-content": 1,
},
"ct_mediaType": "gif",
"ct_mediaUrl": "https://www.wired.com/images_blogs/design/2013/09/davey1_1.gif",
...
}
示例用法
-
请参阅此处的Swift示例项目。
-
请参阅此处的SwiftPM示例项目。