前言:我把umeng分享集成分了三部分骡和,1.導(dǎo)入umeng框架 2.配置各平臺(tái)URL Scheme 3.代碼實(shí)現(xiàn)
一历极、導(dǎo)入umeng框架
1.1 通過(guò)Cocoapods集成(以QQ策州、微博凹蜂、微信為例)
target 'UMSocialDemo' do
# U-Share SDK UI模塊(分享面板遥昧,建議添加)
pod ‘UMengUShare/UI’
# 集成新浪微博
pod ‘UMengUShare/Social/Sina'
# 集成微信
pod ‘UMengUShare/Social/WeChat'
# 集成QQ
pod ‘UMengUShare/Social/QQ'
end
新增加Cocoapods集成命令U-Share時(shí)直接使用pod update更新亥鸠,不可加入--no-repo-update參數(shù),需直接更新線上Cocoapods庫(kù)传趾。
二迎膜、U-Share SDK平臺(tái)配置
**平臺(tái)配置的時(shí)候需要第三方appKey和appSecret等信息,可參考第三方賬號(hào)申請(qǐng)及綁定申請(qǐng)所需的平臺(tái)賬號(hào)
**URL Scheme是通過(guò)系統(tǒng)找到并跳轉(zhuǎn)對(duì)應(yīng)app的一類設(shè)置浆兰,通過(guò)向項(xiàng)目中的info.plist文件中加入U(xiǎn)RL types可使用第三方平臺(tái)所注冊(cè)的appkey信息向系統(tǒng)注冊(cè)你的app磕仅,當(dāng)跳轉(zhuǎn)到第三方應(yīng)用授權(quán)或分享后,可直接跳轉(zhuǎn)回你的app簸呈。
1宽涌、設(shè)置白名單
2.設(shè)置URL Scheme
三、代碼實(shí)現(xiàn)
3.1.1 初始化U-Share及第三方平臺(tái)
**app啟動(dòng)后進(jìn)行U-Share和第三方平臺(tái)的初始化工作 以下代碼將所有平臺(tái)初始化示例放出蝶棋,開發(fā)者根據(jù)平臺(tái)需要選取相應(yīng)代碼卸亮,并替換為所屬注冊(cè)的appKey和appSecret。在AppDelegate.m中設(shè)置如下代碼
#import <UMSocialCore/UMSocialCore.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//打開調(diào)試日志
[[UMSocialManager defaultManager] openLog:YES];
//設(shè)置友盟appkey
[[UMSocialManager defaultManager] setUmSocialAppkey:@"57b432afe0f55a9832001a0a"];
// 獲取友盟social版本號(hào)
//NSLog(@"UMeng social version: %@", [UMSocialGlobal umSocialSDKVersion]);
//設(shè)置微信的appKey和appSecret
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:@"wxdc1e388c3822c80b" appSecret:@"3baf1193c85774b3fd9d18447d76cab0" redirectURL:@"http://mobile.umeng.com/social"];
//設(shè)置分享到QQ互聯(lián)的appKey和appSecret
// U-Share SDK為了兼容大部分平臺(tái)命名玩裙,統(tǒng)一用appKey和appSecret進(jìn)行參數(shù)設(shè)置兼贸,而QQ平臺(tái)僅需將appID作為U-Share的appKey參數(shù)傳進(jìn)即可段直。
//***把QQ的appKey設(shè)置成qq平臺(tái)拿到的appid
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:@"100424468" appSecret:nil redirectURL:@"http://mobile.umeng.com/social"];
//設(shè)置新浪的appKey和appSecret
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:@"3921700954" appSecret:@"04b48b094faeb16683c32669824ebdad" redirectURL:@"http://sns.whalecloud.com/sina2/callback"];
// 如果不想顯示平臺(tái)下的某些類型,可用以下接口設(shè)置
// [[UMSocialManager defaultManager] removePlatformProviderWithPlatformTypes:@[@(UMSocialPlatformType_WechatFavorite),@(UMSocialPlatformType_YixinTimeLine),@(UMSocialPlatformType_LaiWangTimeLine),@(UMSocialPlatformType_Qzone)]];
return YES;
}
3.1.2 設(shè)置系統(tǒng)回調(diào)
// 支持所有iOS系統(tǒng)
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];
if (!result) {
// 其他如支付等SDK的回調(diào)
}
return result;
}
3.1.3點(diǎn)擊分享執(zhí)行的代碼
- (void)share
{
//此方法是為了顯示面板上平臺(tái)順序
[UMSocialUIManager setPreDefinePlatforms:@[@(UMSocialPlatformType_Sina),@(UMSocialPlatformType_QQ),@(UMSocialPlatformType_Qzone),@(UMSocialPlatformType_WechatSession),@(UMSocialPlatformType_WechatTimeLine)]];
__weak typeof(self) weakSelf = self;
//此方法是點(diǎn)擊某個(gè)平臺(tái)的回調(diào)
[UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {
//根據(jù)具體情況調(diào)用不同的方法
[weakSelf shareWebPageToPlatformType:platformType];
}];
}
//分享文本
- (void)shareTextToPlatformType:(UMSocialPlatformType)platformType
{
//創(chuàng)建分享消息對(duì)象
UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
//設(shè)置文本
messageObject.text = @"社會(huì)化組件UShare將各大社交平臺(tái)接入您的應(yīng)用溶诞,快速武裝App鸯檬。";
//調(diào)用分享接口
[[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
if (error) {
NSLog(@"************Share fail with error %@*********",error);
}else{
NSLog(@"response data is %@",data);
}
[self alertWithError:error];
}];
}
//網(wǎng)頁(yè)分享
- (void)shareWebPageToPlatformType:(UMSocialPlatformType)platformType
{
//創(chuàng)建分享消息對(duì)象
UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
UIImage *shareImage = [UIImage imageNamed:@"Icon-60"];
UILabel *label = (UILabel *)self.navigationItem.titleView;
UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:label.text descr:self.request.URL.absoluteString thumImage:shareImage];
//設(shè)置網(wǎng)頁(yè)地址
shareObject.webpageUrl = self.request.URL.absoluteString;
//分享消息對(duì)象設(shè)置分享內(nèi)容對(duì)象
messageObject.shareObject = shareObject;
//調(diào)用分享接口
[[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
if (error) {
UMSocialLogInfo(@"************Share fail with error %@*********",error);
}else{
if ([data isKindOfClass:[UMSocialShareResponse class]]) {
UMSocialShareResponse *resp = data;
//分享結(jié)果消息
UMSocialLogInfo(@"response message is %@",resp.message);
//第三方原始返回的數(shù)據(jù)
UMSocialLogInfo(@"response originalResponse data is %@",resp.originalResponse);
}else{
UMSocialLogInfo(@"response data is %@",data);
}
}
[self alertWithError:error];
}];
}
//分享結(jié)果
- (void)alertWithError:(NSError *)error
{
NSString *result = nil;
if (!error) {
result = [NSString stringWithFormat:@"分享成功"];
}
else{
if (error) {
switch (error.code) {
case 2000:
case 2001:
case 2003:
case 2007:
result = @"分享失敗";
break;
case 2002:
result = @"授權(quán)失敗";
break;
case 2004:
result = @"請(qǐng)求用戶信息失敗";
break;
case 2005:
result = @"分享內(nèi)容為空";
break;
case 2006:
result = @"分享內(nèi)容不支持";
break;
case 2008:
result = @"應(yīng)用未安裝";
break;
case 2009:
result = @"取消操作";
break;
case 2010:
result = @"網(wǎng)絡(luò)異常";
break;
case 2011:
result = @"第三方錯(cuò)誤";
break;
default:
break;
}
}
else{
result = [NSString stringWithFormat:@"分享失敗"];
}
}
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"分享"
message:result
delegate:nil
cancelButtonTitle:NSLocalizedString(@"確定", @"確定")
otherButtonTitles:nil];
[alert show];
}