版本记录
版本号 | 时间 |
---|---|
V1.0 | 2018.04.05 |
前言
相信很多人用过友盟,包括友盟的第三方登录、分享以及统计。这里我们就分几个模块进行详细的说明 —— 移动统计
(U - App)
、网站统计(U - Web)
、消息推送(U - Push)
、社会化分享(U - Share)
、游戏统计(U - Game)
、互联网运营数据服务(Dplus)
- 多维度、一站式、精细化数据管理服务。感兴趣的可以看上面几篇。
1. 友盟集成(一) —— UShare模块之快速集成(一)
2. 友盟集成(二) —— UShare模块之快速集成(二)
3. 友盟集成(三) —— UShare模块之第三方登录(一)
4. 友盟集成(四) —— UShare模块之进阶说明之第三方平台SDK说明(一)
5. 友盟集成(五) —— UShare模块之进阶说明之分享到第三方平台(二)
6. 友盟集成(六) —— UShare模块之进阶说明之分享面板UI(三)
7. 友盟集成(七) —— UShare模块之进阶说明之自定义平台(四)
U-Share API说明
1. 引用头文件
#import <UMShare/UMShare.h>
2. 接口类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)platformType
appKey:(NSString *)appKey
appSecret:(NSString *)appSecret
redirectURL:(NSString *)redirectURL;
分享接口
/**
* 分享接口
*
* @param platformType @see UMSocialPlatformType
* @param shareObject
* @param currentViewController 用于弹出类似邮件分享、短信分享等这样的系统页面
* @param completion 回调
* @discuss currentViewController 只正对sms,email等平台需要传入viewcontroller的平台,其他不需要的平台可以传入nil
*/
- (void)shareToPlatform:(UMSocialPlatformType)platformType
messageObject:(UMSocialMessageObject *)messageObject
currentViewController:(id)currentViewController
completion:(UMSocialRequestCompletionHandler)completion;
授权并获取用户信息接口
/**
* 授权并获取用户信息
* @param currentViewController 用于弹出类似邮件分享、短信分享等这样的系统页面
* @param completion 回调
*/
- (void)getUserInfoWithPlatform:(UMSocialPlatformType)platformType
currentViewController:(id)currentViewController
completion:(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>)userDefinePlatformProvider
withUserDefinePlatformType:(UMSocialPlatformType)platformType;
取消授权接口
/**
* 取消授权
*
* @param platformType @see UMSocialPlatformType
* @param completion 回调
*/
- (void)cancelAuthWithPlatform:(UMSocialPlatformType)platformType
completion:(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;
3. 分享类数据结构
分享消息类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 *)title
descr:(NSString *)descr
thumImage:(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
邮件分享数据结构(参考父类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
分享微信小程序(参考父类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
4. 分享回调类
接口返回数据结构基类
@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
5. 全局配置类
第三方平台参数限制相关配置
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 ---> UMSocialShareTextObjectConfig
UMSocialShareImageObject ---> UMSocialShareImageObjectConfig
UMSocialShareMusicObject --->UMSocialShareMusicObjectConfig
UMSocialShareVideoObject ---> UMSocialShareVideoObjectConfig
UMSocialShareWebpageObject ---> UMSocialShareVideoObjectConfig
UMSocialShareEmailObject ---> UMSocialShareEmailObjectConfig
UMSocialShareSmsObject ---> UMSocialShareSmsObjectConfig
UMSocialShareEmotionObject ---> UMSocialShareEmotionObjectConfig
UMSocialShareFileObject ---> UMSocialShareFileObjectConfig
- 操作设置
增加了UMSocialGlobal
的全局设置字段 :
thumblr_Tag thumblr
平台需要作为标示的字段 tag。
isTruncateShareText
对平台的分享文本的时候,做规定的截断,默认开启。
简言之,开发者可以通过调用
[UMSocialGlobal shareInstance].isTruncateShareText = NO
; 设置不进行文本截断等额外处理,但在文本过长时会收到第三方平台SDK返回的错误。
isUsingHttpsWhenShareContent
当前网络请求是否用https
1)针对ios9系统以后强制使用https的网络请求,针对分享的网络图片都必须是https的网络图片(此为苹果官方要求)。
2)该函数默认开启https请求。
3)如果开启ios9的请求后,自动会过滤ios的http的请求,并返回错误。
isClearCacheWhenGetUserInfo
是否清除缓存在获得用户资料的时候,此需求存在用户切换账号的时候,获得用户信息的时候用缓存的数据申请导致用户信息错误。
1)默认设置为YES,代表请求用户的时候需要请求缓存.
NO,代表不清除缓存,用缓存的数据请求用户数据。
isUsingWaterMark
是否分享图片的时候,加入水印功能。如果开启的话,可以通过图片的水印配置类warterMarkConfig来配置水印。
目前水印只提供图片水印功能。 设置图片水印的配置类为:
1)UMSocialWarterMarkConfig
水印配置类,方便以后扩展其他的水印形式。
2)UMSocialImageWarterMarkConfig
图片配置类。
用户可以通过以下两种方式来配置用户自定义的水印
1)如果用户用默认的参数,只想换水印图片的情况。
可以直接把路径 UMSocialSDKResources.bundle/UMSocialWaterMark/umsocial_defaultwatermark.png
下的图片换成自己的水印图片。
注意图片的名字和后缀必须一样
step2: 在分享前设置开启水印。
[UMSocialGlobal shareInstance].isUsingWaterMark = YES;
1)如果用户用自己自定义的参数和水印图片的情况。
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;
豆瓣、人人、腾讯微博授权编辑页面配置
#import <UMShare/UMSocialPlatformConfig.h>
/**
* 云端授权/分享编辑页面配置类
* 云端授权/分享页面目前适用于腾讯微博、豆瓣、人人的授权和分享编辑页面的自定义配置
*/
@interface UMSocialCloudViewConfig : NSObject
/**
授权页面
*/
@property (nonatomic, strong) NSString *authViewTitle;
@property (nonatomic, strong) UIColor *authViewTitleColor;
@property( nonatomic, strong) UIColor *authViewNavBarColor;
// button仅需改动title或image即可,touch事件内部触发
@property (nonatomic, strong) UIButton *authViewCloseButton;
@property (nonatomic, strong) NSString *editViewTitle;
@property (nonatomic, strong) UIColor *editViewTitleColor;
@property( nonatomic, strong) UIColor *editViewNavBarColor;
// button仅需改动title或image即可,touch事件内部触发
@property (nonatomic, strong) UIButton *editViewCloseButton;
@property (nonatomic, strong) UIButton *editViewShareButton;
6. Kakao
授权并获取用户信息(获取uid、access token及用户名等)
// 在需要进行获取用户信息的UIViewController中加入如下代码
#import <UMShare/UMShare.h>
- (void)getAuthWithUserInfoFromKakao
{
[[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_KakaoTalk currentViewController:nil completion:^(id result, NSError *error) {
if (error) {
} else {
UMSocialUserInfoResponse *resp = result;
// 授权信息
NSLog(@"Kakao uid: %@", resp.uid);
NSLog(@"Kakao accessToken: %@", resp.accessToken);
NSLog(@"Kakao refreshToken: %@", resp.refreshToken);
// 用户信息
NSLog(@"Kakao name: %@", resp.name);
NSLog(@"Kakao iconurl: %@", resp.iconurl);
// 第三方平台SDK源数据
NSLog(@"Kakao originalResponse: %@", resp.originalResponse);
}
}];
}
后记
本篇主要介绍了UShare模块之进阶说明之U-Share API说明,感兴趣的给个赞或者关注~~~