iOS 友盟分享

友盟分享

1.http://dev.umeng.com/ 下载SDK 

2.

  下载途径有两个,一个直接下SDK,或从CocoaPods 下载


3.

勾选直接所需要分享的平台下载SDK ,下载。


4.将下载来的SDK导入工程中

注意:
1. 添加SDK后需要手动添加系统库SystemConfiguration.framework

 2. 若你的工程设置了all_load,需要添加手机QQ SDK需要的系统

 framework:Security.framework

libiconv.dylib

CoreGraphics.framework

libsqlite3.dylib

CoreTelephony.framework

libstdc++.dylib

libz.dylib

搞定后基本集成完成了。command+b 下看下是否编译成功


接下来初始化友盟控件。

建议写一个两个Category 像这样一个是回调的。

简化Appdelegate 中的代码。

category 代码如下 

#import "AppDelegate+UmengShareAndLogin.h"
#import "UMSocial.h"
#define UmengAppkey @"56a08744e0f55a75ea00238f"


#import "UMSocialWechatHandler.h" // weixin
#import "UMSocialQQHandler.h"     // QQ
#import "UMSocialSinaSSOHandler.h"// 新浪

@implementation AppDelegate (UmengShareAndLogin)

// 只需要在AppDelegate   调用这个方法即可初始化友盟控件 
- (void)UmengThirdPartySetting
{
    
    //设置友盟社会化组件appkey
   [UMSocialData setAppKey:UmengAppkey];
     //打开调试log的开关
    [UMSocialData openLog:YES];
    //如果你要支持不同的屏幕方向,需要这样设置,否则在iPhone只支持一个竖屏方向
    [UMSocialConfig setSupportedInterfaceOrientations:UIInterfaceOrientationMaskAll];
    
    // 设置微信AppId,设置分享url,默认使用友盟的网址
    [UMSocialWechatHandler setWXAppId:@"wx0a1cd578727469d0" appSecret:@"d4624c36b6795d1d99dcf0547af5443d" url:@"http://www.baidu.com"];
    
    // 设置手机QQ的AppId,指定你的分享url,若传nil,将使用友盟的网址
    [UMSocialQQHandler setQQWithAppId:@"1104992253" appKey:@"GqwTlMfLT6Y9ibJE" url:@"http://www.umeng.com/social"];
    // 支持网页版
    [UMSocialQQHandler setSupportWebView:YES];
    
    // 打开新浪微博的SSO开关
    // 将在新浪微博注册的应用appkey、redirectURL替换下面参数,并在info.plist的URL Scheme中相应添加wb+appkey,如"wb3921700954",详情请参考官方文档。
    [UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:@"3921700954"
                                         RedirectURL:@"http://sns.whalecloud.com/sina2/callback"];
}

回调的category  的代码如下 。
#import "AppDelegate+callBack.h"
// 友盟库
#import "UMSocial.h"
@implementation AppDelegate (callBack)

// 从其他应用跳回主应用中调用
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    return  [UMSocialSnsService handleOpenURL:url];
}

// 从源app跳回到应用中调用
- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation
{
    return  [UMSocialSnsService handleOpenURL:url];
}
@end

添加SSO授权

  SSO授权简介

SSO指单点登录,当用户安装了对应第三方客户端且登录时,可以在登录时免去输入账号密码的过程,简化分享流程,目前友盟支持新浪、、QQ及Qzone平台

 新浪微博SSO

使用SSO授权方式,在用户安装了微博客户端并登录时,可以在分享过程中不需要输入账号密码,直接通过微博客户端授权,随后进行网页分享,免去了用户输入密码的过程。 在用户未安装客户端时,则自动跳转到网页授权方式,微博SSO授权我们提供微博原生SDK与非原生SDK两种方式,选择其中一种即可。

添加相关库文件(使用微博原生SDK)

解压下载文件夹,将SinaSSO文件夹添加到工程。

在other linker flags增加-ObjC 选项,并添加ImageIO 系统framework

配置URL schemes(使用微博原生SDK)

在你的工程设置项,targets 一栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes,格式为“wb”+新浪appkey,例如“wb126663232”

 添加SSO授权开关(使用微博原生SDK)

在APPdelegate中集成新浪微博开关

  #import "UMSocialSinaSSOHandler.h"
  //打开新浪微博的SSO开关,设置新浪微博回调地址,这里必须要和你在新浪微博后台设置的回调地址一致。若在新浪后台设置我们的回调地址,“http://sns.whalecloud.com/sina2/callback”,这里可以传nil
  [UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:@"3921700954" RedirectURL:@"http://sns.whalecloud.com/sina2/callback"];


到这里你已经成功一半了, 还需在Appdelegate  里 就调一下 [self UmengThirdPartySetting]; 就初始完成了。

如果你用真机编译失败而且报错


找到 Build Settings -> Build Options ->Enable Bitcode 选个NO  就OK了。 下面再解释这个是什么东西


 添加URL scheme

在你的工程设置项,targets 一栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes。如果使用的是Xcode3或更低版本,则需要在plist文件中添加。获取各个平台appkey或者appid的方法可以参考分享详细文档绑定各个平台部分,各个平台的url scheme格式如下表:

平台 url scheme设置格式
新浪微博(使用微博原生SDK) “wb”+新浪appkey,例如“wb126663232”
新浪微博(非微博原生SDK) “sina.”+友盟appkey,例如“sina.507fcab25270157b37000010”
微信 微信应用appId,例如“wxd9a39c7122aa6516”,微信详细集成步骤参考微信集成方法
人人网 “rm”+你的应用bundle id,例如“rmcom.umeng.SocialSDK”
QQ、QQ空间 需要添加两个URL schemes 1. “QQ”+腾讯QQ互联应用appId转换成十六进制(不足8位前面补0),例如“QQ05FC5B14”,注意大写,生成十六进制方法:点击链接,2.“tencent“+腾讯QQ互联应用Id,例如“tencent100424468" ,QQ及Qzone详细集成步骤参考手机QQ集成方法
来往 Identifier填“Laiwang”,URL Schemes填来往AppId.注意使用来往SDK后,Xcode工程other linker flags需要添加-ObjC参数
易信 易信Appkey,例如“yx35664bdff4db42c2b7be1e29390c1a06”
Facebook 集成最新Facebook SDK在iOS7.0以上有效,若要使用我们提供的facebook分享需要设置“fb”+facebook AppID,例如“fb1440390216179601”,详细集成方法见集成facebook


注意 :因为iOS升到iOS 9 之后要适配IOS9  要进行配置处理

1.传输安全HTTPS ,这个就不说了。

2.应用跳转

如果你的应用使用了如SSO授权登录或跳转分享功能,在iOS9下就需要增加一个可跳转的白名单,指定对应跳转App的URL Scheme,否则将在第三方平台判断是否跳转时用到的canOpenURL时返回NO,进而只进行webview授权或授权/分享失败。
在右键 ->info.plist  -> open as ->source code 

将一下代码copy 进去即可。

<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>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>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>

3.  应用瘦身(App Thining)

iOS9 SDK新增了对App瘦身的功能,详情见App Thining。目前各个第三方平台正在进行App thining的支持,所以为了正常使用第三方SDK及分享SDK,需要在Build Setting中将Enable bitcode关闭,或设置编译标识ENABLE_BITCODE=NO。注:bitcode仅在Xcode7以上显示并默认开启。

  到这里 , 你配置完成所有了。 哎说了一堆有得没得。
 接下来就分享的几个方法调用,Umeng已经封装的及其简单了。
 
接下来介绍几个分享 的接口
1.快速分享
-(IBAction)showShareList1:(id)sender  {
    NSString *shareText = @"友盟社会化组件可以让移动应用快速具备社会化分享、登录、评论、喜欢等功能,并提供实时、全面的社会化数据统计分析服务。 http://www.umeng.com/social";             //分享内嵌文字
//    UIImage *shareImage = [UIImage imageNamed:@"UMS_social_demo"];          //分享内嵌图片
    UIImage *shareImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"UMS_social_demo" ofType:@"png"]];
     //调用快速分享接口
    [UMSocialSnsService presentSnsIconSheetView:self
                                         appKey:UmengAppkey
                                      shareText:shareText //分享的文字
                                     shareImage:shareImage //分享的图片
                                shareToSnsNames:nil        //就是弹出框要分享的平台,nil 默认是会弹出
                                       delegate:self];
}
2.自定义样式 (就是点分享出来弹出平台的 图标你自己随便玩)

 [[UMSocialControllerService defaultControllerService] setShareText:shareText//分享的文字 shareImage:shareImage//分享的图片 socialUIDelegate:self];
        UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:snsName//一定要给对,分享平台名字,(要参照[UMSocialSnsPlatformManager sharedInstance].allSnsValuesArray 里面的字符串 其实就是 平台名字。就OK了)];
        snsPlatform.snsClickHandler(self,[UMSocialControllerService defaultControllerService],YES); // 确定分享跳转,
你界面想怎么画怎么画, 

Bitcode

Bitcode是个什么鬼?

查阅了一下官方文档,在App

Distribution Guide–App Thinning (iOS, watchOS)一节中,找到了下面这样一个定义:

Bitcode is an intermediate representationof a compiled program. Apps you upload to iTunes Connect that contain bitcodewill be compiled and linked on the App Store. Including bitcode will allowApple to re-optimize your app binary in the future without the need to submit anew version of your app to the store.

说的是bitcode是被编译程序的一种中间形式的代码。包含bitcode配置的程序将会在App store上被编译和链接。bitcode允许苹果在后期重新优化程序的二进制文件,而不需要重新提交一个新的版本到App store上。

而在What’s New in Xcode-New Features in Xcode 7中,还有一段如下的描述:

Bitcode. When you archive for submission tothe App Store, Xcode will compile your app into an intermediate representation.The App Store will then compile the bitcode down into the 64 or 32 bitexecutables as necessary.

当提交程序到App store上时,Xcode会将程序编译为一个中间表现形式(bitcode)。然后App store会再将这个botcode编译为可执行的64位或32位程序。

再看看这两段描述,都是放在App Thinning(App瘦身)一节中,可以看出其与包的优化有关了。

Bitcode配置

在上面的错误提示中,提到了如何处理我们遇到的问题:

You must rebuild it with bitcode enabled(Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, ordisable bitcode for this target. for architecture arm64

要么让第三方库支持,要么关闭target的bitcode选项。

实际上,在Xcode 7中,我们新建一个iOS程序时,bitcode选项默认是设置为YES的。我们可以在”Build Settings”->”Enable Bitcode”选项中看到这个设置。不过,我们现在需要考虑的是三个平台:iOS,Mac OS,watchOS。

对于iOS,bitcode是可选的;对于watchOS,bitcode是必须的;而Mac OS是不支持bitcode。

如果我们开启了bitcode,在提交包时,下面这个界面也会有个bitcode选项:

http://upload-images.jianshu.io/upload_images/437484-cc471aab90ab0054.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240


所以,如果我们的工程需要支持bitcode,则必要要求所有引入的第三方库都支持bitcode。





你可能感兴趣的:(iOS 友盟分享)