文档章节

自定义集合分享(如QQ,微信等)

萍水相逢OSC
 萍水相逢OSC
发布于 2016/05/17 15:21
字数 523
阅读 157
收藏 0

开始准备步骤跟友盟一样的,这里忽略(例如注册账号,在项目中加入AppKey等)


以下代码是集合分享的调用方法(.h文件):

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <MBProgressHUD.h>

#import "WXApiObject.h"

@interface SharesObjects : NSObject

@property (nonatomic, strong) MBProgressHUD *HUD;

//微信
+ (BOOL)sendWeiXinLinkURL:(NSString *)urlString
            TagName:(NSString *)tagName
              Title:(NSString *)title
        Description:(NSString *)description
         ThumbImage:(UIImage *)thumbImage
            InScene:(enum WXScene)scene;

//QQ
+ (void)sendQQWithURL:(NSURL*)url
                title:(NSString*)title
          description:(NSString*)description
     previewImageData:(NSData*)data;

//WeiBo
+ (void)sendWeiBoWithURL:(NSURL*)url
                    title:(NSString*)title
              description:(NSString*)description
         previewImageData:(NSData*)data;

@end

以下代码是完成分享的调用方法(.m文件):

#import "SharesObjects.h"

#import "WXApi.h"
#import "WeiboSDK.h"
#import <TencentOpenAPI/QQApiInterface.h>
#import <TencentOpenAPI/QQApiInterfaceObject.h>
#import <TencentOpenAPI/TencentOAuth.h>

@implementation SharesObjects

#pragma mark - 分享微信
+ (WXMediaMessage *)messageWithTitle:(NSString *)title
                         Description:(NSString *)description
                              Object:(id)mediaObject
                          MessageExt:(NSString *)messageExt
                       MessageAction:(NSString *)action
                          ThumbImage:(UIImage *)thumbImage
                            MediaTag:(NSString *)tagName {
    WXMediaMessage *message = [WXMediaMessage message];
    message.title = title;
    message.description = description;
    message.mediaObject = mediaObject;
    message.messageExt = messageExt;
    message.messageAction = action;
    message.mediaTagName = tagName;
    [message setThumbImage:thumbImage];
    
    return message;
}

+ (SendMessageToWXReq *)requestWithText:(NSString *)text
                         OrMediaMessage:(WXMediaMessage *)message
                                  bText:(BOOL)bText
                                InScene:(enum WXScene)scene {
    SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
    req.bText = bText;
    req.scene = scene;
    if (bText)
        req.text = text;
    else
        req.message = message;
    
    return req;
}


+ (BOOL)sendWeiXinLinkURL:(NSString *)urlString
            TagName:(NSString *)tagName
              Title:(NSString *)title
        Description:(NSString *)description
         ThumbImage:(UIImage *)thumbImage
            InScene:(enum WXScene)scene {
    
    WXWebpageObject *ext = [WXWebpageObject object];
    ext.webpageUrl = urlString;
    
    WXMediaMessage *message = [self messageWithTitle:title
                                         Description:description
                                              Object:ext
                                          MessageExt:nil
                                       MessageAction:nil
                                          ThumbImage:thumbImage
                                            MediaTag:tagName];
    
    SendMessageToWXReq* req = [self requestWithText:nil
                                     OrMediaMessage:message
                                              bText:NO
                                            InScene:scene];
    return [WXApi sendReq:req];
}

#pragma mark - 分享QQ好友

+ (void)sendQQWithURL:(NSURL*)url title:(NSString*)title description:(NSString*)description previewImageData:(NSData*)data
{
    TencentOAuth *tencentOAuth = [[TencentOAuth alloc] initWithAppId:@"1104759057" andDelegate:nil];
    tencentOAuth.redirectURI = @"www.qq.com";
    
    QQApiNewsObject *newsObj = [QQApiNewsObject
                                objectWithURL:url
                                title:title
                                description:description
                                previewImageData:data];

    SendMessageToQQReq *req = [SendMessageToQQReq reqWithContent:newsObj];
    //将内容分享到qq
    QQApiSendResultCode sent = [QQApiInterface sendReq:req];
    //将内容分享到qzone
//    QQApiSendResultCode sent = [QQApiInterface SendReqToQZone:req];
    
    [self handleSendResult:sent];
}

+ (void)handleSendResult:(QQApiSendResultCode)sendResult
{
    switch (sendResult)
    {
        case EQQAPIAPPNOTREGISTED:
        {
            NSLog(@"App未注册");
            
            break;
        }
        case EQQAPIMESSAGECONTENTINVALID:
        case EQQAPIMESSAGECONTENTNULL:
        case EQQAPIMESSAGETYPEINVALID:
        {
            NSLog(@"发送参数错误");
            
            break;
        }
        case EQQAPIQQNOTINSTALLED:
        {
            NSLog(@"未安装手机QQ");
            break;
        }
        case EQQAPIQQNOTSUPPORTAPI:
        {
            NSLog(@"API接口不支持");
            break;
        }
        case EQQAPISENDFAILD:
        {
            NSLog(@"发送失败");
            break;
        }
        default:
        {
            break;
        }
    }
}

#pragma mark - 微博分享

+ (void)sendWeiBoWithURL:(NSURL*)url title:(NSString*)title description:(NSString*)description previewImageData:(NSData*)data
{
    WBMessageObject *message = [WBMessageObject message];
    
//    //标题、图片
    message.text = [NSString stringWithFormat:@"%@%@", description, url.absoluteString];
    WBImageObject *image = [WBImageObject object];
    image.imageData = data;
    message.imageObject = image;
    
    WBAuthorizeRequest *authRequest = [WBAuthorizeRequest request];
    authRequest.redirectURI = @"http://www.sina.com";
    authRequest.scope = @"all";
    
    WBSendMessageToWeiboRequest *request = [WBSendMessageToWeiboRequest requestWithMessage:message authInfo:authRequest access_token:nil];

    [WeiboSDK sendRequest:request];
}

@end

 

© 著作权归作者所有

共有 人打赏支持
萍水相逢OSC
粉丝 104
博文 16
码字总数 4469
作品 0
深圳
程序员
私信 提问
怎么使用微信JSSDK的自定义分享功能

微信在去年发布JSSDK后,把包括自定义分享在内的众多网页服务接口进行了统一。现在,如果要想自定义分享自己的网页信息给好友或朋友圈,就最好使用这个统一的网页服务接口。没有认证微信号的...

Jack088
2016/05/18
381
0
项目需求讨论:截图—涂鸦—分享

大家好,又到了新的一期项目需求分析。台下的观众举起手,让我看到你们。 同时我已经上传该项目:截屏及仿支付宝涂鸦功能 欢迎各位点个star哦。(⊙o⊙) 开始秋名山飘移之路 这个也是具体项目...

青蛙要fly
2017/04/12
0
0
腾讯技术分享:Android版手机QQ的缓存监控与优化实践

本文内容整理自公众号腾讯Bugly,感谢原作者的分享。 1、问题背景 对于Android应用来说,内存向来是比较重要的性能指标。内存占用过高,会影响应用的流畅度,甚至引发OOM,非常影响用户体验。...

JackJiang2011
2018/04/08
0
0
支持Linux下聊微信,跨服聊天神器Franz

妙用Steam的一个方法, 可以在Linux下安装Steam, 与好友进行聊天 以上方法的前提是, 对方先得有Steam账户 为了解决以上问题, 我找到了一个名为Franz的软件, 它为Windows, Mac, Linux平台都提供...

木子昭
2018/10/25
0
0
微信公众号

微信更新到最新版本后,微信公众号自定义链接分享给"朋友","朋友圈"无效,始终分享的为当前页面,而不是我自定义链接link,但是分享到qq好友,qq空间没问题

wang汪ran
2017/05/02
139
1

没有更多内容

加载失败,请刷新页面

加载更多

mybaties中通用mapper的基本使用

使用Mybatis的开发者,大多数都会遇到一个问题,就是要写大量的SQL在xml文件中,除了特殊的业务逻辑SQL之外,还有大量结构类似的增删改查SQL。而且,当数据库表结构改动时,对应的所有SQL以及...

嘴角轻扬30
22分钟前
1
0
都996了,研发效能还是提不起来,关键在这里

上一篇我们介绍了研发效能提升目标及其度量方法。(本文是阿里“研发效能提升系列”的第2篇,第1篇“研发效能的定义和度量”敬请期待【下周三】的钉钉群直播:钉钉搜索群号 23192180) 研发效...

zhaowei121
22分钟前
1
0
阿里重磅开源首款自研科学计算引擎Mars,揭秘超大规模科学计算

日前,阿里巴巴正式对外发布了分布式科学计算引擎 Mars 的开源代码地址,开发者们可以在pypi上自主下载安装,或在Github上获取源代码并参与开发。 此前,早在2018年9月的杭州云栖大会上,阿里...

阿里云云栖社区
25分钟前
2
0
大牛是怎么思考设计SQL优化方案的?

在进行MySQL的优化之前,必须要了解的就是MySQL的查询过程,很多查询优化工作实际上就是遵循一些原则,让MySQL的优化器能够按照预想的合理方式运行而已。 图-MySQL查询过程 一、优化的哲学 ...

Java填坑路
33分钟前
1
0
docker1.7 Error: Path not specified 错误

在centos6.1上,用yum命令安装的docker版本是1.7 。在拷贝文件的时候报 Error: Path not specified错误。 错误消息“错误:路径未指定” 在docker1.8.0中已修复。 修复方法: 直接下载1.9.1...

applepaihs
34分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部