CloudInAppMessaging
CloudInAppMessaging 是一个由 CloudKit 驱动的 SDK,允许您通过上下文消息与活跃的应用程序用户互动。
它被创建成一个替代Firebase In-App Messaging 的开源替代方案。
详细信息
功能
- 通过独立的 Admin App 创建、配置并预览警报活动。
- 通过按钮动作打开任何 URL(如 HTTP 或深链接)。
- 支持多语言本地化。
- 定向(按国家、语言、应用程序和操作系统版本的最小/最大版本)。
- 具有起始日期和/或结束日期的调度。
- 在任何自定义事件或系统事件(如“前台”或“应用程序启动”)上触发显示警报活动。
- 使用您自己的 UI 自定义警报活动的展示。
- 您的用户不需要拥有iCloud账户。
- 考虑到隐私构建。
- 随意对其进行分叉和修改!
实现细节
CloudInAppMessaging使用公共CloudKit数据库,因此即使没有iCloud账户,您的应用的任何用户都可以访问。但这有一个重要的限制,即没有推送通知功能。因为目前,CloudKit仅支持共享数据库和私有数据库的推送通知,所以不能用于发送应用内消息的目的。
设置
将CloudInAppMessaging SDK添加到您的项目中
- 要添加CloudInAppMessaging,请参考安装部分。
- 在Xcode应用程序目标的设置中的“签名与能力”选项卡中添加iCloud功能。
- 在iCloud部分下启用CloudKit服务并添加一个新的CloudKit容器。输入唯一的标识符(通常没有“iCloud”前缀),例如
com.example.myapp
。这也可以通过Apple开发者门户完成。 - 让Xcode修复签名问题。
- 在您的应用的
application:didFinishLaunchingWithOptions:
方法中配置CLMCloudInAppMessaging共享实例。
Swift
CLMCloudInAppMessaging.setup(with: "iCloud.com.example.myapp")
Objective-C
[CLMCloudInAppMessaging setupWithCloudKitContainerIdentifier:@"iCloud.com.example.myapp"];
设置CloudInAppMessaging管理员应用
为了创建和修改警报活动,您需要使用CloudKit仪表板或所谓的管理员应用。后者可以更方便地进行操作,而不是处理数据库数据。
- 要运行管理员应用,首先克隆仓库,然后从示例目录中运行
pod install
。 - 在
CloudMessagingAdminConfiguration.swift
中设置目标的应用程序包标识符。 - 类似于SDK设置,为管理员应用设置相同的CloudKit容器标识符("iCloud.com.example.myapp")。
- 在您的设备或模拟器上运行管理员应用(注意,只有从已登录iCloud账户的设备才能写入数据库)。
- 由于CloudKit架构通常是通过创建新记录来定义的,因此先运行管理员应用,然后从调试菜单创建测试警报活动。
- 创建成功后,应用将尝试获取当前警报活动并最终出错:“字段'recordName'未标记为可查询”。遗憾的是,不允许通过程序创建索引,这需要通过CloudKit仪表板完成。
- 选择您的CloudKit容器并转到“架构”设置。
- 从“记录类型”的下拉菜单中选择“索引”。
- 为警报活动记录添加一个新的索引,并将其“QUERYABLE”类型设置为“recordName”字段,然后按“保存更改”。
- 创建索引后,下拉列表以查看新创建的警报活动。
- 发布您的应用程序之前,别忘了将开发模式在 CloudKit Dashboard 中部署到生产环境。
安装
CocoaPods
CloudInAppMessaging 通过 CocoaPods 提供。要安装它,请简单地在您的 Podfile 中添加以下行:
pod 'CloudInAppMessaging'
Carthage
Carthage 是一个去中心化的依赖管理器,它可以自动将框架添加到您的 Cocoa 程序中。要使用 Carthage 将 CloudInAppMessaging 集成到您的 Xcode 项目中,请在您的 Cartfile
中指定它。
github "podkovyrin/CloudInAppMessaging"
Swift 包管理器
Swift 包管理器 是一个用于自动化 Swift 代码分配的工具,并集成在了 swift
编译器中。
一旦您设置了 Swift 包,将 CloudInAppMessaging 作为依赖项添加到 Package.swift
的 dependencies
值同样简单。
dependencies: [
.package(url: "https://github.com/podkovyrin/CloudInAppMessaging.git", from: "0.1.0")
]
Accio
- 将以下内容添加到您的
Package.swift
中:
.package(url: "https://github.com/podkovyrin/CloudInAppMessaging.git", .upToNextMajor(from: "0.1.0")),
- 接下来,像这样将
CloudInAppMessaging
添加到您的 App 目标的依赖项:
.target(name: "App", dependencies: ["CloudInAppMessaging"]),
- 然后运行
accio update
。
需求
CloudInAppMessaging 需要 iOS 10 或更高版本。
CloudInAppMessaging 管理应用需要 iOS 11 或更高版本。
常见问题解答
为何不使用 Firebase In-App Messaging?
- 它非常庞大。Firebase In-App Messaging SDK 包括 14(!) 个依赖,其中一些是专有的(封闭源代码)。
$ pod install
Installing Firebase (6.11.0)
Installing FirebaseAnalytics (6.1.3) # 📦 closed-source
Installing FirebaseAnalyticsInterop (1.4.0) # 📦 closed-source
Installing FirebaseCore (6.3.2)
Installing FirebaseCoreDiagnostics (1.1.1)
Installing FirebaseCoreDiagnosticsInterop (1.0.0)
Installing FirebaseInAppMessaging (0.15.5)
Installing FirebaseInAppMessagingDisplay (0.15.5)
Installing FirebaseInstanceID (4.2.6)
Installing GoogleAppMeasurement (6.1.3) # 📦 closed-source
Installing GoogleDataTransport (3.0.1)
Installing GoogleDataTransportCCTSupport (1.2.1)
Installing GoogleUtilities (6.3.1)
Installing nanopb (0.3.9011)
- 尽管它可以被覆盖以使用 UIAlertController 或任何你自定义的控制器,但 Firebase In-App Messaging 使用其自己的 UI 进行警报,这有点“安卓风”。
- 这是另一个你必须信任你数据和用户数据的三方服务。
至于其余的,它们与 Firebase Analytics 有深度集成,如果你已经在使用它,这是很好的。
作者
安德烈·波多科夫林,[email protected]
许可
CloudInAppMessaging 在 MIT 许可下提供。有关更多信息,请参阅 LICENSE 文件。