MBMessagesSwift 0.2.7

MBMessagesSwift 0.2.7

lorenzOliveto 维护。



 
依赖关系
MBurgerSwift>= 0
MPushSwift>= 0
 

  • 作者
  • LorenzOliveto

Documentation CocoaPods Carthage Compatible License

MBMessagesSwift

MBMessagesSwift 是一个用于 MBurger 的插件库,允许您在应用中显示应用消息并管理推送通知。该库的最低部署目标为 iOS 11.0。

使用此库,您可以在应用中显示在 MBurger 控制台中设置的消息。您还可以设置和管理与您的 MBurger 项目连接的推送通知。

安装

Swift 包管理器

从 Xcode 11 开始,您可以使用 Swift 包管理器MBMessagesSwift 添加到项目中。按照以下简单步骤操作

  • 在 Xcode 中转到文件 > Swift 包 > 添加包依赖关系。
  • 在“选择包存储库”对话框中输入 https://github.com/Mumble-SRL/MBMessagesSwift.git 并按下一步。
  • 指定版本时,使用规则“直到下一个主要版本”,其最早版本为“0.1.1”,然后按下一步。
  • Xcode 将尝试解析版本,之后您可以选择 MBMessagesSwift 库并将其添加到您的应用目标中。

CocoaPods

CocoaPods 是一个用于 iOS 的依赖管理工具,它可以自动化并简化在项目中使用第三方库的过程。您可以使用以下命令安装 CocoaPods:

$ gem install cocoapods

要使用 CocoaPods 将 MBMessagesSwift 集成到您的 Xcode 项目中,请在 Podfile 中指定它。

platform :ios, '12.0'

target 'TargetName' do
    pod 'MBMessagesSwift'
end

如果您使用的是 Swift,请记住在 pod 说明前添加 use_frameworks!

然后,运行以下命令:

$ pod install

CocoaPods 是安装库的首选方法。

Carthage

Carthage 是一个去中心化的依赖管理器,它构建您的依赖并提供二进制框架。要使用 Carthage 将 MBMessagesSwift 集成到您的 Xcode 项目中,请在 Cartfile 中指定它。

github "Mumble-SRL/MBMessagesSwift"

手动安装

要手动安装库,请将文件夹 MBMessages 拖放到 XCode 中的项目结构中。

请注意,MBMessagesSwift 使用 MBurgerSwift (1.0.8)MPushSwift (0.2.13) 作为依赖项,因此您还必须安装这些库。

初始化

要初始化 SDK,您必须将 MBMessagesSwift 添加到 MBurger 的插件数组中。

import MBurgerSwift
import MBMessagesSwift

...

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    MBManager.shared.apiToken = "YOUR_API_TOKEN"
    MBManager.shared.plugins = [MBMessages()]
        
    return true
}

然后,您必须告诉 MBManager.shared 应用程序是通过 MBManager.shared.applicationDidFinishLaunchingWithOptions(launchOptions: launchOptions) 打开的,这将触发所有 MBurger 插件的启动动作。完成此操作后,应用程序启动时将自动检索消息,如果需要展示,则会展示。

...

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    MBManager.shared.apiToken = "YOUR_API_TOKEN"
    MBManager.shared.plugins = [MBMessages()]
        
    MBManager.shared.applicationDidFinishLaunchingWithOptions(launchOptions: launchOptions)

    return true
}

使用参数初始化 MBMessages

您可以在初始化 MBMessages 插件时设置一些参数

let messagesPlugin = MBMessages(delegate: [the delegate],
                                viewDelegate: [view delegate],
                                styleDelegate: [style delegate],
                                messagesDelay: 1
                                debug: true)
  • messagesDelay:这是在检索到消息后显示消息的时间
  • debug:如果设置为 true,则将显示服务端返回的所有消息,如果设置为 false,则安装应用程序后仅显示一次消息。默认值为 false
  • 委托:如果消息的获取失败,则会调用委托,并提供导致失败的错误,请参阅 MBMessagesDelegate 了解详细信息。
  • 视图委托:当显示或隐藏消息视图时,视图委托将接收调用,当视图中的按钮被触摸时,它也会接收调用。如果您想从应用内消息打开应用内链接,则需要实现此协议。请参阅 MBInAppMessageViewDelegate 了解协议的详细描述。
  • 样式委托:您可以使用此协议指定应用内消息的颜色和字体。请参阅 Stylize in app messages 了解详细信息。

Stylize in app messages

如果您想指定显示的消息的字体和颜色,可以使用 MBInAppMessageViewStyleDelegate 协议。此协议的所有函数都是可选的,如果未实现函数,框架将使用默认值。以下是可以进行样式化的元素:

  • 背景样式:可以是纯色或半透明色
  • 背景颜色:背景颜色
  • 标题颜色:消息标题的文本颜色
  • 正文颜色:正文的文本颜色
  • 关闭按钮颜色:关闭按钮的颜色
  • 按钮1背景颜色:第一个操作按钮的背景颜色
  • 按钮1标题颜色:第一个操作按钮的文本颜色
  • 按钮2背景颜色:第二个操作按钮的背景颜色
  • 按钮2标题颜色:第二个操作按钮的文本颜色
  • 按钮2边框颜色:第二个操作按钮的边框颜色
  • 标题字体:标题的字体
  • 正文字体:正文的字体
  • 按钮文本字体:按钮标题的字体

示例

func backgroundStyle(forMessage message: MBInAppMessage) -> MBInAppMessageViewBackgroundStyle {
    return .solid
}
    
func backgroundColor(forMessage message: MBInAppMessage) -> UIColor {
    return .green
}
    
func titleColor(forMessage message: MBInAppMessage) -> UIColor {
    return .blue
}
    
func bodyColor(forMessage message: MBInAppMessage) -> UIColor {
    return .darkText
}
    
func button1TitleColor(forMessage message: MBInAppMessage) -> UIColor {
    return .white
}
    
func button1BackgroundColor(forMessage message: MBInAppMessage) -> UIColor {
    return .cyan
}

MBMessagesDelegate

如果您想接收当应用内消息视图显示或隐藏时的功能调用,则需要实现此协议。如果您想响应用户在应用内消息视图上的按钮点击,您也需要使用此协议。

viewWillAppearviewDidAppear 在视图显示时被调用,而 viewWillDisappearviewDidDisappear 在视图隐藏时被调用。

func viewWillAppear(view: MBInAppMessageView)
func viewDidAppear(view: MBInAppMessageView)
func viewWillDisappear(view: MBInAppMessageView)
func viewDidDisappear(view: MBInAppMessageView)

要响应用户对按钮的点击,您必须实现 func buttonPressed(view: MBInAppMessageView, button: MBInAppMessageButton),以下是一个示例

func buttonPressed(view: MBInAppMessageView, button: MBInAppMessageButton) {
    let linkType = button.linkType
    if linkType == .link && button.link.hasPrefix("http") {
        if let url = URL(string: button.link) {
            //Open url
        }
    } else {
        // Open in app link (button.link)
    }
}

MBMessagesDelegate

实现此协议,当从服务器获取消息失败时,你将收到调用

func inAppMessageCheckFailed(sender: MBMessages, error: Error?)

推送通知

使用此插件,您还可以管理MBurger的推送通知部分,这是对MPush(基础平台)的包装,因此您应参考MPush文档来了解概念并开始推送集成。为了使用MBMessagesSwift代替MPushSwift,您需要进行以下更改

设置推送令牌如下

MBMessages.pushToken = "YOUR_PUSH_TOKEN"

然后注册您的设备到主题(所有其他函数都有类似的语法更改)

MBMessages.registerDeviceToPush(deviceToken: deviceToken, success: {
    MBMessages.registerPushMessages(toTopic: MBPTopic("YOUR_TOPIC"))
})

MBurger有两个默认主题,您应使用它们以确保参与平台的正确功能

  • MBMessages.projectPushTopic:此主题代表注册此项目推送通知的所有设备
  • MBMessages.devicePushTopic:此主题代表当前设备
MBMessages.registerPushMessages(toTopics:[MBMessages.projectPushTopic,
                                          MBMessages.devicePushTopic,
                                          MBPTopic("OTHER_TOPIC")])

MBPTopic附加参数

在创建主题时,您可以指定附加参数

  • title:该主题的标题,将在仪表板中显示,如果未指定,则与主题id的值相同
  • single:如果主题标识单个用户或一组用户,则默认为false

用户与推送通知互动

使用MBMessagesSwift,您可以设置一个回调,当用户与推送通知互动或在推送的情况下打开应用时将被调用。您可以像这样设置代码,payload变量将包含推送有效负载

MBMessages.userDidInteractWithNotificationBlock = { payload in
    // Do actions in response
    print("Notification arrived:\n\(payload)")
}

为了让它生效,您需要告诉 MBMessagesSwift 已经收到通知,所以您需要在您的 UNUserNotificationCenterDelegate 类(通常为 AppDelegate)中添加以下代码。

func userNotificationCenter(_ center: UNUserNotificationCenter,
                            willPresent notification: UNNotification,
                            withCompletionHandler
    completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
    // Add this line
    MBMessages.userNotificationCenter(willPresent: notification)
    completionHandler(UNNotificationPresentationOptions.alert)
}
    
func userNotificationCenter(_ center: UNUserNotificationCenter,
                            didReceive response: UNNotificationResponse,
                            withCompletionHandler
    completionHandler: @escaping () -> Void) {
    // Add this line
    MBMessages.userNotificationCenter(didReceive: response)
    completionHandler()
}

消息度量

使用 MBMessagesSwift 让您可以收集有关用户和推送通知的信息,这些信息将显示在 MBurger 仪表板上。正如前一段所述,为了让这生效,您需要告诉 MBMessagesSwift 已收到推送通知,如果在上面步骤中已执行,则无需操作。否则,您需要将 MBMessages.userNotificationCenter(willPresent: notification)MBMessages.userNotificationCenter(didReceive: response) 添加到您的 UNUserNotificationCenterDelegate 类中。

自动化

如果消息启用了自动化,则它们将由 MBAutomationSwift SDK 忽略并管理,请确保正确包含和配置自动化 SDK。