Xinguang / WechatKit

一款快速实现微信第三方登录的框架(Swift版) SDK 1.8.5
https://Xinguang.github.io/WechatKit
MIT License
275 stars 57 forks source link

关于修改分享方法讨论 #16

Open E13Lau opened 7 years ago

E13Lau commented 7 years ago

目前的分享方法

public func share(_ scence: WXScene,
                      image: UIImage?,
                      title: String,
                      description: String,
                      url: String? = "https://open.weixin.qq.com/",
                      extInfo: String? = nil)

其一是无法得到分享成功失败的回调信息, 其二是无法分享纯文本类型、图片类型、音乐类型、视频类型等信息。

我想法是把分享方法修改成如下:

    public func share(_ scence: WXScene, _ shareContent: ShareContent, completionHandler: AuthHandle? = nil) {
        self.completionHandler = completionHandler
        WXApi.send(shareContent.getReq(scence))
    }

其中 ShareContent 为一个枚举类型:

public enum ShareContent {
    case Text(text: String)
    case Image(image: Data, messageExt: String, action: String, thumbImage: UIImage)
    case Link(urlString: String, title: String, description: String, thumbImage: UIImage)
    case Music(musicURL: String, dataURL: String, title: String, description: String, thumbImage: UIImage)
    case Video(videoURL: String, title: String, description: String, thumbImage: UIImage)
    case mediaMessage(WXMediaMessage)
}

使用上会是这样

        WechatManager.shared.share(WXSceneSession, .Text(text: "test")) { (result) in
            switch result {
            case .success(_):
                print("分享成功")
            case .failure(let e):
                print(e.description)
            }
        }

大家想法是怎样的?

Xinguang commented 7 years ago

目前除了登录, 其他都没有好好去实现. 这也是版本号一直都在0点几徘徊的原因.

你的提议不错, 但除了分享出去以外. 还要考虑, 如何返回 app.

目前有一个WechatManagerShareDelegate 去处理返回时,如何处理.

但是作为一个第四方(整合第三方)的框架, 不应该使用 Delegate. 会增加用户使用难度, block 应该是比较好的选择.

也就是,需要在分享出去之前. 注册一下(设置一下返回的处理方法)block. 在分享. 如果不是 APP 分享,那么可以跳过注册这一步.