版本記錄
| 版本號 | 時間 |
|---|---|
| V1.0 | 2018.04.05 |
前言
相信很多人用過友盟,包括友盟的第三方登錄、分享以及統(tǒng)計。這里我們就分幾個模塊進(jìn)行詳細(xì)的說明 —— 移動統(tǒng)計
(U - App)、網(wǎng)站統(tǒng)計(U - Web)、消息推送(U - Push)、社會化分享(U - Share)、游戲統(tǒng)計(U - Game)、互聯(lián)網(wǎng)運營數(shù)據(jù)服務(wù)(Dplus)- 多維度、一站式、精細(xì)化數(shù)據(jù)管理服務(wù)。感興趣的可以看上面幾篇。
1. 友盟集成(一) —— UShare模塊之快速集成(一)
2. 友盟集成(二) —— UShare模塊之快速集成(二)
3. 友盟集成(三) —— UShare模塊之第三方登錄(一)
4. 友盟集成(四) —— UShare模塊之進(jìn)階說明之第三方平臺SDK說明(一)
5. 友盟集成(五) —— UShare模塊之進(jìn)階說明之分享到第三方平臺(二)
6. 友盟集成(六) —— UShare模塊之進(jìn)階說明之分享面板UI(三)
7. 友盟集成(七) —— UShare模塊之進(jìn)階說明之自定義平臺(四)
U-Share API說明
1. 引用頭文件
#import <UMShare/UMShare.h>
2. 接口類UMSocialManager
獲取類實例
[UMSocialManager defaultManager]
打開日志
/**
* 打開日志
*
* @param isOpen YES代表打開,No代表關(guān)閉
*/
- (void)openLog:(BOOL)isOpen;
設(shè)置平臺的appkey
/**
* 設(shè)置平臺的appkey
*
* @param platformType 平臺類型 @see UMSocialPlatformType
* @param appKey appKey
* @param appSecret appSecret (有些平臺沒有,可以不傳)
* @param redirectURL redirectURL (回調(diào)地址)
*/
- (BOOL)setPlaform:(UMSocialPlatformType)platformType
appKey:(NSString *)appKey
appSecret:(NSString *)appSecret
redirectURL:(NSString *)redirectURL;
分享接口
/**
* 分享接口
*
* @param platformType @see UMSocialPlatformType
* @param shareObject
* @param currentViewController 用于彈出類似郵件分享、短信分享等這樣的系統(tǒng)頁面
* @param completion 回調(diào)
* @discuss currentViewController 只正對sms,email等平臺需要傳入viewcontroller的平臺,其他不需要的平臺可以傳入nil
*/
- (void)shareToPlatform:(UMSocialPlatformType)platformType
messageObject:(UMSocialMessageObject *)messageObject
currentViewController:(id)currentViewController
completion:(UMSocialRequestCompletionHandler)completion;
授權(quán)并獲取用戶信息接口
/**
* 授權(quán)并獲取用戶信息
* @param currentViewController 用于彈出類似郵件分享、短信分享等這樣的系統(tǒng)頁面
* @param completion 回調(diào)
*/
- (void)getUserInfoWithPlatform:(UMSocialPlatformType)platformType
currentViewController:(id)currentViewController
completion:(UMSocialRequestCompletionHandler)completion;
/**
* 獲得從sso或者web端回調(diào)到本app的回調(diào)
*
* @param url 第三方sdk的打開本app的回調(diào)的url
*
* @return 是否處理 YES代表處理成功,NO代表不處理
*/
-(BOOL)handleOpenURL:(NSURL *)url;
/**
* 動態(tài)的增加用戶自定義的PlatformProvider
*
* @param userDefinePlatformProvider 用戶自定義的userDefinePlatformProvider必須實現(xiàn)UMSocialPlatformProvider
* @param platformType @see platformType platformType的有效范圍在 (UMSocialPlatformType_UserDefine_Begin,UMSocialPlatformType_UserDefine_End)之間
*
* @return YES代表返回成功,NO代表失敗
* @disuss 在調(diào)用此函數(shù)前,必須先設(shè)置對應(yīng)的平臺的配置信息 @see - (BOOL)setPlaform:(UMSocialPlatformType)platformType appKey:(NSString *)appKey appSecret:(NSString *)appSecret redirectURL:(NSString *)redirectURL;
*/
-(BOOL)addAddUserDefinePlatformProvider:(id<UMSocialPlatformProvider>)userDefinePlatformProvider
withUserDefinePlatformType:(UMSocialPlatformType)platformType;
取消授權(quán)接口
/**
* 取消授權(quán)
*
* @param platformType @see UMSocialPlatformType
* @param completion 回調(diào)
*/
- (void)cancelAuthWithPlatform:(UMSocialPlatformType)platformType
completion:(UMSocialRequestCompletionHandler)completion;
判斷平臺是否安裝
/**
* 平臺是否安裝
*
* @param platformType 平臺類型 @see UMSocialPlatformType
*
* @return YES 代表安裝,NO 代表未安裝
* @note 在判斷QQ空間的App的時候,QQApi判斷會出問題
*/
-(BOOL) isInstall:(UMSocialPlatformType)platformType;
動態(tài)的刪除PlatformProvider,不管是預(yù)定義還是用戶自定義的
/**
* 動態(tài)的刪除不想顯示的平臺,不管是預(yù)定義還是用戶自定義的
*
* @param platformTypeArray 平臺類型數(shù)組
*/
-(void) removePlatformProviderWithPlatformTypes:(NSArray *)platformTypeArray;
/**
* 動態(tài)的刪除PlatformProvider,不管是預(yù)定義還是用戶自定義的
*
* @param platformType @see UMSocialPlatformType
*/
-(void) removePlatformProviderWithPlatformType:(UMSocialPlatformType)platformType;
/**
* 獲得對應(yīng)的平臺類型platformType的PlatformProvider
*
* @param platformType @see platformType
*
* @return 返回繼承UMSocialPlatformProvider的handle
*/
-(id<UMSocialPlatformProvider>)platformProviderWithPlatformType:(UMSocialPlatformType)platformType;
3. 分享類數(shù)據(jù)結(jié)構(gòu)
分享消息類UMSocialMessageObject
@interface UMSocialMessageObject : NSObject
/**
* @param text 文本內(nèi)容
* @note 非純文本分享文本
*/
@property (nonatomic, copy) NSString *text;
/**
* 分享的所媒體內(nèi)容對象
*/
@property (nonatomic, strong) UMShareObject *shareObject;
/**
* 其他相關(guān)參數(shù),見相應(yīng)平臺說明
*/
@property (nonatomic, strong) NSDictionary *moreInfo;
+ (UMSocialMessageObject *)messageObject;
+ (UMSocialMessageObject *)messageObjectWithMediaObject:(id)mediaObject;
@end
基本分享類型UMShareObject
UMShareObject是所有多媒體內(nèi)容的基類,多媒體內(nèi)容包括圖片、音樂、視頻、網(wǎng)頁等。純文本分享不屬于多媒體,只需要設(shè)置UMSocialMessageObject的text屬性就可以。
@interface UMShareObject : NSObject
/**
* 標(biāo)題
* @note 標(biāo)題的長度依各個平臺的要求而定
*/
@property (nonatomic, copy) NSString *title;
/**
* 描述
* @note 描述內(nèi)容的長度依各個平臺的要求而定
*/
@property (nonatomic, copy) NSString *descr;
/**
* 縮略圖 UIImage或者NSData類型或者NSString類型(圖片url)
*/
@property (nonatomic, strong) id thumbImage;
/**
* @param title 標(biāo)題
* @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
/** 圖片內(nèi)容 (可以是UIImage類對象,也可以是NSdata類對象,也可以是圖片鏈接imageUrl NSString類對象)
* @note 圖片大小根據(jù)各個平臺限制而定
*/
@property (nonatomic, retain) id shareImage;
@end
分享音樂數(shù)據(jù)結(jié)構(gòu)(參考父類UMShareObject)
@interface UMShareMusicObject : UMShareObject
/** 音樂網(wǎng)頁的url地址
* @note 長度不能超過10K
*/
@property (nonatomic, retain) NSString *musicUrl;
/** 音樂lowband網(wǎng)頁的url地址
* @note 長度不能超過10K
*/
@property (nonatomic, retain) NSString *musicLowBandUrl;
/** 音樂數(shù)據(jù)url地址
* @note 長度不能超過10K
*/
@property (nonatomic, retain) NSString *musicDataUrl;
/**音樂lowband數(shù)據(jù)url地址
* @note 長度不能超過10K
*/
@property (nonatomic, retain) NSString *musicLowBandDataUrl;
@end
分享視頻數(shù)據(jù)結(jié)構(gòu)(參考父類UMShareObject)
@interface UMShareVideoObject : UMShareObject
/**
視頻網(wǎng)頁的url
@warning 不能為空且長度不能超過255
*/
@property (nonatomic, strong) NSString *videoUrl;
/**
視頻lowband網(wǎng)頁的url
@warning 長度不能超過255
*/
@property (nonatomic, strong) NSString *videoLowBandUrl;
/**
視頻數(shù)據(jù)流url
@warning 長度不能超過255
*/
@property (nonatomic, strong) NSString *videoStreamUrl;
/**
視頻lowband數(shù)據(jù)流url
@warning 長度不能超過255
*/
@property (nonatomic, strong) NSString *videoLowBandStreamUrl;
@end
分享網(wǎng)頁數(shù)據(jù)結(jié)構(gòu)(參考父類UMShareObject)
@interface UMShareWebpageObject : UMShareObject
/** 網(wǎng)頁的url地址
* @note 不能為空且長度不能超過10K
*/
@property (nonatomic, retain) NSString *webpageUrl;
@end
郵件分享數(shù)據(jù)結(jié)構(gòu)(參考父類UMShareObject)
/*! @brief 分享消息中的郵件分享對象
*
* @see UMShareObject
*/
@interface UMShareEmailObject : UMShareObject
/**
* 接收人
*/
@property (nonatomic, strong) NSArray *toRecipients;
/**
* 抄送人
*/
@property (nonatomic, strong) NSArray *ccRecipients;
/**
* 密送人
*/
@property (nonatomic, strong) NSArray *bccRecipients;
/**
* 文本內(nèi)容
*/
@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
短信分享數(shù)據(jù)結(jié)構(gòu)(參考父類UMShareObject)
/*! @brief 分享消息中的短信分享對象
*
* @see UMSocialMessageObject
*/
@interface UMShareSmsObject : UMShareObject
/**
* 接收人
*/
@property (nonatomic, strong) NSArray *recipients;
/**
* 文本內(nèi)容
*/
@property (nonatomic, copy) NSString *smsContent;
/**
* 圖片
*/
@property (nonatomic, strong) id smsImage;
/**
* 文件數(shù)據(jù)(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; //低版本網(wǎng)頁鏈接
@property (nonatomic, strong) NSString *userName; //小程序username
@property (nonatomic, strong) NSString *path; //小程序頁面的路徑
@end
4. 分享回調(diào)類
接口返回數(shù)據(jù)結(jié)構(gòu)基類
@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;//授權(quán)token(accessToken)過期時間
@property (nonatomic, copy) NSString *accessToken;
@property (nonatomic, copy) NSString *unionId;
/**
usid 兼容U-Share 4.x/5.x 版本,與4/5版本數(shù)值相同
即,對應(yīng)微信平臺:openId,QQ平臺openId,其他平臺不變
*/
@property (nonatomic, copy) NSString *usid;
@property (nonatomic, assign) UMSocialPlatformType platformType;//對應(yīng)的平臺類型
/**
* 第三方原始數(shù)據(jù)
*/
@property (nonatomic, strong) id originalResponse;
@end
分享結(jié)果數(shù)據(jù)結(jié)構(gòu)
@interface UMSocialShareResponse : UMSocialResponse
@property (nonatomic, copy) NSString *message;//分享結(jié)果提示信息
+ (UMSocialShareResponse *)shareResponseWithMessage:(NSString *)message;
@end
授權(quán)結(jié)果數(shù)據(jù)結(jié)構(gòu)
@interface UMSocialAuthResponse : UMSocialResponse
@end
獲取用戶信息結(jié)果數(shù)據(jù)結(jié)構(gòu)
@interface UMSocialUserInfoResponse : UMSocialResponse
/**
第三方平臺昵稱
*/
@property (nonatomic, copy) NSString *name;
/**
第三方平臺頭像地址
*/
@property (nonatomic, copy) NSString *iconurl;
/**
通用平臺性別屬性
QQ、微信、微博返回 "男", "女"
Facebook返回 "male", "female"
*/
@property (nonatomic, copy) NSString *unionGender;
@end
5. 全局配置類
第三方平臺參數(shù)限制相關(guān)配置
U-Share增加了對分享類型的限制,比如對文本的截斷,對圖片的裁剪,以便用戶能夠不用考慮平臺的限制而成功的分享出去。 目前主要對新浪、微信、QQ及Facebook和Twitter平臺做了分享參數(shù)處理。
- 配置類
其類別如下(請查看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
每個分享類型對應(yīng)相關(guān)的分享配置類:
UMSocialShareTextObject ---> UMSocialShareTextObjectConfig
UMSocialShareImageObject ---> UMSocialShareImageObjectConfig
UMSocialShareMusicObject --->UMSocialShareMusicObjectConfig
UMSocialShareVideoObject ---> UMSocialShareVideoObjectConfig
UMSocialShareWebpageObject ---> UMSocialShareVideoObjectConfig
UMSocialShareEmailObject ---> UMSocialShareEmailObjectConfig
UMSocialShareSmsObject ---> UMSocialShareSmsObjectConfig
UMSocialShareEmotionObject ---> UMSocialShareEmotionObjectConfig
UMSocialShareFileObject ---> UMSocialShareFileObjectConfig
- 操作設(shè)置
增加了UMSocialGlobal的全局設(shè)置字段 :
thumblr_Tag thumblr平臺需要作為標(biāo)示的字段 tag。
isTruncateShareText對平臺的分享文本的時候,做規(guī)定的截斷,默認(rèn)開啟。
簡言之,開發(fā)者可以通過調(diào)用
[UMSocialGlobal shareInstance].isTruncateShareText = NO; 設(shè)置不進(jìn)行文本截斷等額外處理,但在文本過長時會收到第三方平臺SDK返回的錯誤。
isUsingHttpsWhenShareContent當(dāng)前網(wǎng)絡(luò)請求是否用https
1)針對ios9系統(tǒng)以后強制使用https的網(wǎng)絡(luò)請求,針對分享的網(wǎng)絡(luò)圖片都必須是https的網(wǎng)絡(luò)圖片(此為蘋果官方要求)。
2)該函數(shù)默認(rèn)開啟https請求。
3)如果開啟ios9的請求后,自動會過濾ios的http的請求,并返回錯誤。
isClearCacheWhenGetUserInfo 是否清除緩存在獲得用戶資料的時候,此需求存在用戶切換賬號的時候,獲得用戶信息的時候用緩存的數(shù)據(jù)申請導(dǎo)致用戶信息錯誤。
1)默認(rèn)設(shè)置為YES,代表請求用戶的時候需要請求緩存.
NO,代表不清除緩存,用緩存的數(shù)據(jù)請求用戶數(shù)據(jù)。
isUsingWaterMark 是否分享圖片的時候,加入水印功能。如果開啟的話,可以通過圖片的水印配置類warterMarkConfig來配置水印。
目前水印只提供圖片水印功能。 設(shè)置圖片水印的配置類為:
1)UMSocialWarterMarkConfig 水印配置類,方便以后擴展其他的水印形式。
2)UMSocialImageWarterMarkConfig 圖片配置類。
用戶可以通過以下兩種方式來配置用戶自定義的水印
1)如果用戶用默認(rèn)的參數(shù),只想換水印圖片的情況。
可以直接把路徑 UMSocialSDKResources.bundle/UMSocialWaterMark/umsocial_defaultwatermark.png 下的圖片換成自己的水印圖片。
注意圖片的名字和后綴必須一樣
step2: 在分享前設(shè)置開啟水印。
[UMSocialGlobal shareInstance].isUsingWaterMark = YES;
1)如果用戶用自己自定義的參數(shù)和水印圖片的情況。
step1: 在分享前設(shè)置開啟水印。
[UMSocialGlobal shareInstance].isUsingWaterMark = YES;
step2:創(chuàng)建配置水印類,并賦值給warterMarkConfig。
//創(chuàng)建圖片水印配置類
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;
//創(chuàng)建水印配置類
UMSocialWarterMarkConfig* warterMarkConfig = [[UMSocialWarterMarkConfig alloc] init];
warterMarkConfig.stringAndImageWarterMarkPositon = UMSocialOnlyImageWarterMarkTopRight;
[warterMarkConfig setUserDefinedImageWarterMarkConfig:imageWarterMarkConfig];
//設(shè)置水印配置類
[UMSocialGlobal shareInstance].warterMarkConfig = warterMarkConfig;
豆瓣、人人、騰訊微博授權(quán)編輯頁面配置
#import <UMShare/UMSocialPlatformConfig.h>
/**
* 云端授權(quán)/分享編輯頁面配置類
* 云端授權(quán)/分享頁面目前適用于騰訊微博、豆瓣、人人的授權(quán)和分享編輯頁面的自定義配置
*/
@interface UMSocialCloudViewConfig : NSObject
/**
授權(quán)頁面
*/
@property (nonatomic, strong) NSString *authViewTitle;
@property (nonatomic, strong) UIColor *authViewTitleColor;
@property( nonatomic, strong) UIColor *authViewNavBarColor;
// button僅需改動title或image即可,touch事件內(nèi)部觸發(fā)
@property (nonatomic, strong) UIButton *authViewCloseButton;
@property (nonatomic, strong) NSString *editViewTitle;
@property (nonatomic, strong) UIColor *editViewTitleColor;
@property( nonatomic, strong) UIColor *editViewNavBarColor;
// button僅需改動title或image即可,touch事件內(nèi)部觸發(fā)
@property (nonatomic, strong) UIButton *editViewCloseButton;
@property (nonatomic, strong) UIButton *editViewShareButton;
6. Kakao
授權(quán)并獲取用戶信息(獲取uid、access token及用戶名等)
// 在需要進(jìn)行獲取用戶信息的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;
// 授權(quán)信息
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源數(shù)據(jù)
NSLog(@"Kakao originalResponse: %@", resp.originalResponse);
}
}];
}
后記
本篇主要介紹了UShare模塊之進(jìn)階說明之U-Share API說明,感興趣的給個贊或者關(guān)注~~~
