SwiftyMessenger 0.4.0

SwiftyMessenger 0.4.0

Abdullah Selek 维护。



  • Abdullah Selek

SwiftyMessenger CI CocoaPods Compatible Carthage Compatible Platform License

    _________ ___          ___  _   _____  _________ ___    ___
   /        / \  \        /  / |_| ( ___ \ \__   __/ \  \  /  /
  /   _____/   \  \  /\  /  /  | | | (  \/    ) (     \  \/  /
  \_____  \     \  \/  \/  /   | | | (_       | |      \    /
  /        \     \  ____  /    | | |  _)      | |       )  (
 /_______ /       \/    \/     |_| | (        | |       |  |
        \/                         | )        )_(       |__|
                                   |/
      _____        ______    ________  ________  ______   __      __     _____      ______  _________
     /     \      (  ____\  /       / /       / (  ____\ |  \    |  |   /     \    (  ____\ \______  \
    /       \     | (      /   ____/ /   ____/  | (      |  |\   |  |  /   ____\   | (       |        \
   /  /\ /\  \    | (__    \_____ \  \_____ \   | (__    |  | \  |  | /   /__/  |  | (__     |    |____\
  /  /  Y  \  \   |  __)   /       \ /       \  |  __)   |  |  \ |  | \______   /  |  __)    |     \\
 /  /       \  \  | (     /_______/ /_______/   | (      |  |   \|  |  _____/  /   | (       |    | \\
 |_/         |__| | (___/\      \/        \/    | (___/\ |__|    |__| |_______/    | (___/\  |____| |_|
                  (______/                      (______/                           (______/

SwiftyMessenger

Swift 工具包,用于在 iOS 应用及其扩展之间传递消息。它创建了一个介于容器应用和 iOS 扩展之间的桥梁。SwiftyMessenger 会将消息存档到文件中,这些文件被写入应用的共享 App Group。SwiftyMessenger 通过没有进程间通信的方式,类似实现了应用和扩展之间的进程间通信。

它还支持 CFNotificationCenter Darwin 通知,以支持实时更改通知。当传递消息时,感兴趣的一方可以监听并(几乎是即时地)在两侧被通知到这些更改。

Sample App

要求

SwiftyMessenger 版本 最低 iOS 目标 最低 watchOS 目标 Swift 版本
0.4.0 iOS 10 watchOS 3.0 Swift 5.x
0.2 iOS 9 watchOS 2.0 Swift 4.2
0.1 iOS 9 watchOS 2.0 Swift 4.1

注意

SwiftyMessenger 只能与 App Group 标识符和权限一起使用。

CocoaPods

CocoaPods 是 Cocoa 项目的依赖关系管理器。您可以使用以下命令安装它

$ gem install cocoapods

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

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!

target '<Your Target Name>' do
	pod 'SwiftyMessenger', '~>0.4.0'
end

Carthage

Carthage是一种去中心化的依赖项管理器,它构建您的依赖关系并提供二进制框架。

您可以使用以下命令使用Homebrew安装Carthage:

brew update
brew install carthage

要使用Carthage将SwiftyMessenger集成到您的Xcode项目中,请在您的Cartfile中指定它。

github "abdullahselek/SwiftyMessenger" ~> 0.4.0

Swift Package Manager

修改您的Package.swift文件以包含以下依赖项。

.package(url: "https://github.com/abdullahselek/SwiftyMessenger.git", from: "0.4.0")

XCFramework

XCFramework需要Xcode 11或更高版本,并且集成方式与框架格式类似。请使用脚本scripts/build-framework.sh生成可用的SwiftyMessenger.xcframework存档,作为Xcode中的依赖项。

SwiftyMessenger.xcframework是一个发布(优化)的二进制文件,提供了最佳可用的Swift代码性能。

使用方法

初始化

messenger = Messenger(withApplicationGroupIdentifier: "group.com.abdullahselek.swiftymessenger", directory: "messenger")

传递消息

messenger.passMessage(message: ["selectedCell": title], identifier: "selection")

读取消息

if let message = messenger.messageForIdentifier(identifier: "button") as? [String: Any] {
	let buttonTitle = message["buttonTitle"] as? String
}

通过标识符监听消息更改

messenger.listenForMessage(withIdentifier: "button") { message in
    guard let message = message as? [String: Any] else {
        return
    }
    let buttonTitle = message["buttonTitle"] as? String
}

支持WatchConnectivity

SwiftyMessenger支持在watchOS扩展中由Apple提供的WatchConnectivity API。

如果您想在您的应用程序中使用watchOS扩展的WatchConnectivity支持,请注意以下两点:

  • MessengerSession 是一个单例子类,支持监听 WatchConnectivity 消息。它可以用来监听你期望从 WatchConnectivity 框架接收到的 Messenger 消息。确保在设置完监听器后激活会话,以便开始接收消息通知。

  • 在创建您的信使时可以使用 MessengerSessionContextTransiting,但它很容易因为一次性发送过多的消息而使管道过载。

传输类型

TransitingType 下您可以找到 5 种可用的类型。

  • file(通过存档和恢复写入和读取到文件的消息进行传输的消息)
  • coordinatedFile(使用 FileCoordinator)
  • sessionContext(支持 WatchConnectivity 框架的应用程序上下文)
  • sessionMessage(支持 WatchConnectivity 框架的真实消息传递能力)
  • sessionFile(支持 WatchConnectivity 框架的文件传输能力)

许可证

SwiftyMessenger 在 MIT 许可证下发布。有关详细信息,请参阅 LICENSE。

鸣谢

灵感来自于 MutualMobile。使用新编程语言 Swift 改进并全部编写。