Redlink 1.1.14

Redlink 1.1.14

Vercom Vercom 维护。



Redlink 1.1.14

  • Redlink

入门

安装

所需条件

  • 有效的 iOS 推送令牌
  • 物理 iOS 设备(推送服务在仿真器中不起作用)
  • 具有 AppIdTokenSecretEvents Token 的 Redlink 账户
  • 部署目标等于或高于 iOS 10.0 的应用程序

步骤

  1. 添加通知服务扩展
  2. 将 Redlink 框架导入到您的项目中
  3. 配置 Xcode 项目
  4. 添加所需代码

1. 添加通知服务扩展

  • 在 Xcode 中选择 文件 -> 新建 -> 目标
  • 选择 通知服务扩展 并按 下一步
  • 产品名称中填入project_nameNotificationServiceExtension(将project_name改为您项目的名称)
  • 语言部分下选择Swift(即使您的项目是用Obj-C编写的)
  • 使用取消跳过激活方案警报
  • 删除由Xcode生成的类体,导入Redlink框架并使用RedlinkNotificationServiceExtension作为基类。您的扩展现在应该看起来像这样
import Redlink

class project_nameNotificationServiceExtension: RedlinkNotificationServiceExtension {

} 

2. 将Redlink导入到您的项目中

可以通过CocoaPods导入Redlink。如果您不熟悉CocoaPods,请参阅官方指南

在Podfile中使用以下代码。请记住,Redlink Pod必须也添加到NotificationServiceExtension目标。

def shared_pods
  pod 'Redlink', ~> '1.0'
end

target 'project_name' do
   shared_pods
end

target 'project_nameNotificationServiceExtension' do
   shared_pods
end

在命令行运行pod install

3. 配置Xcode项目

  • 导航器中选择您的项目
  • 在顶部工具栏中选择能力
  • 启用推送通知

4. 添加RedlinkConfig.plist

  • 在Xcode中选择文件 -> 新建 -> 文件
  • 在资源部分下选择属性列表
  • 保存为填入名称RedlinkConfig.plist并选择目标(应为两个,即project_nameproject_nameNotificationServiceExtension
  • 在添加的RedlinkConfig.plist上右击并选择打开方式 -> 源代码
  • 用以下代码替换原始代码
<?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>AppId</key>
    <string>your_application_id</string>
    <key>Token</key>
    <string>your_application_token</string>
    <key>Secret</key>
    <string>your_application_secret</string>
    <key>EventsToken</key>
    <string>your_application_events_token</string>
</dict>
</plist>
  • your_application_idyour_application_tokenyour_application_secretyour_application_events_token替换为从Redlink仪表板获取的变量

5. 添加所需的代码

  • 打开您的AppDelegate
  • 使用import Redlink导入Redlink框架
  • 将以下代码添加到didFinishLaunchingWithOptions方法中
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
  Redlink.configure(using: RedlinkConfiguration.defaultConfiguration())
  Redlink.push.registerForPushNotifications(with: RedlinkPushOptions.default())
			
  return true
}

6. 备注

请注意,当与使用同一种方法的Firebase和其他框架(如Redlink)一起使用时,自动配置可能会导致意外的行为。如果是这种情况,请考虑使用自定义配置。

用户识别

要更新用户信息,请使用RedlinkUserData类。可以在以下位置访问

Redlink.user

您可以更改以下每个数据字段

  • 电子邮件 String
  • 电话 String
  • 姓氏 String
  • 名字 String
  • 自定义参数 [String: Any] - 其中 AnyStringIntBoolDate。任何其他类型的值都将被忽略并自动删除

验证

  • 电子邮件需要有效的电子邮件格式
  • 电子邮件公司名称姓氏名字最多可包含64个长度字符

更改用户数据后,您必须手动保存它。为此,请调用

func saveUser()

更新用户数据的完整示例

func updateUser() {
    let userData = Redlink.user
    userData.email = "[email protected]"
    userData.firstName = "Redlink"
    userData.customParameters = [
        "myKey": "myValue"
    ]
    userData.saveUser()
}

还有可能删除所有存储的用户数据。要这样做,请调用

Redlink.user.removeUser()

如果你想取消用户订阅Redlink推送通知服务,你也可以在删除用户时使用额外的参数,如下所示

Redlink.user.removeUser(deletePushToken: true)

当用户注销且不想发送通知时,您可以使用该方法。要使当前用户的设备重新接收推送通知,您需要调用

Redlink.user.saveUser()

分析

要跟踪自定义用户事件,请使用RedlinkAnalytics类。它可以在以下位置访问

Redlink.analytics

每个事件通过EventName进行标识。为了跟踪一个事件使用

Redlink.analytics.trackEvent(withName: "event_name")

您也可以为事件提供额外的参数

Redlink.analytics.trackEvent(withName: "event_name", parameters: [
    "myKey": "myValue"
])

参数类型为[String: Any] - 其中 AnyStringIntBoolDate。任何其他类型的值都将被忽略并自动删除。

验证

  • EventName最多可包含64个长度字符
  • 参数key最多可包含64个长度字符

除了参数外,您还可以注入作为有效JSON字符串的userData

Redlink.analytics.trackEvent(withName: "event_name", userData: "{\"foo\":\"bar\"}")

深度链接

深度链接使用官方的Apple SDK。为了处理接收到的URL,请使用

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool

请记住注册您自定义的URL方案。您可以在官方文档中找到更多信息。

高级配置

RedlinkPush自定义配置

除了标准配置,在Redlink框架自动执行所有必要初始化的情况下,您还可以手动配置框架。

在AppDelegate中初始化RedlinkPush时,您可以使用具有默认选项的RedlinkPushOptions

RedlinkPushOptions.default()

或者您可以创建具有自定义配置的RedlinkPushOptions实例

RedlinkPushOptions(authorizationOptions: RedlinkPushAuthorizationOptions, useAutomaticConfiguration: Bool)

默认情况下,useAutomaticConfiguration设置为true,这意味着所有重要的iOS事件,如APNS令牌注册、接收推送通知等,都由Redlink框架(使用方法交换)自动处理。

如果将useAutomaticConfiguration设置为false,则需要手动将所有必要信息注入到Redlink框架中。在这种情况下,您对框架的控制更多,但需要在以下类和方法中添加一些额外的代码。

1. AppDelegate

您需要在Redlink.push中调用这些方法

func didRegisterForRemoteNotifications(with deviceToken: Data)
func didFailToRegisterForRemoteNotifications(with error: Error)

所需更改示例

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    Redlink.push.didRegisterForRemoteNotifications(with: deviceToken)
}

func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
    Redlink.push.didFailToRegisterForRemoteNotifications(with: error)
}

2. UNUserNotificationCenter

您需要在Redlink.push中调用这些方法

func willPresentNotification(_ notification: UNNotification)
func didReceiveNotificationResponse(response: UNNotificationResponse)

willPresentNotification为您提供了更改当前通知的UNNotificationPresentationOptions的机会。默认情况下,Redlink对所有通知使用[.alert]

为了使其成为可能,请在您的 AppDelegate 实现中遵循 UNUserNotificationCenterDelegate 协议,如下所示

UNUserNotificationCenter.current().delegate = self

所需更改示例

extension AppDelegate: UNUserNotificationCenterDelegate {
    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler(Redlink.push.willPresentNotification(notification, presentationOptions: []))
    }
    
    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
        Redlink.push.didReceiveNotificationResponse(response: response)
    }
}

额外信息

为了接收有关通知的更多额外信息,可以在 RedlinkPush 中设置自定义代理(RedlinkPushDelegate

Redlink.push.delegate = self

代理有 4 个可选方法,每个方法都有一个带有所有通知有效负载数据的 userInfo 参数。

推送通知动作

动作可以通过与通知(点击动作)或通知动作按钮进行交互来调用。动作始终首先打开应用程序,然后执行预期动作

每个动作都有四种动作类型之一

BROWSER - 打开 Safari 浏览器

WEBVIEW - 打开 RedlinkWebViewController,默认情况下,它使用来自 UIApplication.shared.keyWindow 的当前可见控制器来执行展示

DEEPLINK - 使用给定的 URL 执行 UIApplication.shared.open

NONE - 不进行任何操作(通知消失)

示例应用程序

我们提供了示例应用程序,简单展示 Redlink 的能力。这还将向您展示如何在项目中配置框架是多么简单。请检查 示例 目录以获取相关信息。