MBMessagesSwiftNotificationService 0.2.2

MBMessagesSwiftNotificationService 0.2.2

lorenzOliveto 维护。



  • 作者:
  • LorenzOliveto

Documentation CocoaPods Carthage Compatible License

MBMessagesSwift

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

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

安装

Swift Package Manager

从 Xcode 11 开始,您可以使用 Swift Package ManagerMBMessagesSwift 添加到您的项目。按照以下简单步骤操作

  • 在 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"

fang facefacefaceMING

要手动安装库,将文件夹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
  • delegate:如果消息拉取失败,将调用拖拽,其中包含造成失败的错误。有关更多信息,请参见MBMessagesDelegate
  • viewDelegate:当消息视图显示或隐藏时,视图拖拽将收到调用。当视图中的按钮被触摸时,它也会收到调用。如果您想从一个应用内消息打开应用内链接,则需要实现此协议。有关协议的详细描述,请参见MBInAppMessageViewDelegate
  • styleDelegate:您可以使用此协议来指定应用内消息的颜色和字体。有关详细信息,请参见美化应用内消息

美化应用内消息

如果您想指定显示的消息的字体和颜色,可以使用MBInAppMessageViewStyleDelegate协议。该协议的所有功能都是可选的,如果未实现某个功能,框架将使用默认值。以下是可以美化的元素:

  • backgroundStyle:可以是纯色或半透明色。
  • backgroundColor:背景颜色。
  • titleColor:消息标题的文本颜色。
  • bodyColor:消息正文的文本颜色。
  • closeButtonColor:关闭按钮的颜色。
  • button1BackgroundColor:第一个动作按钮的背景颜色。
  • button1TitleColor:第一个动作按钮的文本颜色。
  • button2BackgroundColor:第二个动作按钮的背景颜色。
  • button2TitleColor:第二个动作按钮的文本颜色。
  • button2BorderColor:第二个动作按钮的边框颜色。
  • titleFont:标题的字体。
  • bodyFont:正文的字体。
  • buttonsTextFont:按钮标题的字体。

示例

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 已收到推送,如果在上一步已经做了,那么就没有问题,否则您需要在您的 UNUserNotificationCenterDelegate 类中添加 MBMessages.userNotificationCenter(willPresent: notification)MBMessages.userNotificationCenter(didReceive: response)

自动化

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