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 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 配置错误,则分享完成后无法返回应用

[注意]: 在Xcode 6.0创建工程时,默认可能没有单独设置Bundle display name属性值。但是因为SDK需要用到Bundle display name的值,所以务必请检查确保这个属性存在,如果没有请添加上。

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

原文地址:https://www.cnblogs.com/guangleijia/p/4902506.html