美文网首页
三方分享 cocoapods封装友盟

三方分享 cocoapods封装友盟

作者: 阿浩ah | 来源:发表于2017-03-16 21:09 被阅读222次

    AhShare-冀银社交化分享组件


    • 适用于公司组件化开发,采用cocoapods控制组件版本,做到一次提交,多处可用。

    写在前面的话

    这里的组件或者叫做模块,严格来说就是pod库的制作,不能算是严格意义上的组件化开发,SO某些大神不必在此纠结。建立这些组件的目的在于组件服务化,将组件从app中解耦出来,统一开发,统一管理,统一修改。 我们提出这样一个畅想,在公司新上一个项目时,该项目的开发人员通过简单的配置,将所用到的功能模块集合到框架中去,开发人员不需要去关注组件内部具体的实现方式,只需要关注本项目的业务逻辑的实现,界面的跳转即可。当需要修改时,只需要专职人员将组件库修改并更新,各项目组直接update下就OK了。

    一.为什么要做这类组件?
    App是一个面向特定业务群体的产品化应用。 每一款app在业务逻辑上都具有独立性和特异性。但是就技术本身而言又具有很多通性和可复用性。比如网络层,数据缓存,数据解析,还有一些常用的业务组件,这些我们都可以拆分成一个个的功能组件(模块),这些组件能够独立升级,不影响引用组件项目的稳定性。同时这些组件省去了项目内开发人员引入依赖库的麻烦,用Xcode引入所有sdk的FrameWorks,个中酸爽只有搞过才会有体会。
    二.为什么只是简单的封装pod库?
    一来个人能力和精力有限,二来要考虑使用者的能力,如果采用注册表形式 通过openurl调取控制器, 去model化进一步解除对数据模型的依赖的话,那项目组的开发人员的学习成本会增大很多, 这与我们建设组件化的根本目的相违背,我们希望通过组件的逐渐完善,让初中级研发人员在开发过程中只关注于业务逻辑。提高整体开发效率,给公司带来的效益最大化。如果是一群大神只做一款产品,我也觉得后者的形式进行组件化开发会更好,可扩展性会更好,比如蘑菇街。
    三.为什么只是简单的封装sdk?
    如果只是学习的话,我觉得还是要扎下去,研究底层,公司开发的话,有2个因素决定封装现有的优良sdk, 时间成本和稳定性。

    AhShare使用方法

    1.通过cocoapods导入AhShare组件

    pod 'AhShare', '~> 0.1.3'
    

    2.编写AhShareSet.plist文件

    文件可以从demo中获取,demo地址:https://github.com/ahao1011/AhShare.git 也可以直接下载

    设置URL Scheme示意图
    • 配置第三方URL Scheme说明
    平台 格式 举例 备注
    微信 微信appKey wxdc1e388c3822c80b
    QQ/Qzone 需要添加两项URL Scheme:1、"tencent"+腾讯QQ互联应用appID2、“QQ”+腾讯QQ互联应用appID转换成十六进制(不足8位前面补0) 如appID:100424468 1、tencent100424468 2、QQ05fc5b14 QQ05fc5b14为100424468转十六进制而来,因不足8位向前补0,然后加"QQ"前缀
    新浪微博 “wb”+新浪appKey wb3921700954 m

    5.实现分享与登录

    5.1 AppDelegate设置

    引入头文件

     #import "AhShare.h"
    

    设置初始化

     - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        
        
        [AhShareManager SetUmSocial];
        [AhShareManager openLog:YES];
        [AhShareManager usingWaterMark:YES];
        
        return YES;
    }
    

    设置系统回调

     //#define __IPHONE_10_0    100000
    #if __IPHONE_OS_VERSION_MAX_ALLOWED > 100000
    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
    {
        
        BOOL result = [AhShareHandle AhHandleOpenURL:url options:options];
        if (!result) {
            
            //  其他sdk的调用  例如支付宝支付
        }
        return  result;
    }
    
    #endif
    
    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
    {
        //6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响
        BOOL result = [AhShareHandle AhHandleOpenURL:url sourceApplication:sourceApplication annotation:annotation];
        if (!result) {
            // 其他如支付等SDK的回调
        }
        return result;
    }
    
    - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
    {
        BOOL result = [AhShareHandle AhHandleOpenURL:url];
        if (!result) {
            // 其他如支付等SDK的回调
        }
        return result;
    }
    

    5.2 信息分享

    AhShareInfo 是一个自定义的分享对象模型,需要先实例化该类一对象,将图片,标题,描述文字补充完整,通过AhShareManager的类方法showWithType: info:进行分享

      AhShareInfo *info = [[AhShareInfo alloc]init];
        info.title = @"hah";
        info.subTitle = @"描述...";
        info.thumImg = [UIImage imageNamed:@"kk"];
        info.linkUrl = @"http://www.baidu.com";
        
        [AhShareManager showWithType:Show_UM info:info];
    

    5.3第三方登录

    通过AhShareHandle的类方法实现第三方登录.

      [AhShareHandle AhShareHandleGetUserInfoFormPlatform:AhShare_QQ DoHandle:^(BOOL issus, NSString *username, NSString *usergender, NSString *usericonurl) {
      
            // username 昵称 usergender 性别 usericonurl 头像地址
        }];
    

    其中AhShare_QQ 为AhSharePlatform枚举,代表QQ登录.

      typedef enum {  //  分享平台
        /**QQ聊天界面*/
        AhShare_QQ                    =0,
        /**QQ空间*/
        AhShare_Qzone                 =1 << 0,
        /**微信聊天*/
        AhShare_WechatSession         =1 << 1,
        /**微信朋友圈*/
        AhShare_WechatTimeLine        =1 << 2,
        /**新浪*/
        AhShare_Sina                  =1 << 3,
    
    }AhSharePlatform;
    

    目前分享平台只添加了QQ聊天,QQ控件,微信聊天,微信朋友圈,微信收藏,三方登录只添加了微信和QQ,若新增其他平台你可以在AhShare中follow 然后尽情的request.如果你觉得有用,方便时请给我Star.也可以通过邮箱联系我zth0218@126.com

    相关文章

      网友评论

          本文标题:三方分享 cocoapods封装友盟

          本文链接:https://www.haomeiwen.com/subject/gbtsnttx.html