IOS 开发 友盟分享-社会化组件SDK v6.0.2-集成指南

IOS 开发 友盟-社会化组件SDK v6.0.2-集成指南

新版的友盟分享SDK和之前的区别还是挺大的,用习惯了老版本的分享,再次集成新版的分享中间不到了一些坑坑,在这里分享给大家

集成友盟社会化组件流程–第三方账号的申请这里就不在描述了,就是appkey和appsecret的获取
这里写图片描述

1.SDK v6.0.2下载地址
下载SDK点击
要注意,新浪微博的组件足足有25M大小,如果公司没有这个需求的话,还是不要选了
进行定制化选择

一定要勾选Demo测试的工程,下载官方demo,新版和老版的改动还是挺大的,有些类都变了

2.官方的集成指南
尽量不要用Cocoapods去集成,手动集成,其中的坑大家懂得

3.适配iOS9/10官方指南

3.1 HTTPS传输安全

//ATS-在info.plist中加入安全域名白名单(右键info.plist用source code打开)<key>NSAppTransportSecuritykey>
<dict><key>NSAllowsArbitraryLoadskey><true/><key>NSExceptionDomainskey><dict><key>log.umsns.comkey><dict><key>NSIncludesSubdomainskey><true/><key>NSTemporaryExceptionAllowsInsecureHTTPLoadskey><true/><key>NSTemporaryExceptionMinimumTLSVersionkey><string>TLSv1.1string>dict><key>sns.whalecloud.comkey><dict><key>NSIncludesSubdomainskey><true/><key>NSTemporaryExceptionAllowsInsecureHTTPLoadskey><true/><key>NSTemporaryExceptionMinimumTLSVersionkey><string>TLSv1.1string>dict><key>qq.comkey><dict><key>NSIncludesSubdomainskey><true/><key>NSThirdPartyExceptionAllowsInsecureHTTPLoadskey><true/><key>NSThirdPartyExceptionRequiresForwardSecrecykey><false/>dict><key>sina.com.cnkey><dict><key>NSIncludesSubdomainskey><true/><key>NSThirdPartyExceptionAllowsInsecureHTTPLoadskey><true/><key>NSThirdPartyExceptionRequiresForwardSecrecykey><false/>dict><key>sinaimg.cnkey><dict><key>NSIncludesSubdomainskey><true/><key>NSThirdPartyExceptionAllowsInsecureHTTPLoadskey><true/><key>NSThirdPartyExceptionRequiresForwardSecrecykey><false/>dict><key>sinajs.cnkey><dict><key>NSIncludesSubdomainskey><true/><key>NSThirdPartyExceptionAllowsInsecureHTTPLoadskey><true/><key>NSThirdPartyExceptionRequiresForwardSecrecykey><false/>dict><key>sina.cnkey><dict><key>NSExceptionMinimumTLSVersionkey><string>TLSv1.0string><key>NSIncludesSubdomainskey><true/><key>NSThirdPartyExceptionRequiresForwardSecrecykey><false/>dict><key>weibo.cnkey><dict><key>NSExceptionMinimumTLSVersionkey><string>TLSv1.0string><key>NSIncludesSubdomainskey><true/><key>NSThirdPartyExceptionRequiresForwardSecrecykey><false/>dict><key>weibo.comkey><dict><key>NSExceptionMinimumTLSVersionkey><string>TLSv1.0string><key>NSIncludesSubdomainskey><true/><key>NSThirdPartyExceptionAllowsInsecureHTTPLoadskey><true/><key>NSThirdPartyExceptionRequiresForwardSecrecykey><false/>dict><key>renren.comkey><dict><key>NSIncludesSubdomainskey><true/><key>NSThirdPartyExceptionAllowsInsecureHTTPLoadskey><true/><key>NSThirdPartyExceptionRequiresForwardSecrecykey><false/>dict><key>facebook.comkey><dict><key>NSExceptionRequiresForwardSecrecykey><false/><key>NSIncludesSubdomainskey><true/>dict><key>fbcdn.netkey><dict><key>NSExceptionRequiresForwardSecrecykey><false/><key>NSIncludesSubdomainskey><true/>dict><key>akamaihd.netkey><dict><key>NSIncludesSubdomainskey><true/><key>NSExceptionRequiresForwardSecrecykey><false/>dict><key>twitter.comkey><dict><key>NSExceptionRequiresForwardSecrecykey><false/><key>NSIncludesSubdomainskey><true/>dict><key>linkedin.comkey><dict><key>NSExceptionAllowsInsecureHTTPLoadskey><true/><key>NSIncludesSubdomainskey><true/><key>NSExceptionRequiresForwardSecrecykey><false/>dict>dict>
dict>

ATS白名单

3.2 应用跳转(sso登录和分享)
同样在info.plist增加

<key>LSApplicationQueriesSchemeskey>
<array><string>wechatstring><string>weixinstring><string>sinaweibohdstring><string>sinaweibostring><string>sinaweibossostring><string>weibosdkstring><string>weibosdk2.5string><string>mqqapistring><string>mqqstring><string>mqqOpensdkSSoLoginstring><string>mqqconnectstring><string>mqqopensdkdatalinestring><string>mqqopensdkgrouptribesharestring><string>mqqopensdkfriendstring><string>mqqopensdkapistring><string>mqqopensdkapiV2string><string>mqqopensdkapiV3string><string>mqqopensdkapiV4string><string>mqzoneopensdkstring><string>wtloginmqqstring><string>wtloginmqq2string><string>mqqwpastring><string>mqzonestring><string>mqzonev2string><string>mqzonesharestring><string>wtloginqzonestring><string>mqzonewxstring><string>mqzoneopensdkapiV2string><string>mqzoneopensdkapi19string><string>mqzoneopensdkapistring><string>mqqbrowserstring><string>mttbrowserstring><string>alipaystring><string>alipaysharestring><string>renreniosstring><string>renrenapistring><string>renrenstring><string>renreniphonestring><string>laiwangssostring><string>yixinstring><string>yixinopenapistring><string>instagramstring><string>whatsappstring><string>linestring><string>fbapistring><string>fb-messenger-apistring><string>fbauth2string><string>fbshareextensionstring>
array>

LQA应用分享

3.3编译Swift文件出错问题–有时候没有更新到最新的Xcode会报错,swift语法更新的太快
这里写图片描述
SWIFT
这里写图片描述

4.确定分享平台的类库导入完毕,很多报错都是类库缺少导致的,百度是解决不了问题的,最好的方法就是,重新集成,所以集成前要备份项目
这里写图片描述

开始初始化友盟 –调用U-Share SDK

参照官方文档的问题
官方指南解析
1.集成初始化,官方的3.1模块就够了

3.1  初始化设置
3.1.1  初始化U-Share及第三方平台
3.1.2  设置系统回调

2.只做登录模块的话,官方的3.2模块就够了

3.2  第三方平台授权
3.2.1  支持授权的平台
3.2.2  向第三方平台获取授权

3.只做分享模块的话,官方的3.3模块就够了

3.3  第三方平台分享
3.3.1  弹出分享面板
3.3.2  设置分享内容
3.3.2.1  分享文本

分享模块—-体现在项目中的位置

1.AppDelegate.m

#import 
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {//集成第三方[self addThird];self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:[[LoginController alloc] init]];//    self.window.rootViewController = [[TabBarController alloc] init];self.window.rootViewController = nav;[self.window makeKeyAndVisible];return YES;
}
#pragma mark - 集成第三方
- (void)addThird {//腾讯bugly集成//[Bugly startWithAppId:@"项目的appid"];///以下是友盟的配置//打开调试日志[[UMSocialManager defaultManager] openLog:YES];//设置友盟appkey[[UMSocialManager defaultManager] setUmSocialAppkey:@"友盟的appkey"];// 获取友盟social版本号//NSLog(@"UMeng social version: %@", [UMSocialGlobal umSocialSDKVersion]);//设置微信的appKey和appSecret[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:@"微信的appkey" appSecret:@"微信的appSecret" redirectURL:@"要分享的网页"];[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatTimeLine appKey:@"微信的appkey" appSecret:@"微信的appSecret" redirectURL:@"要分享的网页"];//下面的appkey/appSecret/redirectURL都是友盟测试的不是真实的需要自己到第三方平台去申请//设置分享到QQ互联的appKey和appSecret[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:@"100424468"  appSecret:nil redirectURL:@"http://mobile.umeng.com/social"];//设置新浪的appKey和appSecret[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:@"3921700954"  appSecret:@"04b48b094faeb16683c32669824ebdad" redirectURL:@"http://sns.whalecloud.com/sina2/callback"];//支付宝的appKey[[UMSocialManager defaultManager] setPlaform: UMSocialPlatformType_AlipaySession appKey:@"2015111700822536" appSecret:nil redirectURL:@"http://mobile.umeng.com/social"];//设置易信的appKey[[UMSocialManager defaultManager] setPlaform: UMSocialPlatformType_YixinSession appKey:@"yx35664bdff4db42c2b7be1e29390c1a06" appSecret:nil redirectURL:@"http://mobile.umeng.com/social"];
}
/**/
#pragma mark - 集成友盟分享重写这两个方法
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];if (!result) {// 其他如支付等SDK的回调}return result;
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];if (!result) {}return result;
}

2.分享控制器中的点击事件

//导入头文件
#import "UMSocialUIManager.h"
#import 
#pragma mark - 分享
- (void)sharedToFriends {//显示分享面板__weak typeof(self) weakSelf = self;[UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMShareMenuSelectionView *shareSelectionView, UMSocialPlatformType platformType) {[weakSelf shareWithPlatformType:platformType shareTypeIndex:3];}];
}//分享不同的内容到平台platformType
- (void)shareWithPlatformType:(UMSocialPlatformType)platformType shareTypeIndex:(NSInteger)index {switch (index) {case 3:{[self shareWebPageToPlatformType:platformType];}break;default:break;}
}//网页分享
- (void)shareWebPageToPlatformType:(UMSocialPlatformType)platformType
{//创建分享消息对象UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];NSString *title = @"标题";NSString *descr = @"详细描述";NSString *webpageUrl = @"公司的宣传";//创建网页内容对象UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:title descr:descr thumImage:[UIImage imageNamed:@"icon-40"]];//设置网页地址shareObject.webpageUrl =webpageUrl;//分享消息对象设置分享内容对象messageObject.shareObject = shareObject;//调用分享接口[[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {if (error) {ZYLog(@"************Share fail with error %@*********",error);}else{if ([data isKindOfClass:[UMSocialShareResponse class]]) {UMSocialShareResponse *resp = data;//分享结果消息ZYLog(@"response message is %@",resp.message);//第三方原始返回的数据ZYLog(@"response originalResponse data is %@",resp.originalResponse);}else{ZYLog(@"response data is %@",data);}}[self alertWithError:error];}];
}//弹出框提示
- (void)alertWithError:(NSError *)error {NSString *result = nil;if (!error) {result = [NSString stringWithFormat:@"恭喜你,分享成功!邀请好友一起玩转!"];}else{if (error) {result = [NSString stringWithFormat:@"分享失败,此功能正在努力开通中...code: %d\n",(int)error.code];}else{result = [NSString stringWithFormat:@"额,分享失败了!"];}}UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"越分享,越快乐!"message:resultdelegate:nilcancelButtonTitle:NSLocalizedString(@"确定", @"确定")otherButtonTitles:nil];[alert show];
}

3.官方提供的分享接口,可根据需求选取和修改

//分享不同的内容到平台platformType
- (void)shareWithPlatformType:(UMSocialPlatformType)platformType shareTypeIndex:(NSInteger)index
{switch (index) {case 0:{[self shareTextToPlatformType:platformType];}break;case 1:{[self shareImageToPlatformType:platformType];}break;case 2:{[self shareImageAndTextToPlatformType:platformType];}break;case 3:{[self shareWebPageToPlatformType:platformType];}break;case 4:{[self shareMusicToPlatformType:platformType];}break;case 5:{[self shareVedioToPlatformType:platformType];}break;default:break;}
}//分享文本
- (void)shareTextToPlatformType:(UMSocialPlatformType)platformType
{//创建分享消息对象UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];//设置文本messageObject.text = @"社会化组件UShare将各大社交平台接入您的应用,快速武装App。";//调用分享接口[[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {if (error) {NSLog(@"************Share fail with error %@*********",error);}else{if ([data isKindOfClass:[UMSocialShareResponse class]]) {UMSocialShareResponse *resp = data;//分享结果消息NSLog(@"response message is %@",resp.message);//第三方原始返回的数据NSLog(@"response originalResponse data is %@",resp.originalResponse);}else{NSLog(@"response data is %@",data);}}[self alertWithError:error];}];
}//分享图片
- (void)shareImageToPlatformType:(UMSocialPlatformType)platformType
{//创建分享消息对象UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];//创建图片内容对象UMShareImageObject *shareObject = [[UMShareImageObject alloc] init];//如果有缩略图,则设置缩略图shareObject.thumbImage = [UIImage imageNamed:@"icon"];[shareObject setShareImage:@"http://dev.umeng.com/images/tab2_1.png"];//分享消息对象设置分享内容对象messageObject.shareObject = shareObject;//调用分享接口[[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {if (error) {NSLog(@"************Share fail with error %@*********",error);}else{if ([data isKindOfClass:[UMSocialShareResponse class]]) {UMSocialShareResponse *resp = data;//分享结果消息NSLog(@"response message is %@",resp.message);//第三方原始返回的数据NSLog(@"response originalResponse data is %@",resp.originalResponse);}else{NSLog(@"response data is %@",data);}}[self alertWithError:error];}];
}//分享图片和文字
- (void)shareImageAndTextToPlatformType:(UMSocialPlatformType)platformType
{//创建分享消息对象UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];//设置文本messageObject.text = @"社会化组件UShare将各大社交平台接入您的应用,快速武装App。";//创建图片内容对象UMShareImageObject *shareObject = [[UMShareImageObject alloc] init];//如果有缩略图,则设置缩略图shareObject.thumbImage = [UIImage imageNamed:@"icon"];[shareObject setShareImage:@"http://dev.umeng.com/images/tab2_1.png"];//分享消息对象设置分享内容对象messageObject.shareObject = shareObject;//调用分享接口[[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {if (error) {NSLog(@"************Share fail with error %@*********",error);}else{if ([data isKindOfClass:[UMSocialShareResponse class]]) {UMSocialShareResponse *resp = data;//分享结果消息NSLog(@"response message is %@",resp.message);//第三方原始返回的数据NSLog(@"response originalResponse data is %@",resp.originalResponse);}else{NSLog(@"response data is %@",data);}}[self alertWithError:error];}];
}//网页分享
- (void)shareWebPageToPlatformType:(UMSocialPlatformType)platformType
{//创建分享消息对象UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];//创建网页内容对象UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:@"分享标题" descr:@"分享内容描述" thumImage:[UIImage imageNamed:@"icon"]];//设置网页地址shareObject.webpageUrl =@"http://mobile.umeng.com/social";//分享消息对象设置分享内容对象messageObject.shareObject = shareObject;//调用分享接口[[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {if (error) {NSLog(@"************Share fail with error %@*********",error);}else{if ([data isKindOfClass:[UMSocialShareResponse class]]) {UMSocialShareResponse *resp = data;//分享结果消息NSLog(@"response message is %@",resp.message);//第三方原始返回的数据NSLog(@"response originalResponse data is %@",resp.originalResponse);}else{NSLog(@"response data is %@",data);}}[self alertWithError:error];}];
}//音乐分享
- (void)shareMusicToPlatformType:(UMSocialPlatformType)platformType
{//创建分享消息对象UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];//创建音乐内容对象UMShareMusicObject *shareObject = [UMShareMusicObject shareObjectWithTitle:@"分享标题" descr:@"分享内容描述" thumImage:[UIImage imageNamed:@"icon"]];//设置音乐网页播放地址shareObject.musicUrl = @"http://c.y.qq.com/v8/playsong.html?songid=108782194&source=yqq#wechat_redirect";//            shareObject.musicDataUrl = @"这里设置音乐数据流地址(如果有的话,而且也要看所分享的平台支不支持)";//分享消息对象设置分享内容对象messageObject.shareObject = shareObject;//调用分享接口[[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {if (error) {NSLog(@"************Share fail with error %@*********",error);}else{if ([data isKindOfClass:[UMSocialShareResponse class]]) {UMSocialShareResponse *resp = data;//分享结果消息NSLog(@"response message is %@",resp.message);//第三方原始返回的数据NSLog(@"response originalResponse data is %@",resp.originalResponse);}else{NSLog(@"response data is %@",data);}}[self alertWithError:error];}];}//视频分享
- (void)shareVedioToPlatformType:(UMSocialPlatformType)platformType
{//创建分享消息对象UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];//创建视频内容对象UMShareVideoObject *shareObject = [UMShareVideoObject shareObjectWithTitle:@"分享标题" descr:@"分享内容描述" thumImage:[UIImage imageNamed:@"icon"]];//设置视频网页播放地址shareObject.videoUrl = @"http://video.sina.com.cn/p/sports/cba/v/2013-10-22/144463050817.html";//            shareObject.videoStreamUrl = @"这里设置视频数据流地址(如果有的话,而且也要看所分享的平台支不支持)";//分享消息对象设置分享内容对象messageObject.shareObject = shareObject;//调用分享接口[[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {if (error) {NSLog(@"************Share fail with error %@*********",error);}else{if ([data isKindOfClass:[UMSocialShareResponse class]]) {UMSocialShareResponse *resp = data;//分享结果消息NSLog(@"response message is %@",resp.message);//第三方原始返回的数据NSLog(@"response originalResponse data is %@",resp.originalResponse);}else{NSLog(@"response data is %@",data);}}[self alertWithError:error];}];
}

定制个性化的分享界面–cocoapods集成的,就无法定制了

1.友盟的原始界面–界面有点丑
友盟原始界面

2.开始定制图片和标题之路
平台类型
平台类型
修改显示的图片和文字
这里写图片描述

3.自定义分享的内容
自定义分享的内容

4.自定义分享成功和失败的文字提示
这里写图片描述
这里写图片描述
如有其它问题,请留言探讨


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部