AhShare-冀银社交化分享组件
来源:互联网 发布:女健身教练 知乎 编辑:程序博客网 时间:2024/05/17 00:56
社交化组件支持cocoapods
- 适用于公司组件化开发,采用cocoapods控制组件版本,做到一次提交,多处可用。
写在前面的话
这里的组件或者叫做模块,严格来说就是pod库的制作,不能算是严格意义上的组件化开发,SO某些大神不必在此纠结。建立这些组件的目的在于组件服务化,将组件从app中解耦出来,统一开发,统一管理,统一修改。 我们提出这样一个畅想,在公司新上一个项目时,该项目的开发人员通过简单的配置,将所用到的功能模块集合到框架中去,开发人员不需要去关注组件内部具体的实现方式,只需要关注本项目的业务逻辑的实现,界面的跳转即可。当需要修改时,只需要专职人员将组件库修改并更新,各项目组直接update下就OK了。
1.为什么要做要做这类组件?
App是一个面向特定业务群体的产品化应用。 每一款app在业务逻辑上都具有独立性和特异性。但是就技术本身来看又具有很多通性和可复用性。比如网络层,数据缓存,数据解析,还有一些常用的业务组件,这些我们都可以拆分成一个个的功能组件(模块),这些组件能够独立升级,不影响引用组件项目的稳定性。同时这些组件省去了项目内开发人员引入依赖库的麻烦,用Xcode引入所有sdk的FrameWorks,个中酸爽只有搞过才会有体会。
2. 为什么只是简单的封装pod库?
一来个人能力和精力有限,二来要考虑使用者的能力,如果采用注册表形式 通过openurl调取控制器, 去model化进一步解除对数据模型的依赖的话,那项目组的开发人员的学习成本会增大很多, 这与我们建设组件化的根本目的相违背,我们希望通过组件的逐渐完善,让初中级研发人员在开发过程中只关注于业务逻辑。提高整体开发效率,给公司带来的效益最大化。如果是一群大神只做一款产品,我也觉得后者的形式进行组件化开发会更好,可扩展性会更好,比如蘑菇街。
3. 为什么只是简单的封装sdk?
如果只是学习的话,我觉得还是要扎下去,研究底层,公司开发的话,有2个因素决定封装现有的优良sdk, 时间成本和稳定性。
AhShare使用方法
1.通过cocoapods导入AhShare组件
pod 'AhShare', '~> 0.1.3'
2.编写AhShareSet.plist文件
文件可以从demo中获取,demo地址:https://github.com/ahao1011/AhShare.git 也可以直接下载
按照上图将申请的id和key填写到对应位置.
注意,该plist文件名称不能修改,若修改的话请在AhShareManager的+ (void)SetUmSocial类方法中对应修改掉
NSString *plistPath = [[NSBundle mainBundle]pathForResource:@"AhShareSet" ofType:@"plist"];; NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:plistPath]; }
3.配置SSO白名单
从iOS9开始,如果你的应用使用了SSO授权或者跳转到第三方分享功能,我们需要在项目的info.plist添加一个可跳转到白名单,不添加在跳转时canOpenURL会返回NO,授权或者分享功能不能正常实现,具体方法为右键info.plist文件选择source code打开,将一下文本复制到info.plist中去,注意打开时是以HTML展示的,不要插到节点内部里.
PS:
本打算通过代码处理,不用使用人员手工导入, 但是因为苹果针对info.plist做了特殊处理,代码实现了插入操作,打印log也确实看到插入进去了,但是info.plist文件就是没有体现,因为这个文件是只读的,苹果应该做了一些特殊的处理.
<key>LSApplicationQueriesSchemes</key><array> <!-- 微信 URL Scheme 白名单--> <string>wechat</string> <string>weixin</string> <!-- 新浪微博 URL Scheme 白名单--> <string>sinaweibohd</string> <string>sinaweibo</string> <string>sinaweibosso</string> <string>weibosdk</string> <string>weibosdk2.5</string> <!-- QQ、Qzone URL Scheme 白名单--> <string>mqqapi</string> <string>mqq</string> <string>mqqOpensdkSSoLogin</string> <string>mqqconnect</string> <string>mqqopensdkdataline</string> <string>mqqopensdkgrouptribeshare</string> <string>mqqopensdkfriend</string> <string>mqqopensdkapi</string> <string>mqqopensdkapiV2</string> <string>mqqopensdkapiV3</string> <string>mqqopensdkapiV4</string> <string>mqzoneopensdk</string> <string>wtloginmqq</string> <string>wtloginmqq2</string> <string>mqqwpa</string> <string>mqzone</string> <string>mqzonev2</string> <string>mqzoneshare</string> <string>wtloginqzone</string> <string>mqzonewx</string> <string>mqzoneopensdkapiV2</string> <string>mqzoneopensdkapi19</string> <string>mqzoneopensdkapi</string> <string>mqqbrowser</string> <string>mttbrowser</string></array>
4.设置URL Scheme
如果想实现第三方app可以跳转到自己的项目app中来,就必须设置自身zpp的url scheme,这里使用第三方平台注册的appkey信息向系统注册你的app,流程以及设计规则参看下图, 参考了友盟的sdk文档
- 配置第三方URL Scheme说明
5.实现分享与登录
5.1 AppDelegate设置
引入头文件
#import "AhShare.h"
设置初始化
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [AhShareManager SetUmSocial]; [AhShareManager openLog:YES]; [AhShareManager usingWaterMark:YES]; return YES;}
设置系统回调
- (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
- AhShare-冀银社交化分享组件
- 友盟社交化分享,自定义分享面板
- iOS- 三步快速集成社交化分享工具ShareSDK + iOS- 无处不在,详解iOS集成第三方登录(SSO授权登录<无需密码>)
- 关于社交组件的问题01
- 关于社交游戏组件珊瑚SDK的游戏开发测试点评!!
- 存储虚拟化分析
- 图形化分区管理工具
- 小数化分数
- 虚拟化分类
- 结构化分析方法
- 小数化分数
- 序列化分析系列
- 小数化分数2
- 小数化分数
- 小数化分数
- 小数化分数2
- 小数化分数2
- 小数化分数
- 2017.03 JAVA 面试题 中高级
- Linux C 冒泡排序
- CentOS6.5系统"libc.so.6: version 'GLIBC_2.15' not found"解决方法
- Android--Android中使用广播BroadcastReceiver进行用户强制下线功能
- Cookie简单用法
- AhShare-冀银社交化分享组件
- Git生成 SSH 公钥
- ViewPager删除和添加的实现
- PAT 1130. Infix Expression (25)-甲级
- 【C++】计算字符个数
- 小鑫去爬山
- java个人笔记之线程
- spring-batch使用
- 欧几里得算法求最大公因数