New file |
| | |
| | | // |
| | | // UMSShareDataTypeTableViewController.h |
| | | // SocialSDK |
| | | // |
| | | // Created by umeng on 16/4/14. |
| | | // Copyright © 2016年 dongjianxiong. All rights reserved. |
| | | // |
| | | |
| | | #import <UIKit/UIKit.h> |
| | | #import "UMSocialPlatformConfig.h" |
| | | #import "UMSocialPlatformProvider.h" |
| | | |
| | | |
| | | extern NSString *const UMSocialErrorDomain; |
| | | extern NSString *const UMSocialShareDataTypeIllegalMessage; |
| | | |
| | | @class UMSocialHandlerConfig; |
| | | |
| | | /** |
| | | * 实现所有平台的基类 |
| | | * @discuss |
| | | * 前提条件:需要在主工程配置 other link flag -ObjC |
| | | * 所有实现UMSocialHandler对应平台类型子类,需要重写如下方法: |
| | | * 1.+(NSArray*) socialPlatformTypes; 返回对应平台的类型的数组,此处用数组是为了在微信和qq的平台是可以有不同的平台类型(微信,朋友圈等)与统一handler公用 |
| | | * 2.重写load函数: |
| | | * |
| | | * 代码示例: |
| | | * +(void)load |
| | | * { |
| | | * [super load];//必须调用 |
| | | * } |
| | | * |
| | | * 重载后保证调用基类的[UMSocialHandler load] |
| | | * 3.重写defaultManager单例类方法,保证运行时能找到defaultManager来获得当前的单例方法,保证其唯一性。 |
| | | */ |
| | | @interface UMSocialHandler : NSObject<UMSocialPlatformProvider> |
| | | |
| | | #pragma mark - 子类需要重载的类 |
| | | +(void)load; |
| | | +(NSArray*) socialPlatformTypes; |
| | | + (instancetype)defaultManager; |
| | | |
| | | #pragma mark - |
| | | |
| | | @property (nonatomic, copy) NSString *appID; |
| | | |
| | | @property (nonatomic, copy) NSString *appSecret; |
| | | |
| | | @property (nonatomic, copy) NSString *redirectURL; |
| | | |
| | | /** |
| | | * 当前ViewController(用于一些特定平台弹出相应的页面,默认使用当前ViewController) |
| | | * since 6.3把currentViewController修改为弱引用,防止用户传入后强引用用户传入的UIViewController,导致内存不释放, |
| | | * 注意:如果传入currentViewController的时候,一定要保证在(执行对应的分享,授权,获得用户信息的接口需要传入此接口的时候)存在,否则导致弱引用为nil,没有弹出界面的效果。 |
| | | */ |
| | | @property (nonatomic, weak) UIViewController *currentViewController; |
| | | |
| | | @property (nonatomic, copy) UMSocialRequestCompletionHandler shareCompletionBlock; |
| | | |
| | | @property (nonatomic, copy) UMSocialRequestCompletionHandler authCompletionBlock; |
| | | |
| | | @property (nonatomic, copy) UMSocialRequestCompletionHandler userinfoCompletionBlock; |
| | | |
| | | |
| | | -(BOOL)searchForURLSchemeWithPrefix:(NSString *)prefix; |
| | | -(void)setAppId:(NSString *)appID appSecret:(NSString *)secret url:(NSString *)url; |
| | | -(void)saveuid:(NSString *)uid openid:(NSString *)openid accesstoken:(NSString *)token refreshtoken:(NSString *)retoken expiration:(id )expiration; |
| | | |
| | | #pragma mark - 6.0.3新加入的平台配置类 |
| | | @property(nonatomic,readonly,strong)UMSocialHandlerConfig* handlerConfig; |
| | | |
| | | |
| | | @end |
| | | |
| | | |
| | | /** |
| | | * 针对平台限制的类别 |
| | | */ |
| | | @interface UMSocialHandler (UMSocialLimit) |
| | | |
| | | /** |
| | | * 检查对应平台的数据数据是否超过限制 |
| | | * |
| | | * @param text 源文本 |
| | | * @param textLimit 限制文本的大小 |
| | | * |
| | | * @return YES 代表没有限制,NO 代表超过限制 |
| | | */ |
| | | -(BOOL) checkText:(NSString*)text withTextLimit:(NSUInteger)textLimit; |
| | | |
| | | |
| | | /** |
| | | * 检查对应平台的数据数据是否超过限制 |
| | | * |
| | | * @param data 源文本 |
| | | * @param dataLimit 限制文本的大小 |
| | | * |
| | | * @return YES 代表没有限制,NO 代表超过限制 |
| | | */ |
| | | -(BOOL) checkData:(NSData*)data withDataLimit:(NSUInteger)dataLimit; |
| | | |
| | | /** |
| | | * 对应平台超过限制,就截断文本 |
| | | * |
| | | * @param text 源文本 |
| | | * @param textLimit 限制文本的大小 |
| | | * |
| | | * @return 返回的截断的文本 |
| | | */ |
| | | -(NSString*)truncationText:(NSString*)text withTextLimit:(NSUInteger)textLimit; |
| | | |
| | | |
| | | /** |
| | | * 压缩对应平台的图片数据到限制发送的大小 |
| | | * |
| | | * @param imageData 对应的图片数据 |
| | | * @param imageLimit 限制图片的大小 |
| | | * |
| | | * @return 新的压缩的数据 |
| | | * @dicuss 当前图片小于对应平台的限制大小就返回本身,反之就压缩到指定大小以下发送 |
| | | */ |
| | | -(NSData*)compressImageData:(NSData*)imageData withImageLimit:(NSUInteger)imageLimit; |
| | | |
| | | @end |
| | | |
| | | |
| | | #pragma mark - 6.0.3新增的配置类,用于限制分享类型和分享的内容 |
| | | |
| | | /** |
| | | * UMeng 分享类型配置信息的基类 |
| | | */ |
| | | @interface UMSocialShareObjectConfig : NSObject |
| | | |
| | | /** |
| | | * 标题 |
| | | * @note 标题的长度依各个平台的要求而定 |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger titleLimit; |
| | | |
| | | /** |
| | | * 描述 |
| | | * @note 描述内容的长度依各个平台的要求而定 |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger descrLimit; |
| | | |
| | | /** |
| | | * 缩略图数据的大小 |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger thumbImageDataLimit; |
| | | |
| | | /** |
| | | * 缩略图URL的大小 |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger thumbImageUrlLimit; |
| | | |
| | | |
| | | /** |
| | | * 点击多媒体内容之后呼起第三方应用特定页面的scheme |
| | | * @warning 长度小于255 |
| | | * //sina平台有此字段限制 |
| | | * @discuss 此字段目前不用 |
| | | */ |
| | | //@property (nonatomic, strong) NSString *schemeLimit; |
| | | |
| | | /** |
| | | * @note 长度不能超过64字节 |
| | | * //微信平台有此字段 |
| | | * @discuss 此字段目前不用 |
| | | */ |
| | | //@property (nonatomic, retain) NSString *mediaTagName; |
| | | |
| | | @end |
| | | /** |
| | | * 分享文本类型的配置 |
| | | * |
| | | */ |
| | | @interface UMSocialShareTextObjectConfig : UMSocialShareObjectConfig |
| | | |
| | | /** |
| | | * 文本内容的限制 |
| | | */ |
| | | @property(nonatomic,readwrite,assign)NSUInteger textLimit; |
| | | |
| | | @end |
| | | |
| | | |
| | | /** |
| | | * 分享图片的类型配置 |
| | | */ |
| | | @interface UMSocialShareImageObjectConfig : UMSocialShareObjectConfig |
| | | |
| | | /** |
| | | * 缩略图数据的大小 |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger shareImageDataLimit; |
| | | |
| | | /** |
| | | * 缩略图数据的URL大小 |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger shareImageURLLimit; |
| | | |
| | | @end |
| | | |
| | | |
| | | /** |
| | | * 分享音乐的类型配置 |
| | | */ |
| | | @interface UMSocialShareMusicObjectConfig : UMSocialShareObjectConfig |
| | | |
| | | /** |
| | | * 音乐网页的url地址 |
| | | */ |
| | | @property (nonatomic, readwrite,assign)NSUInteger musicUrlLimit; |
| | | |
| | | /** |
| | | * 音乐lowband网页的url地址 |
| | | */ |
| | | @property (nonatomic, readwrite,assign)NSUInteger musicLowBandUrlLimit; |
| | | |
| | | /** |
| | | * 音乐数据url地址 |
| | | */ |
| | | @property (nonatomic, readwrite,assign)NSUInteger musicDataUrlLimit; |
| | | |
| | | /** |
| | | * 音乐lowband数据url地址 |
| | | */ |
| | | @property (nonatomic, readwrite,assign)NSUInteger musicLowBandDataUrlLimit; |
| | | |
| | | @end |
| | | |
| | | /** |
| | | * 分享视频的类型配置 |
| | | */ |
| | | @interface UMSocialShareVideoObjectConfig : UMSocialShareObjectConfig |
| | | |
| | | /** |
| | | * 视频网页的url |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger videoUrlLimit; |
| | | |
| | | /** |
| | | * 视频lowband网页的url |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger videoLowBandUrlLimit; |
| | | |
| | | /** |
| | | * 视频数据流url |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger videoStreamUrlLimit; |
| | | |
| | | /** |
| | | * 视频lowband数据流url |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger videoLowBandStreamUrlLimit; |
| | | |
| | | @end |
| | | |
| | | /** |
| | | * 分享webURL |
| | | */ |
| | | @interface UMSocialShareWebpageObjectConfig : UMSocialShareObjectConfig |
| | | |
| | | /** |
| | | * 网页的url地址 |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger webpageUrlLimit; |
| | | |
| | | @end |
| | | |
| | | /** |
| | | * 分享Email的类型配置 |
| | | */ |
| | | @interface UMSocialShareEmailObjectConfig : UMSocialShareObjectConfig |
| | | |
| | | /** |
| | | * 接收人 |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger toRecipientLimit; |
| | | |
| | | /** |
| | | * 抄送人 |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger ccRecipientLimit; |
| | | |
| | | /** |
| | | * 密送人 |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger bccRecipientLimit; |
| | | |
| | | /** |
| | | * 文本内容 |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger emailContentLimit; |
| | | |
| | | /** |
| | | * 图片大小 |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger emailImageDataLimit; |
| | | |
| | | /** |
| | | * 图片URL大小 |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger emailImageUrlLimit; |
| | | |
| | | /** |
| | | * 文件(NSData) |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger emailSendDataLimit; |
| | | |
| | | /** |
| | | * 允许的文件格式 |
| | | */ |
| | | @property (nonatomic, readwrite,strong) NSArray *fileType; |
| | | |
| | | /** |
| | | * 文件名,(例如图片 imageName.png, 文件名后要跟文件后缀名,否则没法识别,导致类似图片不显示的问题) |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger fileNameLimit; |
| | | |
| | | |
| | | @end |
| | | |
| | | /** |
| | | * 分享Email的类型配置 |
| | | */ |
| | | @interface UMSocialShareSmsObjectConfig : UMSocialShareObjectConfig |
| | | |
| | | /** |
| | | * 接收人 |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger recipientLimit; |
| | | |
| | | /** |
| | | * 文本内容 |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger smsContentLimit; |
| | | |
| | | /** |
| | | * 图片 |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger smsImageDataLimit; |
| | | @property (nonatomic, readwrite,assign) NSUInteger smsImageUrlLimit; |
| | | |
| | | /** |
| | | * 文件数据(NSData) |
| | | * 必填 |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger smsSendDataLimit; |
| | | |
| | | /** |
| | | * 文件格式 |
| | | * 必填,必须指定数据格式,如png图片格式应传入@"png" |
| | | */ |
| | | @property (nonatomic, readwrite,strong) NSArray *fileType; |
| | | |
| | | /** |
| | | * 文件名,(例如图片 imageName.png, 文件名后要跟文件后缀名,否则没法识别,导致类似图片不显示的问题) |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger fileNameLimit; |
| | | |
| | | /** |
| | | * 文件地址url |
| | | */ |
| | | @property (nonatomic, readwrite,assign) NSUInteger fileUrlLimit; |
| | | |
| | | @end |
| | | |
| | | /** |
| | | * 此配置项是特定平台才有的,比如微信, |
| | | */ |
| | | @interface UMSocialShareEmotionObjectConfig : UMSocialShareObjectConfig |
| | | |
| | | //表情的字节大小限制 |
| | | @property(nonatomic,readwrite,assign)NSUInteger emotionDataLimit; |
| | | |
| | | @end |
| | | |
| | | |
| | | /** |
| | | * 此配置项是特定平台才有的,比如微信, |
| | | */ |
| | | @interface UMSocialShareFileObjectConfig : UMSocialShareObjectConfig |
| | | |
| | | @property (nonatomic, readwrite,assign) NSUInteger fileExtensionLimit; |
| | | |
| | | @property (nonatomic, readwrite,assign) NSUInteger fileDataLimit; |
| | | |
| | | @end |
| | | |
| | | /** |
| | | * 此配置项是特定平台才有的,比如微信 |
| | | */ |
| | | @interface UMSocialShareExtendObjectConfig : UMSocialShareObjectConfig |
| | | |
| | | @property (nonatomic, readwrite,assign) NSUInteger urlLimit; |
| | | |
| | | @property (nonatomic, readwrite,assign) NSUInteger extInfoLimit; |
| | | |
| | | @property (nonatomic, readwrite,assign) NSUInteger fileDataLimit; |
| | | |
| | | @end |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 每个平台的配置信息 |
| | | * 包括如下: |
| | | * 1.对分享内容的限制。 |
| | | * |
| | | */ |
| | | @interface UMSocialHandlerConfig : NSObject |
| | | |
| | | @property(nonatomic,readwrite,strong)UMSocialShareTextObjectConfig* shareTextObjectConfig; |
| | | @property(nonatomic,readwrite,strong)UMSocialShareImageObjectConfig* shareImageObjectConfig; |
| | | @property(nonatomic,readwrite,strong)UMSocialShareMusicObjectConfig* shareMusicObjectConfig; |
| | | @property(nonatomic,readwrite,strong)UMSocialShareVideoObjectConfig* shareVideoObjectConfig; |
| | | @property(nonatomic,readwrite,strong)UMSocialShareWebpageObjectConfig* shareWebpageObjectConfig; |
| | | @property(nonatomic,readwrite,strong)UMSocialShareEmailObjectConfig* shareEmailObjectConfig; |
| | | @property(nonatomic,readwrite,strong)UMSocialShareSmsObjectConfig* shareSmsObjectConfig; |
| | | @property(nonatomic,readwrite,strong)UMSocialShareEmotionObjectConfig* shareEmotionObjectConfig; |
| | | @property(nonatomic,readwrite,strong)UMSocialShareFileObjectConfig* shareFileObjectConfig; |
| | | @property(nonatomic,readwrite,strong)UMSocialShareExtendObjectConfig* shareExtendObjectConfig; |
| | | |
| | | //检查输入的text是否符合对应平台的输入 |
| | | +(BOOL) checkText:(NSString*)text withTextLimit:(NSUInteger)textLimit; |
| | | +(BOOL) checkData:(NSData*)data withDataLimit:(NSUInteger)dataLimit; |
| | | +(NSString*) truncationText:(NSString*)text withTextLimit:(NSUInteger)textLimit; |
| | | |
| | | //压缩图片 |
| | | + (NSData *)compressImageData:(NSData*)imageData toLength:(CGFloat)imageLimit; |
| | | + (NSData *)compressImage:(UIImage*)image toLength:(CGFloat)imageLimit; |
| | | |
| | | @end |