CocoaPods trunk is moving to be read-only. Read more on the blog, there are 18 months to go.

WZShareKit 2.1.1

WZShareKit 2.1.1

Maintained by qiuqixiang.



  • By
  • LiuSky

我主良缘分享组件

Requirements:

  • iOS 9.0+
  • Xcode 10.0+
  • Swift 5.0+

Installation Cocoapods

pod 'WZShare', '~> 1.0.0'

Share

Example: Share to WeChat (微信):

  1. In your Project Target's Info.plist, set URL Type, LSApplicationQueriesSchemes as follow:

  2. Register account: // it's not necessary to do it here, but for convenient

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    
        MonkeyKing.registerAccount(.weChat(appID: "xxx", appKey: "yyy", miniAppID: nil))
    
        return true
    }
  3. If you need to handle call back, add following code:

    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    //func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { // only for iOS 8
    
        if MonkeyKing.handleOpenURL(url) {
            return true
        }
    
        return false
    }

    to your AppDelegate.

  4. Prepare your message and ask MonkeyKing to deliver it:

    @IBAction func shareURLToWeChatSession(sender: UIButton) {
    
        MonkeyKing.registerAccount(.weChat(appID: "xxx", appKey: "yyy", miniAppID: nil)) // you can do it here (just before deliver)
    
        let message = MonkeyKing.Message.weChat(.session(info: (
            title: "Session",
            description: "Hello Session",
            thumbnail: UIImage(named: "rabbit"),
            media: .url(URL(string: "http://www.apple.com/cn")!)
        )))
    
        MonkeyKing.deliver(message) { success in
            print("shareURLToWeChatSession success: \(success)")
        }
    }

It's done!

OAuth

Example: Weibo OAuth

MonkeyKing.oauth(for: .weibo) { (oauthInfo, response, error) -> Void in
    print("OAuthInfo \(oauthInfo) error \(error)")
    // Now, you can use the token to fetch info.
}

or, WeChat OAuth for code only

MonkeyKing.weChatOAuthForCode { [weak self] (code, error) in
    guard let code = code else {
        return
    }
    // TODO: fetch info with code
}

If user don't have Weibo App installed on their devices then MonkeyKing will use web OAuth:

Pay

Example: Alipay

let order = MonkeyKing.Order.alipay(urlString: urlString, scheme: nil)
MonkeyKing.deliver(order) { result in
    print("result: \(result)")
}

You need to configure pay.php in remote server. You can find a example about pay.php at Demo project.


Launch WeChat Mini App

let path = "..."
MonkeyKing.launch(.weChat(.miniApp(username: "gh_XXX", path: path, type: .release))) { result in
    switch result {
    case .success:
        break
    case .failure(let error):
        print("error:", error)
    }
}

Note that username has a gh_ prefix (原始ID).

More

If you like to use UIActivityViewController for sharing then MonkeyKing has AnyActivity which can help you.

Check the demo for more information.

Reference

License

WZShare is released under an MIT license. See LICENSE for more information.