U-Share API
本文档介绍了U-Share所有的API接口用法
引用头文件
#import <UMShare/UMShare.h>
接口类UMSocialManager
获取类实例
[UMSocialManager defaultManager]
打开日志
/*** 打开日志** @param isOpen YES代表打开,No代表关闭*/- (void)openLog:(BOOL)isOpen;
设置平台的appkey
/*** 设置平台的appkey** @param platformType 平台类型 @see UMSocialPlatformType* @param appKey appKey* @param appSecret appSecret (有些平台没有,可以不传)* @param redirectURL redirectURL (回调地址)*/- (BOOL)setPlaform:(UMSocialPlatformType)platformTypeappKey:(NSString *)appKeyappSecret:(NSString *)appSecretredirectURL:(NSString *)redirectURL;
分享接口
/*** 分享接口** @param platformType @see UMSocialPlatformType* @param shareObject* @param currentViewController 用于弹出类似邮件分享、短信分享等这样的系统页面* @param completion 回调* @discuss currentViewController 只正对sms,email等平台需要传入viewcontroller的平台,其他不需要的平台可以传入nil*/- (void)shareToPlatform:(UMSocialPlatformType)platformTypemessageObject:(UMSocialMessageObject *)messageObjectcurrentViewController:(id)currentViewControllercompletion:(UMSocialRequestCompletionHandler)completion;
授权并获取用户信息接口
/*** 授权并获取用户信息* @param currentViewController 用于弹出类似邮件分享、短信分享等这样的系统页面* @param completion 回调*/- (void)getUserInfoWithPlatform:(UMSocialPlatformType)platformTypecurrentViewController:(id)currentViewControllercompletion:(UMSocialRequestCompletionHandler)completion;
/*** 获得从sso或者web端回调到本app的回调** @param url 第三方sdk的打开本app的回调的url** @return 是否处理 YES代表处理成功,NO代表不处理*/-(BOOL)handleOpenURL:(NSURL *)url;
/*** 动态的增加用户自定义的PlatformProvider** @param userDefinePlatformProvider 用户自定义的userDefinePlatformProvider必须实现UMSocialPlatformProvider* @param platformType @see platformType platformType的有效范围在 (UMSocialPlatformType_UserDefine_Begin,UMSocialPlatformType_UserDefine_End)之间** @return YES代表返回成功,NO代表失败* @disuss 在调用此函数前,必须先设置对应的平台的配置信息 @see - (BOOL)setPlaform:(UMSocialPlatformType)platformType appKey:(NSString *)appKey appSecret:(NSString *)appSecret redirectURL:(NSString *)redirectURL;*/-(BOOL)addAddUserDefinePlatformProvider:(id<UMSocialPlatformProvider>)userDefinePlatformProviderwithUserDefinePlatformType:(UMSocialPlatformType)platformType;
取消授权接口
/*** 取消授权** @param platformType @see UMSocialPlatformType* @param completion 回调*/- (void)cancelAuthWithPlatform:(UMSocialPlatformType)platformTypecompletion:(UMSocialRequestCompletionHandler)completion;
判断平台是否安装
/*** 平台是否安装** @param platformType 平台类型 @see UMSocialPlatformType** @return YES 代表安装,NO 代表未安装* @note 在判断QQ空间的App的时候,QQApi判断会出问题*/-(BOOL) isInstall:(UMSocialPlatformType)platformType;
动态的删除PlatformProvider
不管是预定义还是用户自定义的
/*** 动态的删除不想显示的平台,不管是预定义还是用户自定义的** @param platformTypeArray 平台类型数组*/-(void) removePlatformProviderWithPlatformTypes:(NSArray *)platformTypeArray;/*** 动态的删除PlatformProvider,不管是预定义还是用户自定义的** @param platformType @see UMSocialPlatformType*/-(void) removePlatformProviderWithPlatformType:(UMSocialPlatformType)platformType;/*** 获得对应的平台类型platformType的PlatformProvider** @param platformType @see platformType** @return 返回继承UMSocialPlatformProvider的handle*/-(id<UMSocialPlatformProvider>)platformProviderWithPlatformType:(UMSocialPlatformType)platformType;
分享类数据结构
分享消息类UMSocialMessageObject
@interface UMSocialMessageObject : NSObject/*** @param text 文本内容* @note 非纯文本分享文本*/@property (nonatomic, copy) NSString *text;/*** 分享的所媒体内容对象*/@property (nonatomic, strong) UMShareObject *shareObject;/*** 其他相关参数,见相应平台说明*/@property (nonatomic, strong) NSDictionary *moreInfo;+ (UMSocialMessageObject *)messageObject;+ (UMSocialMessageObject *)messageObjectWithMediaObject:(id)mediaObject;@end
基本分享类型UMShareObject
UMShareObject是所有多媒体内容的基类,多媒体内容包括图片、音乐、视频、网页等。纯文本分享不属于多媒体,只需要设置UMSocialMessageObject的text属性就可以。
@interface UMShareObject : NSObject/*** 标题* @note 标题的长度依各个平台的要求而定*/@property (nonatomic, copy) NSString *title;/*** 描述* @note 描述内容的长度依各个平台的要求而定*/@property (nonatomic, copy) NSString *descr;/*** 缩略图 UIImage或者NSData类型或者NSString类型(图片url)*/@property (nonatomic, strong) id thumbImage;/*** @param title 标题* @param descr 描述* @param thumImage 缩略图(UIImage或者NSData类型,或者image_url)**/+ (id)shareObjectWithTitle:(NSString *)titledescr:(NSString *)descrthumImage:(id)thumImage;+ (void)um_imageDataWithImage:(id)image completion:(void (^)(NSData *image))completion;@end
分享图片类(参考父类UMShareObject)
@interface UMShareImageObject : UMShareObject/** 图片内容 (可以是UIImage类对象,也可以是NSdata类对象,也可以是图片链接imageUrl NSString类对象)* @note 图片大小根据各个平台限制而定*/@property (nonatomic, retain) id shareImage;@end
分享音乐数据结构(参考父类UMShareObject)
@interface UMShareMusicObject : UMShareObject/** 音乐网页的url地址* @note 长度不能超过10K*/@property (nonatomic, retain) NSString *musicUrl;/** 音乐lowband网页的url地址* @note 长度不能超过10K*/@property (nonatomic, retain) NSString *musicLowBandUrl;/** 音乐数据url地址* @note 长度不能超过10K*/@property (nonatomic, retain) NSString *musicDataUrl;/**音乐lowband数据url地址* @note 长度不能超过10K*/@property (nonatomic, retain) NSString *musicLowBandDataUrl;@end
分享视频数据结构(参考父类UMShareObject)
@interface UMShareVideoObject : UMShareObject/**视频网页的url@warning 不能为空且长度不能超过255*/@property (nonatomic, strong) NSString *videoUrl;/**视频lowband网页的url@warning 长度不能超过255*/@property (nonatomic, strong) NSString *videoLowBandUrl;/**视频数据流url@warning 长度不能超过255*/@property (nonatomic, strong) NSString *videoStreamUrl;/**视频lowband数据流url@warning 长度不能超过255*/@property (nonatomic, strong) NSString *videoLowBandStreamUrl;@end
分享网页数据结构(参考父类UMShareObject)
@interface UMShareWebpageObject : UMShareObject/** 网页的url地址* @note 不能为空且长度不能超过10K*/@property (nonatomic, retain) NSString *webpageUrl;@end
分享微信/QQ小程序(参考父类UMShareObject)
@interface WXMiniProgramObject : NSObject/*! @brief WXMiniProgramObject对象** @note 返回的WXMiniProgramObject对象是自动释放的*/+(WXMiniProgramObject *) object;@property (nonatomic, strong) NSString *webpageUrl; //低版本网页链接@property (nonatomic, strong) NSString *userName; //小程序username@property (nonatomic, strong) NSString *path; //小程序页面的路径@end
邮件分享数据结构(参考父类UMShareObject)
/*! @brief 分享消息中的邮件分享对象** @see UMShareObject*/@interface UMShareEmailObject : UMShareObject/*** 接收人*/@property (nonatomic, strong) NSArray *toRecipients;/*** 抄送人*/@property (nonatomic, strong) NSArray *ccRecipients;/*** 密送人*/@property (nonatomic, strong) NSArray *bccRecipients;/*** 文本内容*/@property (nonatomic, copy) NSString *emailContent;/*** 图片*/@property (nonatomic, strong) id emailImage;/*** 文件(NSData)*/@property (nonatomic, strong) NSData *emailSendData;/*** 文件格式*/@property (nonatomic, copy) NSString *fileType;/*** 文件名*/@property (nonatomic, copy) NSString *fileName;@end
短信分享数据结构(参考父类UMShareObject)
/*! @brief 分享消息中的短信分享对象** @see UMSocialMessageObject*/@interface UMShareSmsObject : UMShareObject/*** 接收人*/@property (nonatomic, strong) NSArray *recipients;/*** 文本内容*/@property (nonatomic, copy) NSString *smsContent;/*** 图片*/@property (nonatomic, strong) id smsImage;/*** 文件数据(NSData)*/@property (nonatomic, strong) NSData *smsSendData;/*** 文件格式*/@property (nonatomic, copy) NSString *fileType;/*** 文件名称*/@property (nonatomic, copy) NSString *fileName;/*** 文件地址url*/@property (nonatomic, copy) NSString *fileUrl;@end
分享回调类
接口返回数据结构基类
@interface UMSocialResponse : NSObject@property (nonatomic, copy) NSString *uid;//用户id@property (nonatomic, copy) NSString *openid;//QQ,微信用户openid,其他平台没有@property (nonatomic, copy) NSString *refreshToken;//@property (nonatomic, copy) NSDate *expiration;//授权token(accessToken)过期时间@property (nonatomic, copy) NSString *accessToken;@property (nonatomic, copy) NSString *unionId;/**usid 兼容U-Share 4.x/5.x 版本,与4/5版本数值相同即,对应微信平台:openId,QQ平台openId,其他平台不变*/@property (nonatomic, copy) NSString *usid;@property (nonatomic, assign) UMSocialPlatformType platformType;//对应的平台类型/*** 第三方原始数据*/@property (nonatomic, strong) id originalResponse;@end
分享结果数据结构
@interface UMSocialShareResponse : UMSocialResponse@property (nonatomic, copy) NSString *message;//分享结果提示信息+ (UMSocialShareResponse *)shareResponseWithMessage:(NSString *)message;@end
授权结果数据结构
@interface UMSocialAuthResponse : UMSocialResponse@end
获取用户信息结果数据结构
@interface UMSocialUserInfoResponse : UMSocialResponse/**第三方平台昵称*/@property (nonatomic, copy) NSString *name;/**第三方平台头像地址*/@property (nonatomic, copy) NSString *iconurl;/**通用平台性别属性QQ、微信、微博返回 "男", "女"Facebook返回 "male", "female"*/@property (nonatomic, copy) NSString *unionGender;@end
全局配置类
U-Share增加了对分享类型的限制,比如对文本的截断,对图片的裁剪,以便用户能够不用考虑平台的限制而成功的分享出去。
目前主要对新浪、微信、QQ及Facebook和Twitter平台做了分享参数处理。
配置类
其类别如下(请查看UMSocialHandler.h文件):
@interface UMSocialHandler (UMSocialLimit)-(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 withImageLimit:(NSUInteger)imageLimit;@end
每个分享类型对应相关的分享配置类:
UMSocialShareTextObject ---> UMSocialShareTextObjectConfigUMSocialShareImageObject ---> UMSocialShareImageObjectConfigUMSocialShareMusicObject --->UMSocialShareMusicObjectConfigUMSocialShareVideoObject ---> UMSocialShareVideoObjectConfigUMSocialShareWebpageObject ---> UMSocialShareVideoObjectConfigUMSocialShareEmailObject ---> UMSocialShareEmailObjectConfigUMSocialShareSmsObject ---> UMSocialShareSmsObjectConfigUMSocialShareEmotionObject ---> UMSocialShareEmotionObjectConfigUMSocialShareFileObject ---> UMSocialShareFileObjectConfig
操作设置
增加了UMSocialGlobal的全局设置字段 :
thumblr_Tag thumblr平台需要作为标示的字段 tag
isTruncateShareText 对平台的分享文本的时候,做规定的截断,默认开启
简言之,开发者可以通过调用[UMSocialGlobal shareInstance].isTruncateShareText = NO;设置不进行文本截断等额外处理,但在文本过长时会收到第三方平台SDK返回的错误。
isUsingHttpsWhenShareContent 当前网络请求是否用https
- 针对ios9系统以后强制使用https的网络请求,针对分享的网络图片都必须是https的网络图片(此为苹果官方要求)
- 该函数默认开启https请求
- 如果开启ios9的请求后,自动会过滤ios的http的请求,并返回错误
isClearCacheWhenGetUserInfo
是否清除缓存在获得用户资料的时候,此需求存在用户切换账号的时候,获得用户信息的时候用缓存的数据申请导致用户信息错误。
- 默认设置为YES,代表请求用户的时候需要请求缓存
NO,代表不清除缓存,用缓存的数据请求用户数据
isUsingWaterMark
是否分享图片的时候,加入水印功能。如果开启的话,可以通过图片的水印配置类warterMarkConfig来配置水印。
目前水印只提供图片水印功能。
设置图片水印的配置类为:
- UMSocialWarterMarkConfig 水印配置类,方便以后扩展其他的水印形式
- UMSocialImageWarterMarkConfig 图片配置类
用户可以通过以下两种方式来配置用户自定义的水印
- 如果用户用默认的参数,只想换水印图片的情况。
step1:
可以直接把路径 UMSocialSDKResources.bundle/UMSocialWaterMark/umsocial_defaultwatermark.png 下的图片换成自己的水印图片.
注意图片的名字和后缀必须一样
step2:
在分享前设置开启水印。
[UMSocialGlobal shareInstance].isUsingWaterMark = YES;
- 如果用户用自己自定义的参数和水印图片的情况。
step1:
在分享前设置开启水印。
[UMSocialGlobal shareInstance].isUsingWaterMark = YES;
step2:创建配置水印类,并赋值给warterMarkConfig
//创建图片水印配置类UMSocialImageWarterMarkConfig* imageWarterMarkConfig= [[UMSocialImageWarterMarkConfig alloc] init];imageWarterMarkConfig.warterMarkImage = [UIImage imageNamed:@"auth_icon"];imageWarterMarkConfig.warterMarkImageAlpha = 0.7;imageWarterMarkConfig.warterMarkImageScale = 0.4;imageWarterMarkConfig.paddingToHorizontalParentBorder = 20;imageWarterMarkConfig.paddingToVerticalParentBorder = 20;//创建水印配置类UMSocialWarterMarkConfig* warterMarkConfig = [[UMSocialWarterMarkConfig alloc] init];warterMarkConfig.stringAndImageWarterMarkPositon = UMSocialOnlyImageWarterMarkTopRight;[warterMarkConfig setUserDefinedImageWarterMarkConfig:imageWarterMarkConfig];//设置水印配置类[UMSocialGlobal shareInstance].warterMarkConfig = warterMarkConfig;