NBus
介绍
NBus 是一个适用于中国社交应用的分享和登录库,例如微信、QQ 和微博。NBus 还支持系统分享和 Apple 登录。
特性
分享
处理器 | 文本 | 图片 | 音频 | 视频 | 网页 | 文件 | 小程序 |
---|---|---|---|---|---|---|---|
QQ处理器 | |||||||
QQSDK处理器 | |||||||
微信处理器 | |||||||
微信SDK处理器 | |||||||
微博处理器 | |||||||
微博SDK处理器 | |||||||
系统处理器 |
OAuth
处理器 | OAuth |
---|---|
QQ处理器 | |
QQSDK处理器 | |
微信处理器 | |
微信SDK处理器 | |
微博处理器 | |
微博SDK处理器 | |
系统处理器 |
启动
处理器 | 小程序 |
---|---|
QQ处理器 | |
QQSDK处理器 | |
微信处理器 | |
微信SDK处理器 | |
微博处理器 | |
微博SDK处理器 | |
系统处理器 |
✔️ - 支持⭕ - 尝试性支持❌ - 不支持
需求
- Swift 5.0
- iOS 10.0
- QQ 8.1.3 - 20190830
- 微信 7.0.7 - 20190917
- 微博 ~ 20201017
用法
- 在
Info.plist
中编辑LSApplicationQueriesSchemes
。
<?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">
<array>
<string>mqq</string>
<string>mqqopensdkapiV2</string>
<string>mqqopensdklaunchminiapp</string>
<string>mqqopensdkminiapp</string>
<string>mqqopensdknopasteboard</string>
<string>weixin</string>
<string>weixinULAPI</string>
<string>sinaweibo</string>
<string>weibosdk</string>
<string>weibosdk3.3</string>
</array>
</plist>
- 在
Info.plist
中编辑CFBundleURLTypes
。
<?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">
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>QQ</string>
<key>CFBundleURLSchemes</key>
<array>
<string>tencent123456</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>Wechat</string>
<key>CFBundleURLSchemes</key>
<array>
<string>wx123456</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>Weibo</string>
<key>CFBundleURLSchemes</key>
<array>
<string>wb123456</string>
</array>
</dict>
</array>
</plist>
- 在
TARGET.entitlements
中编辑com.apple.developer.associated-domains
。
<?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">
<array>
<string>applinks:www.example.com</string>
</array>
</plist>
- 在使用 NBus 之前注册处理程序。
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
let qqHandler = QQHandler(
appID: "tencent123456",
universalLink: URL(string: "https://www.example.com/qq_conn/123456/")!
)
Bus.shared.handlers = [qqHandler]
}
func application(
_ app: UIApplication,
open url: URL,
options: [UIApplication.OpenURLOptionsKey: Any] = [:]
) -> Bool {
Bus.shared.openURL(url)
}
func application(
_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void
) -> Bool {
Bus.shared.openUserActivity(userActivity)
}
- 使用 NBus 分享消息。
let message = Messages.text(text: "NBus")
let endpoint = Endpoints.QQ.friend
Bus.shared.share(message: message, to: endpoint) { result in
switch result {
case .success:
print("Success")
case let .failure(error):
print(error)
}
}
- 使用 NBus 进行 OAuth。
let platform = Platforms.qq
Bus.shared.oauth(with: platform) { result in
switch result {
case let .success(parameters):
let accessToken = parameters[Bus.OauthInfoKeys.QQ.accessToken]
let expirationDate = parameters[Bus.OauthInfoKeys.QQ.expirationDate]
let openID = = parameters[Bus.OauthInfoKeys.QQ.openID]
print(accessToken, expirationDate, openID)
case let .failure(error):
print(error)
}
}
- 使用 NBus 启动小程序。
let program = Messages.miniProgram(
miniProgramID: "123456",
path: "/example",
link: URL(string: "https://www.example.com")!,
miniProgramType: .release,
title: "NBus",
description: "NBus",
thumbnail: UIImage(named: "example")?.jpegData(compressionQuality: 1)
)
let platform = Platforms.qq
Bus.shared.launch(program: program, with: platform) { result in
switch result {
case .success:
print("Success") // Never happen
case let .failure(error):
print(error)
}
}
示例
要运行示例项目,请克隆存储库,编辑 Example/NBus/Config.xcconfig
文件,然后首先从 Example 目录运行 bundle install && bundle exec fastlane setup && open Example/NBus.xcworkspace
。
安装
CocoaPods
您可以直接使用包含所有SDK桥接处理器的NBus
。
pod "NBus" # default subspecs "SDKHandlers"
或者所有开源处理器。
pod "NBus/BusHandlers"
或您喜欢的内容。
pod "NBus/QQSDKHandler"
pod "NBus/QQHandler"
pod "NBus/WechatSDKHandler"
pod "NBus/WechatHandler"
pod "NBus/WeiboSDKHandler"
pod "NBus/WeiboHandler"
pod "NBus/SystemHandler"
甚至包括这些SDK。
pod "NBusQQSDK"
pod "NBusWechatSDK"
pod "NBusWeiboSDK"
注意
WeiboSDK.bundle
必须保存在应用根路径下。
作者
nuomi1, [email protected]
相关文章
- NBus 的来源
- NBus 的 QQHandler
- NBus 的 QQSDKHandler
- NBus 的 SystemHandler
- NBus 的 WechatHandler
- NBus 的 WechatSDKHandler
- NBus 的 WeiboHandler
- NBus 的 WeiboSDKHandler
感谢
许可证
NBus 遵循MIT许可证。有关更多信息,请参阅LICENSE文件。