NBus 1.3.0

NBus 1.3.0

nuomi1 维护。



NBus 1.3.0

  • 作者:
  • nuomi1

NBus

CI Status Version License Platform

介绍

NBus 是一个适用于中国社交应用的分享和登录库,例如微信、QQ 和微博。NBus 还支持系统分享和 Apple 登录。

特性

分享

处理器 文本 图片 音频 视频 网页 文件 小程序
QQ处理器 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
QQSDK处理器 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
微信处理器 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
微信SDK处理器 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
微博处理器 ✔️ ✔️ ✔️ ✔️ ✔️
微博SDK处理器 ✔️ ✔️ ✔️ ✔️ ✔️
系统处理器 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

OAuth

处理器 OAuth
QQ处理器 ✔️
QQSDK处理器 ✔️
微信处理器 ✔️
微信SDK处理器 ✔️
微博处理器 ✔️
微博SDK处理器 ✔️
系统处理器 ✔️

启动

处理器 小程序
QQ处理器 ✔️
QQSDK处理器 ✔️
微信处理器 ✔️
微信SDK处理器 ✔️
微博处理器
微博SDK处理器
系统处理器
  • ✔️- 支持
  • - 尝试性支持
  • - 不支持

需求

用法

  1. 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>
  1. 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>
  1. 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>
  1. 在使用 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)
}
  1. 使用 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)
    }
}
  1. 使用 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)
    }
}
  1. 使用 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"

注意

  1. WeiboSDK.bundle必须保存在应用根路径下。

作者

nuomi1, [email protected]

相关文章

感谢

许可证

NBus 遵循MIT许可证。有关更多信息,请参阅LICENSE文件。