文档章节

自定义集合分享(如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
深圳
程序员
私信 提问
腾讯技术分享:Android版手机QQ的缓存监控与优化实践

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

JackJiang2011
04/08
0
0
项目需求讨论:截图—涂鸦—分享

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

青蛙要fly
2017/04/12
0
0
怎么使用微信JSSDK的自定义分享功能

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

Jack088
2016/05/18
381
0
支持Linux下聊微信,跨服聊天神器Franz

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

木子昭
10/25
0
0
Android 开源社会化登录 SDK,支持微信,微博, QQ

这半年做的项目被大老板 ban 掉了,略伤感。。。 这几天整理了一下项目中负责的社会化登录和分享模块, SDK 集成本身是很简单的事情,但是三家平台的接口差异很大,如果只见简单的把代码垒在...

张海龙
2015/11/23
265
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 你是靠自己努力才失败的

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 小小编辑:推荐歌曲 《Raveena》- Raveena 《Raveena》- Raveena 手机党少年们想听歌,请使劲儿戳(这里) 11月18日,俞敏洪在某论坛演讲中称...

小小编辑
37分钟前
87
6
firewalld

1. firewalld 是什么 CentOS中默认是有 firewalld, iptables, etablesd firewalld 是 CentOS7/RadHat7 中默认的防火墙管理工具. firewalld 工具用来管理里netfilter, 不过底层还是调用的还是...

Fc丶
54分钟前
2
0
Java 源代码和 C 源代码的运行区别

与其他程序的执行方式和编译方式不同。 Java 源代码需要进行编译成字节码后在 Java 虚拟机上运行,这样 Java 程序能够保持独立性和跨平台功特性。 请参考下图。 https://www.cwiki.us/pages...

honeymose
今天
6
0
Apache限定目录解析PHP,限制user_agent,PHP相关的配置

Apache限定目录解析PHP 配置前访问upload/index.php [root@test-a ~]# curl -x192.168.77.139:80 'www.test.com/upload/index.php'This is upload diretory 配置,/usr/local/apache2.4/......

野雪球
今天
6
0
java.util.Concurrent.Exchanger源码

类图 源码: package java.util.concurrent;import java.util.concurrent.atomic.AtomicInteger;import java.util.concurrent.atomic.AtomicReference;import java.util.concurrent......

狼王黄师傅
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部