UM分享 - 详解
官网: http://dev.umeng.com
友盟现在发展的很壮大! 有熟为人知的社会化分享\统计分析\消息推送\即时通信\自动更新\多媒体服务等功能, 今天就其中第一项 分享功能, 做出分解.
1. 准备工作
1.1 注册账号, 添加App, 可以得到唯一的AppKey: 比如 562795cbe0f55a6cd7006d1a;
1.2 下载最新版的SDK, 解压SDK压缩包,将形如UMSocial_Sdk_x.x.x的文件夹拖入工程目录;
UMSocial_Sdk_x.x.x 文件夹的目录结构
文件或文件夹 | 含义 |
---|---|
libUMSocial_Sdk_x.x.x.a, libUMSocial_Sdk_Comment_3.0.a | 库文件 |
Header | 头文件 |
SocialSDKXib | xib文件 |
en.lproj,zh-Hans.lproj | 英文和中文语言文件 |
frameworks | 使用的第三方SDK,里面的Wechat 代表微信SDK |
UMSocial_Sdk_Extra_Frameworks 文件夹的目录结构
文件或文件夹 | 含义 |
---|---|
TencentOpenAPI | QQ互联SDK |
Facebook SDK | |
LaiWang | 来往 SDK |
UMSocialYiXin.framework | 易信 SDK |
UMSocial_ScreenShot_Sdk | 截屏 SDK |
UMSocial_Shake_Sdk | 摇一摇 SDK |
注意: 1.若你的工程设置了all_load,需要添加手机QQ SDK需要的系统framework:
- Security.framework
- libiconv.dylib
- SystemConfiguration.framework
- CoreGraphics.framework
- libsqlite3.dylib
- CoreTelephony.framework
- libstdc++.dylib
- libz.dylib
1.3 添加SDK后需要手动添加系统库SystemConfiguration.framework
2. 配置代码
2.1 在AppDelegate内设置友盟AppKey
#import "UMSocial.h"
……
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[UMSocialData setAppKey:@"507fcab25270157b37000010"];
}
2.2添加实现代码
打开需要集成分享功能的视图源码UIViewController.m
,把如下代码复制并粘贴到你将弹出一个分享列表的位置,例如到响应分享按钮的方法中。并且修改下面的友盟appkey,你要分享的文字、图片,你要分享到的微博平台,例如下面写的是新浪微博、腾讯微博、人人网。
#import "UMSocial.h"
……
//注意:分享到微信好友、微信朋友圈、微信收藏、QQ空间、QQ好友、来往好友、来往朋友圈、易信好友、易信朋友圈、Facebook、Twitter、Instagram等平台需要参考各自的集成方法
[UMSocialSnsService presentSnsIconSheetView:self
appKey:@"507fcab25270157b37000010"
shareText:@"你要分享的文字"
shareImage:[UIImage imageNamed:@"icon.png"]
shareToSnsNames:[NSArray arrayWithObjects:UMShareToSina,UMShareToTencent,UMShareToRenren,nil]
delegate:self];
实现回调方法(可选):
-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response
{
//根据`responseCode`得到发送结果,如果分享成功
if(response.responseCode == UMSResponseCodeSuccess)
{
//得到分享到的微博平台名
NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);
}
}
形参名 | 含义 |
---|---|
controller | 分享列表页面所在的UIViewController对象 |
appKey | 友盟appKey,如果你在其他地方用UMSocialData 设置了appKey,这里也可以传nil |
shareText | 分享编辑页面的内嵌文字 |
shareImage | 分享编辑页面的内嵌图片,用户可以在编辑页面中删除。如果你不需要分享图片,可以传入nil |
shareToSnsNames | 定义列表出现的微博平台字符串构成的数组,字符变量名为UMShareToSina、UMShareToTencent、UMShareToWechatSession、UMShareToWechatTimeline、UMShareToQzone、UMShareToQQ、UMShareToRenren、UMShareToDouban、UMShareToEmail、UMShareToSms、UMShareToFacebook、UMShareToTwitter,分别代表新浪微博、腾讯微博、微信好友、微信朋友圈、QQ空间、手机QQ、人人网、豆瓣、电子邮箱、短信、Facebook、Twitter |
delegate | 实现分享状态回调方法的对象,回调方法的实现可以参见分享详细说明的回调方法部分。如果你不需要回调的话,可以设为nil |
注意:
1 . 集成微信和手机QQ,请参考添加QQ及Qzone
2 . 弹出横屏页面必须要先使用如下设置屏幕方向的代码,再弹出分享列表页面:[UMSocialConfig setSupportedInterfaceOrientations:UIInterfaceOrientationMaskLandscape];
// -------------------------- -------------------------- -------------------------- -------------------------- -------------------------- --------------------------
完成以上两步, 就能实现基本的分享功能了,
(新浪微博 - UMShareToSina, 腾讯微博 - UMShareToTencent,
人人网 - UMShareToRenren, 豆瓣网 - UMShareToDouban,
邮箱 - UMShareToEmail, 短信 - UMShareToSms,UMShareToFacebook,UMShareToTwitter,)
[注意]: UMShareToFacebook,UMShareToTwitter - 预先需要登录账号, 才能完成分享.
如果需要实现分享到其他平台的功能, 需要对对应的平台专门设置.
3. 集成 分享到微信
(微信好友列表 - UMShareToWechatSession, 微信朋友圈 - UMShareToWechatTimeline, 微信收藏 - UMShareToWechatFavorite)
3.1 登录微信开发者, 注册 App (https://open.weixin.qq.com)
注册App -- 审核成功后, 会生成 AppID , AppSecret, App Bundle Identifier;
3.2 在系统中, 添加微信SDK库文件,( UMSocial_Sdk_Extra_Frameworks
目录下, Wechat
文件夹) 并手动添加依赖的系统库SystemConfiguration.framework;
3.2 代码设置
在你的程序APPdelegate入口方法添加下面的代码
#import "UMSocialWechatHandler.h"
//设置微信AppId、appSecret,分享url
[UMSocialWechatHandler setWXAppId:@"wxd930ea5d5a258f4f" appSecret:@"db426a9829e4b49a0dcac7b4162da6b6" url:@"http://www.umeng.com/social"];
- 如果不添加上面的代码,则分享列表中不会出现微信及朋友圈图标
- URL必须为http链接,如果设置为nil则默认为友盟官网链接
3.3 Scheme URL配置
在你的工程设置项,targets 一栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes,添加xcode的url scheme为微信应用appId,例如“wxd9a39c7122aa6516”
3.4 添加回调
在APPdelegate中实现下面两个系统回调方法:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [UMSocialSnsService handleOpenURL:url];
}
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
return [UMSocialSnsService handleOpenURL:url];
}
[注意]: 如果出现 LLVM - linker command error ; 请核查库文件意义 library search path 和 header search path;
// ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------
4. 分享到新浪微博
SSO授权, 在安装App的情况下, 不需要输入账号密码去申请授权.
4.1 登录网站, 创建 App (http://open.weibo.com/development/mobile), App信息参考 (http://dev.umeng.com/social/ios/operation#2_2)
生成: AppKey, AppSecret.
[注意]: 安全域名设置必须为sns.whalecloud.com ; 回调地址在App设置中与代码中设置必须一致.
4.2 添加相关库文件(使用微博原生SDK)-- 将SinaSSO
文件夹添加到工程。
设置: 在other linker flags增加 "-ObjC" 选项,并添加系统支持库: ImageIO.framework
4.3 配置URL schemes(使用微博原生SDK)
在你的工程设置项,targets 一栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes,格式为“wb”+新浪appkey,例如“wb126663232”
4.4 添加SSO授权开关(使用微博原生SDK)
在APPDelegate中集成新浪微博开关
#import "UMSocialSinaSSOHandler.h"
//打开新浪微博的SSO开关,设置新浪微博回调地址,这里必须要和你在新浪微博后台设置的回调地址一致。若在新浪后台设置我们的回调地址,“http://sns.whalecloud.com/sina2/callback”,这里可以传nil
[UMSocialSinaSSOHandler openNewSinaSSOWithRedirectURL:@"http://sns.whalecloud.com/sina2/callback"];
[注意]: 回调URL必须和后台保持一致,否则会报错redirect URL mismatch
4.5 添加系统回调 (使用微博原生SDK)
在APPdelegate中实现下面的回调方法
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [UMSocialSnsService handleOpenURL:url];
}
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
return [UMSocialSnsService handleOpenURL:url];
}
4.6 使用默认分享界面 设置分享
使用友盟默认提供的分享面板,调用下面的代码
[UMSocialSnsService presentSnsIconSheetView:self
appKey:你的友盟应用Appkey
shareText:@"友盟社会化分享让您快速实现分享等社会化功能,http://umeng.com/social"
shareImage:[UIImage imageNamed:@"icon.png"]
shareToSnsNames:@[UMShareToSina]
delegate:self];
//实现回调方法(可选):
-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response
{
//根据`responseCode`得到发送结果,如果分享成功
if(response.responseCode == UMSResponseCodeSuccess)
{
//得到分享到的微博平台名
NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);
}
}
// ----------------------- ----------------------- ----------------------- ----------------------- ----------------------- ----------------------- -----------------------
5. 集成 QQ / QQZone
5.1 注册应用
使用QQ及Qzone分享首先在腾讯开放平台注册应用,地址:http://open.qq.com 按照要求填写,审核通过前需要添加测试账号,否则会报错110406或110404
5.2 添加相关文件
在UMSocial_Sdk_Extra_Frameworks
目录下的,添加TencentOpenAPI
文件夹到工程 添加下面几个系统framework
在Xcode中打开工程配置文件,选择“summary”一栏。在“summary”中选择“Linked Frameworks and Libraries”一栏,点击“+”图标添加下面八个库文件,分别是
- Security.framework
- libiconv.dylib
- SystemConfiguration.framework
- CoreGraphics.Framework
- libsqlite3.dylib
- CoreTelephony.framework
- libstdc++.dylib
- libz.dylib
5.3
添加QQ及Qzone到分享列表
在AppDelegate应用入口方法打开集成手机QQ、Qzone开关
//设置分享到QQ/Qzone的应用Id,和分享url 链接
#import "UMSocialQQHandler.h"
[UMSocialQQHandler setQQWithAppId:@"100424468" appKey:@"c7394704798a158208a74ab60104f0ba" url:@"http://www.umeng.com/social"];
- 如果不添加上面的代码,则分享列表中不会出现QQ及Qzone图标
- URL必须为http链接,如果设置为nil则默认为友盟官网链接
5.3 配置URL schemes
在你的工程设置项,targets 一栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes,设置Xcode的url scheme格式为“QQ”+腾讯QQ互联应用appId转换成十六进制(不足8位前面补0),例如“QQ05FC5B14”。并在QQ互联后台的URL schema中填入此字符串保持一致。 额外设置 url schemes 的格式为"tencent"+腾讯QQ互联应用appId,例如“tencent100424468”
如果 URL schemes 配置错误,则分享完成后无法返回应用
5.4 添加系统回调
在APPdelegate中实现下面的方法
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [UMSocialSnsService handleOpenURL:url];
}
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
return [UMSocialSnsService handleOpenURL:url];
}
5.5 设置分享内容
默认分享样式 - 使用友盟默认分UI界面,添加下面代码
[UMSocialSnsService presentSnsIconSheetView:self
appKey:你的友盟应用Appkey
shareText:@"友盟社会化分享让您快速实现分享等社会化功能,www.umeng.com/social"
shareImage:[UIImage imageNamed:@"icon.png"]
shareToSnsNames:@[UMShareToQQ,UMShareToQzone]
delegate:self];
//实现回调方法(可选):
-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response
{
//根据`responseCode`得到发送结果,如果分享成功
if(response.responseCode == UMSResponseCodeSuccess)
{
//得到分享到的微博平台名
NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);
}
}
[注意]: Qzone分享文字与图片缺一不可,否则会出现错误码10001
//// ///////////////////////// ---- 就到这里
http://dev.umeng.com/social/ios/feature
UM分享 - 详解的更多相关文章
- Android 应用程序之间内容分享详解(二)
转载请注明出处:http://blog.csdn.net/xiaanming/article/details/9428613 Android 应用程序之间内容分享详解(一) 之前给大家分享了你开发的应 ...
- 微信js-sdk分享详解及demo实例
步骤一:绑定域名 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名". 步骤二:引入JS文件 在需要调用JS接口的 ...
- Android 应用程序之间内容分享详解(一)
一个Andoird应用程序的重要的地方是他们有相互沟通和整合的能力,一个应用程序可以和另一个应用程序交互,接下来我们来看看Android应用之间的内容分享 当你构建Intent的时候,必须要指定Int ...
- 分享我开发的网络电话Android手机APP正式版,图文详解及下载
分享我开发的网络电话Android手机APP正式版,图文详解及下载 分享我开发的网络电话Android手机APP正式版 实时语音通讯,可广域网实时通讯,音质清晰流畅! 安装之后的运行效果: 第一次安装 ...
- UIWebView用法详解及代码分享
今天我们来详细UIWebView用法.UIWebView是iOS内置的浏览器控件,可以浏览网页.打开文档等 能够加载html/htm.pdf.docx.txt等格式的文件. 用UIWebView我们就 ...
- iOS 6分享列表——UIActivityViewController详解
iOS 6分享列表——UIActivityViewController详解 2013-06-03 01:42:33 发表评论 在iOS 6之后提供了一个分享列表视图,它通过UIActivity ...
- [原创] 分享我们自己搭建的微信小程序开发框架——wframe及设计思想详解
wframe不是控件库,也不是UI库,她是一个微信小程序面向对象编程框架,代码只有几百行.她的主要功能是规范小程序项目的文件结构.规范应用程序初始化.规范页面加载及授权管理的框架,当然,wframe也 ...
- webpack4配置详解之常用插件分享
前言 继上一次webpack的基础配置分享之后,本次将分享一些工作中项目常用的配置插件.也会包含一些自己了解过觉得不错的插件,如有分析不到位的,欢迎纠错,嗯,这些东西文档都有,大佬可绕过. Wepac ...
- 腾讯技术分享:GIF动图技术详解及手机QQ动态表情压缩技术实践
本文来自腾讯前端开发工程师“ wendygogogo”的技术分享,作者自评:“在Web前端摸爬滚打的码农一枚,对技术充满热情的菜鸟,致力为手Q的建设添砖加瓦.” 1.GIF格式的历史 GIF ( Gr ...
随机推荐
- careercup-递归和动态规划 9.8
9.8 给定数量不限的硬币,币值为25分.10分.5分和1分,编写代码就是n分有几种表示法. 解法: 使用回溯法进行解决,实际上就是一个类似枚举的过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满 ...
- 如何从零开始学习DIV+CSS
CSS是样式,DIV是层.DIV+CSS是网站标准(web标准),通常为了说明与HTML网页设计语言中的表格(table)定位方式的区别.因为XHTML网站设计标准中,不再使用表格定位技术,而是采用D ...
- android开发之SnackBar的使用
SnackBar是一个类似于Toast的东西,它也有显示时长,但是比Toast更加灵活,同时,我们还可以给SnackBar设置点击事件,那么我们今天就来看看怎么用吧! 先来一张效果图: 这种效果大家可 ...
- opai_suki
- Android_life,Intent_note
生命周期: 从出生到死亡 Activity生命周期的7个方法和3个循环 onCreate() 创建时调用onRestart() 不可见到可见时调用onStart() 用户可见时调用onResume() ...
- mysql远程连接错误提醒:2013-Lost connection to MySQL server at ‘reading initial communication packet', system error: 0
因为没有匹配/etc/hosts.allow. 解决方法: 1.在hosts.allow 文件中添加 mysqld:ALL [root@ucDB204 ~]# cat /etc/hosts.allow ...
- access应用分享
我最近开发了一个winform项目,用的是access数据库,当开发成功以后,有些电脑上就能正常运行,有些电脑就无法读取数据库文件,刚开始我以为是权限问题,后来我把安装程序卸载了,装在其它盘中(非C盘 ...
- C#的语句
什么是语句?语句可以是以分号结尾的单行代码,或者是语句块中的一系列单行语句.语句块括在括号 {} 中,并且可以包含嵌套块. 1,语句的类型 (1)声明语句 声明语句主要是引入新的变量和常量.变量的声明 ...
- js广告浮动
一个广告框在指定区域,有定位属性的父级区域内,一直向右向左移动,如果碰到左右边框,反向,如果碰到上下边距,反向,实现在指定框中浮动的效果. <!doctype html> <html ...
- Algorithm
经过慎重考虑,也经过反复思考.查阅网上相关资料 一位高手对我的建议: 一般要做到50行以内的程序不用调试.100行以内的二分钟内调试成功.acm主要是考算法的 ,主要时间是花在思考算法上,不是花在写程 ...