社会化分享是大部分应用都会集成的模块,现在市场上也有很多的商业产品(友盟,shareSDK),但是很多时候我们还是需要自己的分享组件,同时也要支持第三方登录。
分享内容
如果需要统一接口,必须首先统一分享内容,把几种比较常见的和共有的分享内容合并。以下是几种各个平台都比较统一的结构。构造分享内容的时候尽量填满所有的类型,来满足各个平台的不同需求。
1 | typedef NS_ENUM (NSInteger, MZShareType) { |
因为很多平台对缩略图有要求,而且大小不一致,这里我们可以在不影响质量的情况下取最小值。
1 | - (UIImage *)thumbImageWithImage:(UIImage *)image maxPixelSize:(NSInteger)size forceCreated:(BOOL)forceCreated { |
第三方认证数据
大部分都会有token
和expireDate
这两个参数,同样,也建立一个类来保存用户认证信息。
1 | @property (strong, nonatomic) NSString *token; |
分享外观Manager
这里我们采用尽可能的去分享的原则来处理。只要支持这种类型,并且安装了app的就显示分享。
1 | + (BOOL)openURL:(NSURL *)url; |
分享接口
我们需要统一不同类型的分享
1 | + (BOOL)canShareItem:(MZShareItem *)item; |
1 | // Delegate |
认证接口
注意事项
这里最大的注意事项是,我们不能确保整个流程是否能够完全的走完。当跳转到其他应用的时候,用户并不一定回调回来,可能关闭或者做其他事情去了,这时候我们要在应用再次被唤起的时候,把当前的状态重置。由于这里我们不知道最终结构,所以我只能作为失败来处理。
1 | [[NSNotificationCenter defaultCenter] addObserver:self |