IOS ShareSDK实现分享——微信分享

时间:2016-04-12 13:00:22   收藏:0   阅读:1410

最近领导让添加ios 微信分享视频的功能,之前做的只有微信分享本地图片的功能。

查看官网并没有找到答案,后来在其官网论坛中http://bbs.mob.com/thread-20938-1-1.html 这里面发现新版的sdk(v3.2.1)中才添加的微信分享本地文件(mp3、mp4、docx、pdf等)的功能。可以支持就好办了。。

使用集成好的第三方框架可以节省许多代码量。

注意:申请shareSdk的apply,还有各个平台的appkey和appsecert(这真是非常麻烦的事情啊)

集成SDK

1 下载ShareSDK 简洁版(v3.2.1)

目录如下所示:

技术分享     技术分享    

目录结构:

  (1)ShareSDk.framework:核心静态库。(必要)

    (2)  Support 文件夹。其中包含三个文件夹:

   (a) Required (需要的类库) :

         ----- MOBFoundation.framework:基础功能框架。(必要)
         ----- ShareSDK.bundle:ShareSDK资源文件。(必要)
         ----- ShareSDKConnector.framework:用于ShareSDK框架与外部框架连接的代理框架插件。(使用第三方SDK时必要。)
     (b) Optional (可选类库):
         ----- ShareSDKExtension.framework:对ShareSDK功能的扩展框架插件。
        (主要提供第三方平台登录、 一键分享、截屏分享、摇一摇分享等相关功能。需要使用以上功能时必要。)
         ----- ShareSDKInterfaceAdapter.framework:ShareSDK v2.x对简洁版的接口兼容包。
         ----- ShareSDKUI.bundle:分享菜单栏和分享编辑页面资源包。(如果自定义这些UI可直接移除)
         ----- ShareSDKUI.framework:分享菜单栏和分享编辑页面。(如果自定义这些UI可直接移除)
     (c) PlatformSDK 第三方平台SDK。(不需要的平台的SDK可直接移除)

其中PlatformSDK文件夹下用来添加各个平台分享的sdk,可以根据需求下载。

2 将sdk导入工程

选中ShareSDK文件夹向工程中拖拽,拖到工程中后弹出以下对话框,勾选"Copy items into destination group‘s folder(if needed)",并点击“Finish“按钮, 如图

技术分享

注意:请务必在上述步骤中选择“Create groups for any added folders”单选按钮组。如果你选择“Create folder references for any added folders”,一个蓝色的文件夹引用将被添加到项目并且将无法找到它的资源。

3 添加依赖库

如下图:3是Build phases。 4 是Link Binary With Libraries。

技术分享
必须添加的依赖库如下(Xcode 7 下 *.dylib库后缀名更改为*.tbd):
  • SystemConfiguration.framework
  • QuartzCore.framework
  • CoreTelephony.framework
  • libicucore.dylib
  • libz.1.2.5.dylib
  • Security.framework
  • JavaScriptCore.framework
  • libstdc++.dylib
  • CoreText.framework
以下依赖库根据社交平台添加:
微信SDK依赖库   libsqkute3.dylib

设置appKey

打开AppDelegate.m文件。
导入头文件
#import <ShareSDK/ShareSDK.h>
#import "WXApi.h"
实现代理

@interface GAShareUtil ()<WXApiDelegate>

@end

在- (BOOL)application: didFinishLaunchingWithOptions:方法中调用registerApp方法来初始化SDK并且初始化第三方平台
/**
     *  设置ShareSDK的appKey,如果尚未在ShareSDK官网注册过App,请移步到http://mob.com/login 登录后台进行应用注册
     *  在将生成的AppKey传入到此方法中。
     *  方法中的第二个第三个参数为需要连接社交平台SDK时触发,
     *  在此事件中写入连接代码。第四个参数则为配置本地社交平台时触发,根据返回的平台类型来配置平台信息。
     *  如果您使用的时服务端托管平台信息时,第二、四项参数可以传入nil,第三项参数则根据服务端托管平台来决定要连接的社交SDK。
     */
    [ShareSDK registerApp:@"iosv1101"
          activePlatforms:@[
                            @(SSDKPlatformTypeWechat)]
                 onImport:^(SSDKPlatformType platformType){
                     switch (platformType){
                         case SSDKPlatformTypeWechat:
                             [ShareSDKConnector connectWeChat:[WXApi class]delegate:self];
                             break;
                         case SSDKPlatformTypeQQ:
                             [ShareSDKConnector connectQQ:[QQApiInterface class] tencentOAuthClass:[TencentOAuth class]];
                             break;
                         case SSDKPlatformTypeSinaWeibo:
                             [ShareSDKConnector connectWeibo:[WeiboSDK class]];
                             break;
                         default:
                             break;
                     }
                 } onConfiguration:^(SSDKPlatformType platformType, NSMutableDictionary *appInfo){
                     switch (platformType){
//                        case SSDKPlatformTypeSinaWeibo:
//                             //设置新浪微博应用信息,其中authType设置为使用SSO+Web形式授权
//                            [appInfo SSDKSetupSinaWeiboByAppKey:@"3861325189"
//                                                      appSecret:@"1929f101f7929b8ed7a96f7ad4bedce1"
//                                                    redirectUri:@"http://www.ingenic.cn"
//                                                       authType:SSDKAuthTypeBoth];
//                             break;
                         case SSDKPlatformTypeWechat:
                             [appInfo SSDKSetupWeChatByAppId:@"wx4868b35061f87885"
                                 appSecret:@"558b231f64dce8fdf7a02d35386593bb"];
				break;  
			 default: break; 
} }];

然后打开下图位置,在URL Types中添加微信AppID  技术分享

分享代码

1 简单分享 --无UI分享

/**
 *  简单分享
 */
- (void)simplyShare{
    /**
     * 在简单分享中,只要设置共有分享参数即可分享到任意的社交平台(前提是在AppDelegate中成功注册)
     **/
    __weak SHWeiXinViewController *theController = self;
    [self showLoadingView:YES];
    //创建分享参数
    NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
    //可以是单张图片也可以是多张。
    NSArray* imageArray = @[[UIImage imageNamed:@"shareImg.png"]];
    if (imageArray) {
        [shareParams SSDKSetupShareParamsByText:@"分享内容"
                                         images:imageArray
                                            url:[NSURL URLWithString:@"http://www.mob.com"]
                                          title:@"分享标题"
                                           type:SSDKContentTypeAuto];
        //进行分享
        [ShareSDK share:SSDKPlatformSubTypeWechatSession
             parameters:shareParams
//        [ShareSDK share:SSDKPlatformTypeSinaWeibo
//             parameters:shareParams
         onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
             [theController showLoadingView:NO];
             [theController.wxtableView reloadData];
             switch (state) {//判断分享是否成功
                 case SSDKResponseStateSuccess:{
                     UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"分享成功"
                                                                         message:nil
                                                                        delegate:nil
                                                               cancelButtonTitle:@"确定"
                                                               otherButtonTitles:nil];
                     [alertView show];
                     break;
                 }
                 case SSDKResponseStateFail:{
                     UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"分享失败"
                                                                         message:[NSString stringWithFormat:@"%@", error]
                                                                        delegate:nil
                                                               cancelButtonTitle:@"确定"
                                                               otherButtonTitles:nil];
                     [alertView show];
                     break;
                 }
                 case SSDKResponseStateCancel:{
                     UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"分享已取消"
                                                                         message:nil
                                                                        delegate:nil
                                                               cancelButtonTitle:@"确定"
                                                               otherButtonTitles:nil];
                     [alertView show];
                     break;
                 }
                 default:
                     break;
             }
         }];
    }
}

/**

 * 设置分享参数

 *  @param text     文本

 *  @param images   图片集合,传入参数可以为单张图片信息,也可以为一个NSArray,数组元素可以为UIImageNSString(图片路径)、NSURL(图片路径)、SSDKImage。如: @"http://www.mob.com/images/logo_black.png"@[@"http://www.mob.com/images/logo_black.png"]

 *  @param url      网页路径/应用路径

 *  @param title    标题

 *  @param type     分享类型

 */

- (void)SSDKSetupShareParamsByText:(NSString *)text

                            images:(id)images

                               url:(NSURL *)url

                             title:(NSString *)title

                              type:(SSDKContentType)type;

SSDKContentType 用来设置分享类型。如下图所示 相同代码,不同的类型对应不同效果

技术分享  技术分享 技术分享  技术分享


当SSDKContentType设置为SSDKContentTypeAuto会自动判断分享的类型,类显示不同的界面。

2 分享菜单

显示分享菜单
- (void)showShareActionSheet:(UIView *)view{
    /**
     * 在简单分享中,只要设置共有分享参数即可分享到任意的社交平台
     **/
    __weak SHWeiXinViewController *theController = self;
    //1、创建分享参数(必要)
    NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
    NSArray* imageArray = @[[UIImage imageNamed:@"shareImg.png"]];
    [shareParams SSDKSetupShareParamsByText:@"分享内容"
                                     images:imageArray
                                        url:[NSURL URLWithString:@"http://www.mob.com"]
                                      title:@"分享标题"
                                       type:SSDKContentTypeAuto];
    
    //2、分享
    [ShareSDK showShareActionSheet:view
                             items:nil
                       shareParams:shareParams
               onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) {
                   switch (state) {
                       case SSDKResponseStateBegin:{
                           [theController showLoadingView:YES];
                           break;
                       }
                       case SSDKResponseStateSuccess:{
                           //Facebook Messenger、WhatsApp等平台捕获不到分享成功或失败的状态,最合适的方式就是对这些平台区别对待
                           if (platformType == SSDKPlatformTypeFacebookMessenger){
                               break;
                           }
                           UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"分享成功"
                                                                               message:nil
                                                                              delegate:nil
                                                                     cancelButtonTitle:@"确定"
                                                                     otherButtonTitles:nil];
                           [alertView show];
                           break;
                       }
                       case SSDKResponseStateFail:{
                           if (platformType == SSDKPlatformTypeSMS && [error code] == 201){
                               UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"分享失败"
                                                                               message:@"失败原因可能是:1、短信应用没有设置帐号;2、设备不支持短信应用;3、短信应用在iOS 7以上才能发送带附件的短信。"
                                                                              delegate:nil
                                                                     cancelButtonTitle:@"OK"
                                                                     otherButtonTitles:nil, nil];
                               [alert show];
                               break;
                           }else if(platformType == SSDKPlatformTypeMail && [error code] == 201){
                               UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"分享失败"
                                                                               message:@"失败原因可能是:1、邮件应用没有设置帐号;2、设备不支持邮件应用;"
                                                                              delegate:nil
                                                                     cancelButtonTitle:@"OK"
                                                                     otherButtonTitles:nil, nil];
                               [alert show];
                               break;
                           }
                           else{
                               UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"分享失败"
                                                                               message:[NSString stringWithFormat:@"%@",error]
                                                                              delegate:nil
                                                                     cancelButtonTitle:@"OK"
                                                                     otherButtonTitles:nil, nil];
                               [alert show];
                               break;
                           }
                           break;
                       }
                       case SSDKResponseStateCancel:{
                           UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"分享已取消"
                                                                               message:nil
                                                                              delegate:nil
                                                                     cancelButtonTitle:@"确定"
                                                                     otherButtonTitles:nil];
                           [alertView show];
                           break;
                       }
                       default:
                           break;
                   }
                   if (state != SSDKResponseStateBegin){
                       [theController showLoadingView:NO];
                       [theController.wxtableView reloadData];
                   }                  
               }];   
}

技术分享
显示分享菜单的方法

+ (SSUIShareActionSheetController *)showShareActionSheet:(UIView *)view
                                                   items:(NSArray *)items
                                             shareParams:(NSMutableDictionary *)shareParams
                                     onShareStateChanged:(SSUIShareStateChangedHandler)shareStateChangedHandler;

当items参数为nil时,则会显示已集成的平台列表,可以通过设置items只显示自己需要的平台。其中SSDKPlatformTypeWechat默认包括微信好友,朋友圈和微信收藏。可以通过设置这三个参数可以让各别显示和隐藏。

SSDKPlatformSubTypeWechatSession,SSDKPlatformSubTypeWechatTimeline,SSDKPlatformSubTypeWechatFav


[ShareSDK showShareActionSheet:nil
                       //将要自定义顺序的平台传入items参数中
                       items:@[@(SSDKPlatformTypeWechatTimeLine)
			       @(SSDKPlatformTypeWechatSession)] 
                 shareParams:shareParams 
         onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) { .......}];

效果图所示:
技术分享

3 自定义分享菜单栏样式

// 弹出分享菜单需要导入的头文件
#import <ShareSDKUI/ShareSDK+SSUI.h>
// 自定义分享菜单栏需要导入的头文件
#import <ShareSDKUI/SSUIShareActionSheetStyle.h>
 
    //1、创建分享参数(必要)
    NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
    NSArray* imageArray = @[[UIImage imageNamed:@"shareImg.png"]];
   (注意:图片要在Xcode左边目录里面,名称必须要传正确,或者是本地沙盒中的文件,如果要分享网络图片,可以这样传iamge参数 images:@[@"http://mob.com/Assets/images/logo.png?v=20150320"])
    [shareParams SSDKSetupShareParamsByText:@"分享内容"
                                     images:imageArray
                                        url:[NSURL URLWithString:@"http://mob.com"]
                                      title:@"分享标题"
                                       type:SSDKContentTypeAuto];
 
    // 设置分享菜单栏样式(非必要)
    // 设置分享菜单的背景颜色
    [SSUIShareActionSheetStyle setActionSheetBackgroundColor:[UIColor colorWithRed:249/255.0 green:0/255.0 blue:12/255.0 alpha:0.5]];
    // 设置分享菜单颜色
    [SSUIShareActionSheetStyle setActionSheetColor:[UIColor colorWithRed:21.0/255.0 green:21.0/255.0 blue:21.0/255.0 alpha:1.0]];
    // 设置分享菜单-取消按钮背景颜色
    [SSUIShareActionSheetStyle setCancelButtonBackgroundColor:[UIColor colorWithRed:21.0/255.0 green:21.0/255.0 blue:21.0/255.0 alpha:1.0]];
    // 设置分享菜单-取消按钮的文本颜色
    [SSUIShareActionSheetStyle setCancelButtonLabelColor:[UIColor yellowColor]];
    // 设置分享菜单-社交平台文本颜色
    [SSUIShareActionSheetStyle setItemNameColor:[UIColor redColor]];
    // 设置分享菜单-社交平台文本字体
    [SSUIShareActionSheetStyle setItemNameFont:[UIFont systemFontOfSize:11]];
 
    //2、弹出ShareSDK分享菜单
    [ShareSDK showShareActionSheet:view
                             items:@[@(SSDKPlatformTypeWechatTimeLine)
			           @(SSDKPlatformTypeWechatSession)]
                       shareParams:shareParams
               onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) { ...... }
效果图:
技术分享

4 跳过分享的编辑界面

弹出分享菜单,直接点击菜单中的平台分享(跳过分享的编辑界面)。

//先构造分享参数:
 NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
  [shareParams SSDKSetupShareParamsByText:@"分享内容"
                                         images:@[[UIImage imageNamed:@"shareImg.png"]]
                                            url:[NSURL URLWithString:@"http://mob.com"]
                                          title:@"分享标题"
                                           type:SSDKContentTypeAuto];
  //调用分享的方法
 SSUIShareActionSheetController *sheet = [ShareSDK showShareActionSheet:view
                                                                         items:nil
                                                                   shareParams:shareParams
                                                           onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) {
                                                               switch (state) {
                                                                   case SSDKResponseStateSuccess:
                                                                       NSLog(@"分享成功!");
                                                                       break;
                                                                   case SSDKResponseStateFail:
                                                                       NSLog(@"分享失败%@",error);
                                                                       break;
                                                                   case SSDKResponseStateCancel:
                                                                       NSLog(@"分享已取消");
                                                                       break;
                                                                   default:
                                                                       break;
                                                               }
                                                           }];
   //删除和添加平台示例
 [sheet.directSharePlatforms removeObject:@(SSDKPlatformTypeWechat)];
//(默认微信,QQ,QQ空间都是直接跳客户端分享,加了这个方法之后,可以跳分享编辑界面分享)
 [sheet.directSharePlatforms addObject:@(SSDKPlatformTypeSinaWeibo)];
//(其它平台默认会跳分享编辑界面,加了这个方法之后可以不跳分享编辑界面,直接点击分享菜单里的选项,直接分享)

5 不显示分享平台显示分享编辑菜单

[ShareSDK showShareEditor:SSDKPlatformTypeWechat
               otherPlatformTypes:@[@(SSDKPlatformTypeSinaWeibo),@(SSDKPlatformTypeTencentWeibo)]
                      shareParams:shareParams
              onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end)
         {}];


显示分享编辑框,只有微信,不显示otherPlatformTypes中的其它选项。

技术分享


6 自定义编辑框

导入

#import <ShareSDK/ShareSDK.h>

#import <ShareSDKUI/SSUIEditorViewStyle.h>

NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
        [shareParams SSDKSetupShareParamsByText:@"分享内容..."
                                         images:imageArray
                                            url:[NSURL URLWithString:@"http://mob.com"]
                                          title:@"分享标题"
                                           type:SSDKContentTypeImage];
        //自定义编辑区样式(非必要)
        //设置iPhone导航栏颜色
        [SSUIEditorViewStyle setiPhoneNavigationBarBackgroundColor:[UIColor redColor]];
        //设置编辑界面背景颜色
        [SSUIEditorViewStyle setContentViewBackgroundColor:[UIColor cyanColor]];
        //设置标题
        [SSUIEditorViewStyle setTitle:@"微信分享"];
        //设置取消按钮标签
        [SSUIEditorViewStyle setCancelButtonLabel:@"算了吧"];
        //设置取消按钮标签文本颜色
        [SSUIEditorViewStyle setCancelButtonLabelColor:[UIColor blackColor]];
        
        [ShareSDK showShareEditor:SSDKPlatformTypeWechat
               otherPlatformTypes:@[@(SSDKPlatformTypeSinaWeibo),@(SSDKPlatformTypeTencentWeibo)]
                      shareParams:shareParams
              onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end)
         {
}];

技术分享

7 隐藏“微信收藏”平台

方法有两种

1 在appDeleagete中修改,这样比较方便。

[ShareSDK registerApp:@"XXXXXXX"
            activePlatforms:@[
                            // 不要使用微信总平台进行初始化
                            //@(SSDKPlatformTypeWechat),
                            // 使用微信子平台进行初始化,即可
                            @(SSDKPlatformSubTypeWechatSession),
                            @(SSDKPlatformSubTypeWechatTimeline),
                            ]
            onImport:^(SSDKPlatformType platformType) {
 
                     switch (platformType)
                     {
                         case SSDKPlatformTypeWechat:
                             [ShareSDKConnector connectWeChat:[WXApi class]];
                             break;
                        default:
                             break;
                     }
 
                 }
            onConfiguration:^(SSDKPlatformType platformType, NSMutableDictionary *appInfo) {
 
              switch (platformType)
              {
                   case SSDKPlatformTypeWechat:
                      [appInfo SSDKSetupWeChatByAppId:@"wx4868b35061f87885"
                                            appSecret:@"64020361b8ec4c99936c0e3999a9f249"];
                      break;
                   default:
                      break;
              }
          }];

2 在某些使用的地方,将SSDKPlatformTypeWechat修改成微信子平台,去掉微信收藏。这个是针对个别地方隐藏。


8 平台内容定制

/**
     * 在定制平台内容分享中,除了设置共有的分享参数外,还可以为特定的社交平台进行内容定制,
     * 如:其他平台分享的内容为“分享内容”,但微信需要在原有的“分享内容”文字后面加入一条链接,则可以如下做法:
     **/
    __weak SHWeiXinViewController *theController = self;
    [theController showLoadingView:YES];
    
    //创建分享参数
    NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
    
    NSArray* imageArray = @[[UIImage imageNamed:@"shareImg.png"]];
    
    if (imageArray) {
        
        [shareParams SSDKSetupShareParamsByText:@"分享内容"
                                         images:imageArray
                                            url:[NSURL URLWithString:@"http://mob.com"]
                                          title:@"分享标题"
                                           type:SSDKContentTypeImage];
        
        [shareParams SSDKSetupWeChatParamsByText:@"分享内容 http://mob.com"
                                           title:@"分享标题"
                                             url:[NSURL URLWithString:@"http://mob.com"]
                                      thumbImage:[UIImage imageNamed:@"shareImg.png"]
                                           image:[UIImage imageNamed:@"shareImg.png"]
                                    musicFileURL:nil
                                         extInfo:nil
                                        fileData:nil
                                    emoticonData:nil
                             sourceFileExtension:nil
                                  sourceFileData:nil
                                            type:SSDKContentTypeAuto
                              forPlatformSubType:SSDKPlatformSubTypeWechatSession];
        
        
        //进行分享
        [ShareSDK share:SSDKPlatformTypeWechat
             parameters:shareParams
         onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
}];


9 分享本地文件(mp3、mp4、docx、pdf等)


NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
    UIImage *imageThumb = [UIImage imageNamed:@"Icon.png"];
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"cattest" ofType:@"mp4"];
    [shareParams SSDKSetupWeChatParamsByText:@"视频分享。。。"
                                       title:@"视频分享"
                                         url:nil
                                  thumbImage:imageThumb
                                       image:imageThumb
                                musicFileURL:nil
                                     extInfo:nil
                                    fileData:nil
                                emoticonData:nil
                         sourceFileExtension:@"mp4"
                              sourceFileData:filePath
                                        type:SSDKContentTypeFile
                          forPlatformSubType:SSDKPlatformSubTypeWechatSession];
    
    //进行分享
    [ShareSDK share:SSDKPlatformSubTypeWechatSession
         parameters:shareParams
     onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
}];

分享文件时:

 *  设置typeSSDKContentTypeFile(例如.mp3.mp4.pdf.docx的分享),设置titlesourceFileExtensionsourceFileData,以及thumbImage参数,如果尚未设置thumbImage则会从image参数中读取图片并对图片进行缩放操作参数

 */

注意(分享失败的两个坑):文件大小不能超过10M,thumbImage图片大小不能超过32k,最好是宽高相等。


10 摇一摇分享

导包

#import <ShareSDK/ShareSDK.h>

#import <ShareSDKExtension/SSEShareHelper.h>

/**
         * 使用ShareSDKExtension插件可以实现摇一摇分享
         * 通过使用SSEShareHelper可以调用开启/结束摇一摇分享方法,在方法的onWillShareHandler参数中可以处理摇一摇后的分享处理操作。
         *
         * 小技巧:
         * 当取得摇一摇事件通知后,如果shareHandler入口不满足分享需求(如需要弹出分享菜单而不是直接分享),可以不调用shareHandler进行分享,而是在block中写入自定义的分享操作。
         * 这样的话摇一摇分享接口实质只充当捕获摇一摇通知的功能。
         **/
        
        __weak SHWeiXinViewController *theController = self;
        
        //开启摇一摇分享功能
        [SSEShareHelper beginShakeShare:nil
                              onEndSake:nil
                     onWillShareHandler:^(SSEShareHandler shareHandler){
             NSLog(@"======开始分享");
             //构造分享参数
             NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
             NSArray* imageArray = @[[UIImage imageNamed:@"shareImg.png"]];
             if (imageArray){
                 [shareParams SSDKSetupShareParamsByText:@"摇着摇着就可以分享出去了,使用ShareSDK分享就是便捷方便。"
                                                  images:imageArray
                                                     url:nil
                                                   title:nil
                                                    type:SSDKContentTypeImage];
                 //显示等待界面
                 [theController showLoadingView:YES];
                 //回调分享
                 if (shareHandler){
                     shareHandler (SSDKPlatformTypeWechat, shareParams);
                 }
             }
         }onStateChanged:^(SSDKResponseState state,NSDictionary *userData,
                           SSDKContentEntity *contentEntity, NSError *error) {
}];

iOS 9 异常

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app‘s Info.plist file.

问题描述:在iOS9下,系统默认会拦截对http协议接口的访问,因此无法获取http协议接口的数据。对ShareSDK来说,具体表现可能是,无法授权、分享、获取用户信息等。

还可能造成我们的编辑界面里传http之类的网络图片的时候,我们的编辑界面不会显示图片截图,解决的办法或者全面关闭https,允许使用http请求;或者把图片的域添加;又或者选择使用https的图片

解决方案(以下方法2选1):

(1)、暂时退回到http协议。

具体方法:

在项目的info.plist中添加一个Key:NSAppTransportSecurity,类型为字典类型。

然后给它添加一个Key:NSAllowsArbitraryLoads,类型为Boolean类型,值为YES;

技术分享

(2)http://wiki.mob.com/ios9-对sharesdk的影响(适配ios-9必读)/


demo下载

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!