iOS分享(微信、qq、微博)

本文会介绍iOS常用的第三方分享(本文是分享带标题及藐视的h5地址),包括微信、QQ、微博,文章前部分会介绍每个平台的API集成及使用方法,文章后部分会介绍对三方分享(或者登陆)集成一起的三方框架ShareSDK(友盟分享也是可以的)。

微信分享:

集成前先去微信开放平台(地址https://open.weixin.qq.com)注册账号及注册APP。注册APP的时候注意最好是iOS版和安卓版注册到一起,不然只注册一个端会导致注册另一端的时候提现APP已存在的尴尬局面。微信分享接口是基础接口不需要企业认证就可使用,审核期三天左右。微信登录及支付接口是高级接口,需要企业认证通过之后才能申请使用。企业认证费用300元/次。

1.用cocoapods导入微信SDK

pod 'WechatOpenSDK'

2.在.pch文件中导入微信SDK头文件

#import "WXApi.h"

3.在AppDelegate文件中注册微信SDK

[WXApi registerApp:KWeChatAppID];//传入微信平台注册的APPkey

4.唤起微信要添加这个方法(下面QQ、微博也是这个方法不在细说)

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

#pragma makr ios9之后方法

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options

5.添加URL Schemes

project~>TARGETS~>info~>URL Type

下图是多个三方平台的URL Schemes,一下其他平台不在说明。

url

6.分享代码

先判断手机上是否有安装微信,未安装则不分享

[WXApi isWXAppInstalled]

分享代码

WXMediaMessage *message = [WXMediaMessage message];

message.title = title;

message.description =  mes;

if (imaUrl.length > 0) {

    NSData *data = UIImageJPEGRepresentation([UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imaUrl]]], 0.3);

    UIImage *ima = [UIImage imageWithData:data];

    UIImage *setImage = [self compressImage:ima toByte:30000];

    [message setThumbImage:setImage];

}else{

    [message setThumbImage:[UIImage imageNamed:SharPlaceHold]];

}

WXWebpageObject *page = [WXWebpageObject object];

page.webpageUrl = url;

message.mediaObject = page;

SendMessageToWXReq *req = [[SendMessageToWXReq alloc]init];

req.bText = NO;

req.message = message;

req.scene = WXSceneTimeline;//聊天WXSceneSession  朋友圈WXSceneTimeline 微信收藏WXSceneFavorite

[WXApi sendReq:req]

微信分享的三个渠道,微信好友、朋友圈、微信收藏参数如上scene

7.分享回调

在AppDelegate文件中添加协议WXApiDelegate

回调方法

-(void) onResp:(BaseResp*)resp

注意一点,微信和qq的回调方法竟然是同一个,毕竟都是腾讯家的孩子。那就要在回调方法里面判断是微信还是QQ了,注意的是微信登录的回调也在这个方法里面(腾讯真TM的省事)。

QQ分享:

1.作者集成QQ分享的时候,腾讯开放平台暂不支持cocoapods集成QQSDK,请大家移步腾讯开放平台去下载SDK手动导入

2.在.pch文件中导入微信SDK头文件

#import <TencentOpenAPI/TencentOAuth.h>//qq

#import <TencentOpenAPI/QQApiInterface.h>

#import <TencentOpenAPI/QQApiInterfaceObject.h>

3.在AppDelegate文件中注册qq SDK

TencentOAuth *ten = [[TencentOAuth alloc] initWithAppId:KQQAppID andDelegate:self];//注册

4.唤起QQ(方法参考上面唤起微信,方法里面是并列)

5.添加URL Schemes(方法参考上面微信)

6.分享实现代码

老规矩先判断手机上是否安装有QQ

[TencentOAuth iphoneQQInstalled]

分享代码
        QQApiNewsObject *new = [QQApiNewsObject objectWithURL:[NSURL URLWithString:url] title:title description:mes previewImageURL:[NSURL URLWithString:imaUrl]];
        SendMessageToQQReq *req = [SendMessageToQQReq reqWithContent:new];
        [QQApiInterface sendReq:req];//分享到QQ好友
[QQApiInterface SendReqToQZone:req];//分享到空间

7.分享回调

老规矩协议QQApiInterfaceDelegate

回调方法同上微信,你不再介绍

微博分享:

1.用cocoapods导入微博SDK

pod "Weibo_SDK", :git => "https://github.com/sinaweibosdk/weibo_ios_sdk.git"

导入的时候一直显示找不到,不要慌,加上地址就行了

2.在.pch文件中导入微信SDK头文件

#import "WeiboSDK.h"

3.在AppDelegate文件中注册微博SDK

    //控制台输出(发布时要注释掉)

    [WeiboSDK enableDebugMode:YES];

    //注册

    [WeiboSDK registerApp:KWBAppKey];

4.唤起微信要添加这个方法(见上面微信)

5.添加URL Schemes (见上面微信)

6.分享代码

新浪微博不用判断手机是否安装,新浪微博没有安装的话会去跳转网页版的分享。

WBMessageObject *obj = [WBMessageObject message];

    obj.text = [NSString stringWithFormat:@"%@ %@", title, url];

    WBSendMessageToWeiboRequest *request = [WBSendMessageToWeiboRequest requestWithMessage:obj];

    [WeiboSDK sendRequest:request];

需要注意的是,新浪微博是不支持URL和文字同时存在的,但是这能难道我们伟大的程序员吗,把分享的文本和url拼接到一起当成分享文案就行了。

7.回调

#pragma makr微博回调

-(void)didReceiveWeiboResponse:(WBBaseResponse *)response

{

    if ([response isKindOfClass:WBSendMessageToWeiboRequest.class]) {

        //分享

        if (response.statusCode == WeiboSDKResponseStatusCodeSuccess) {

            [self showAlert:@"已分享" type:AlertViewType_Toast];

            //[[NSNotificationCenter defaultCenter] postNotificationName:Notication_SharSuccess object:nil];

        }else if (response.statusCode == WeiboSDKResponseStatusCodeShareInSDKFailed){

            [self showAlert:@"已取消" type:AlertViewType_Toast];

        }

        

    }else if([response isKindOfClass:WBAuthorizeResponse.class]){

        //登录

        NSString *userID = [(WBAuthorizeResponse *)response userID];

        if (userID) {

            NSDictionary *dic = @{@"info":userID};

            [[NSNotificationCenter defaultCenter] postNotificationName:Notication_WeiBoLogin object:nil userInfo:dic];

        }

 

    }

}

微博的分享和登录的回调也是在一起的(真tm的懒),所以在回调方法里面需要判断一下。

以上是三个平台的分享流程,接下来我会介绍一个三方的框架ShareSDK。用完之后你会发现,我tm是个傻吊,竟然这么方便。

ShareSDK分享:

ShareSDK分享是把主流的一些三方平台的分享集成在了一起,微信、QQ、新浪、推特、人人网、开心网等等等。当然需要分享到那个平台让然需要相关的SDK,下面就介绍微信、QQ、新浪三个平台。集成之前还是需要去各个三方平台注册响应的账号及APP,拿到appkey。然后把这个APPkey去添加到ShareSDK平台中。

1.用cocoapods导入SDK

  #ShareSDK

  pod 'mob_sharesdk'

  pod 'mob_sharesdk/ShareSDKExtension'

  pod 'mob_sharesdk/ShareSDKPlatforms/QQ'

  pod 'mob_sharesdk/ShareSDKPlatforms/SinaWeibo'

  pod 'mob_sharesdk/ShareSDKPlatforms/WeChat'

注意,SDK有很多,需要用那个平台在导入那个平台,没必要导入无用的平台。

2.在.pch文件中导入SDK头文件

#import <ShareSDK/ShareSDK.h>

3.在AppDelegate文件中注册SDK

    [ShareSDK registPlatforms:^(SSDKRegister *platformsRegister) {

        //新浪

        [platformsRegister setupSinaWeiboWithAppkey:kSinaAppKey appSecret:kSinaAppSecret redirectUrl:kSinaRedirectUrl];

         //QQ

        [platformsRegister setupQQWithAppId:kQQAppID appkey:kQQAppKey];

        //微信

        [platformsRegister setupWeChatWithAppId:kWeChatAppID appSecret:kWeChatAppSecret];        

    }];

4.配置URL Schemes见上面微信

5.分享及回调代码

    NSMutableDictionary *params = [NSMutableDictionary dictionary];

    [params SSDKSetupShareParamsByText:content images:self.shareModel.icon url:[NSURL URLWithString:self.shareModel.url] title:self.shareModel.title type:SSDKContentTypeAuto];

    [ShareSDK share:shareType parameters:params onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {

        switch (state) {

            case SSDKResponseStateUpload:

                // 分享视频的时候上传回调,进度信息在 userData

                break;

            case SSDKResponseStateSuccess:

                //成功

                [self showAlert:@"分享成功" type:ENAlertType_Tost];

                break;

            case SSDKResponseStateFail:

            {

                [self showAlert:@"分享失败" type:ENAlertType_Tost];

                break;

            }

            case SSDKResponseStateCancel:

                //取消

                [self showAlert:@"取消分享" type:ENAlertType_Tost];

                break;

            default:

                break;

        }

    }];

注意,SSDKContentTypeAuto参数是分享的类型,文本、图片、url等等;shareType是分享的渠道,新浪、微信、qq等。分享全部搞定。使用中如有疑问可私聊作者。

 

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值