今天寫一篇友盟的筆記,介紹一下簡單的集成與使用。ios
集成與配置,白名單這些就不說了安全
# 集成微信(完整版14.4M)
pod 'UMCShare/Social/WeChat'
# 集成QQ/QZone/TIM(完整版7.6M)
pod 'UMCShare/Social/QQ'
# U-Share SDK UI模塊(分享面板,建議添加)
pod 'UMCShare/UI'
複製代碼
AppDelegate配置
bash
導入頭文件#import <UShareUI/UShareUI.h>微信
// ***************** 友盟註冊 ***************** //
/* 打開日誌 */
[[UMSocialManager defaultManager] openLog:YES];
// 打開圖片水印
[UMSocialGlobal shareInstance].isUsingWaterMark = YES;
[UMSocialGlobal shareInstance].isClearCacheWhenGetUserInfo = NO;
[[UMSocialGlobal shareInstance] setIsUsingHttpsWhenShareContent:NO];
/* 設置友盟appkey */
[[UMSocialManager defaultManager] setUmSocialAppkey:@"5a530968b27b0a160e000240"];
[self configUSharePlatforms];
[self confitUShareSettings];
// ***************** 友盟註冊 ***************** //
複製代碼
#pragma mark - 友盟- (void)confitUShareSettings
{
/*
* 打開圖片水印
*/
[UMSocialGlobal shareInstance].isUsingWaterMark = YES;
/*
* 關閉強制驗證https,可容許http圖片分享,但須要在info.plist設置安全域名
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
*/
// [UMSocialGlobal shareInstance].isUsingHttpsWhenShareContent = NO;
}
- (void)configUSharePlatforms
{
/*
設置微信的appKey和appSecret
[微信平臺從U-Share 4/5升級說明]
*/
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:@"wx854582abda4b81b0" appSecret:@"0919dcccd534408af7e230fd5db174c0" redirectURL:nil];
/*
* 移除相應平臺的分享,如微信收藏
*/
[[UMSocialManager defaultManager] removePlatformProviderWithPlatformTypes:@[@(UMSocialPlatformType_WechatFavorite)]];
/* 設置分享到QQ互聯的appID
* U-Share SDK爲了兼容大部分平臺命名,統一用appKey和appSecret進行參數設置,而QQ平臺僅需將appID做爲U-Share的appKey參數傳進便可。
100424468.no permission of union id
[QQ/QZone平臺集成說明]http://dev.umeng.com/social/ios/%E8%BF%9B%E9%98%B6%E6%96%87%E6%A1%A3#1_3
*/
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:@"1106653164" appSecret:nil redirectURL:nil];
/* 支付寶的appKey */
[[UMSocialManager defaultManager] setPlaform: UMSocialPlatformType_AlipaySession appKey:@"2015111700822536" appSecret:nil redirectURL:@"http://mobile.umeng.com/social"];
}
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
[[SDImageCache sharedImageCache] clearMemory];
}
複製代碼
微信登陸app
- (void)getAuthWithUserInfoFromWechat
{
[[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_WechatSession currentViewController:nil completion:^(id result, NSError *error) {
if (error) {
ZJLog(@"微信error=%@",error);
[MBProgressHUD showError:@"登陸失敗"];
} else {
UMSocialUserInfoResponse *resp = result;
// 受權信息
ZJLog(@"Wechat uid: %@", resp.uid);
ZJLog(@"Wechat openid: %@", resp.openid);
ZJLog(@"Wechat unionid: %@", resp.unionId);
ZJLog(@"Wechat accessToken: %@", resp.accessToken);
ZJLog(@"Wechat refreshToken: %@", resp.refreshToken);
ZJLog(@"Wechat expiration: %@", resp.expiration);
// 用戶信息
ZJLog(@"Wechat name: %@", resp.name);
ZJLog(@"Wechat iconurl: %@", resp.iconurl);
ZJLog(@"Wechat gender: %@", resp.unionGender);
// 第三方平臺SDK源數據
ZJLog(@"Wechat originalResponse: %@", resp.originalResponse);
[self wechatopenid];
}
}];
}
複製代碼
QQ登陸ide
- (void)getAuthWithUserInfoFromQQ
{
[[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_QQ currentViewController:nil completion:^(id result, NSError *error) {
if (error) {
ZJLog(@"微信error=%@",error);
[MBProgressHUD showError:@"登陸失敗"];
} else {
UMSocialUserInfoResponse *resp = result;
// 受權信息
ZJLog(@"QQ uid: %@", resp.uid);
ZJLog(@"QQ openid: %@", resp.openid);
ZJLog(@"QQ unionid: %@", resp.unionId);
ZJLog(@"QQ accessToken: %@", resp.accessToken);
ZJLog(@"QQ expiration: %@", resp.expiration);
// 用戶信息
ZJLog(@"QQ name: %@", resp.name);
ZJLog(@"QQ iconurl: %@", resp.iconurl);
ZJLog(@"QQ gender: %@", resp.unionGender);
// 第三方平臺SDK源數據
ZJLog(@"QQ originalResponse: %@", resp.originalResponse);
[self QQopenid];
}
}];
}
複製代碼
主要是獲取用戶的基本信息以及openid和token,而後根據本身的業務邏輯與後臺對接。ui
分享url
[UMSocialUIManager setPreDefinePlatforms:@[@(UMSocialPlatformType_Sina),@(UMSocialPlatformType_QQ),@(UMSocialPlatformType_WechatSession)]];
[UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {
// 根據獲取的platformType肯定所選平臺進行下一步操做
[weakSelf shareTextToPlatformType:platformType];
}];
複製代碼
//分享文本
- (void)shareTextToPlatformType:(UMSocialPlatformType)platformType
{
//建立分享消息對象
UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
//建立圖片內容對象
UMShareImageObject *shareObject = [[UMShareImageObject alloc] init];
shareObject.title = @"";
//若是有縮略圖,則設置縮略圖
shareObject.thumbImage = [UIImage imageNamed:@"icon"];
[shareObject setShareImage:@"http://192.168.0.60:8040/img/666.jpg"];
//設置文本
messageObject.text = @"這是分享";
messageObject.title = @"title";
//分享消息對象設置分享內容對象
messageObject.shareObject = shareObject;
//調用分享接口
[[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:nil completion:^(id data, NSError *error) {
ZJLog(@"");
if (error) {
ZJLog(@"************Share fail with error %@*********",error);
[self alertWithError:error];
}else{
if ([data isKindOfClass:[UMSocialShareResponse class]]) {
UMSocialShareResponse *resp = data;
//分享結果消息
ZJLog(@"response message is %@",resp.message);
//第三方原始返回的數據
ZJLog(@"response originalResponse data is %@",resp.originalResponse);
[MBProgressHUD showSuccess:@"分享成功"];
}else{
ZJLog(@"response data is %@",data);
}
}
}];
}
複製代碼
分享面板空白?spa
檢查白名單是否出錯?Other Link Flag 加了-ObjC?URL Schemes是否設置?日誌
我的建議仍是自定義分享面板好看一些,自帶的不是很好看