美文网首页IOS个人开发iOS工作系列iOS开发
iOS单独集成QQ分享功能的苦逼经验

iOS单独集成QQ分享功能的苦逼经验

作者: iHTCboy | 来源:发表于2015-02-27 23:17 被阅读14566次

    这个过程其实很简单,就是腾讯的文档真的不敢恭维!

    如果只是想把一段文字,或一张图片分享到QQ(包括好友、群、讨论组、空间),那么你看文档会感觉到很无助,不知道从那里开始,并且地魔(demo)跑不起来!(ps,腾讯的员工是不是经常跳槽到微信?)

    (1)首先,把TencentOpenAPI.framework、TencentOpenApi_IOS_Bundle.bundle导入工程中。

    (ps,我在搜索资料时,看到有人说TencentOpenAPI.framework要放在工程根目录,我在Xcode6下试了一下,结果是不放根目录也行,同时Xcode6下,导入framework就好,其它操作都自动了,官方sdk文档好像好久没更新了,我又想吐槽?不要阻止我!what's up?)

    (2)添加SDK依赖的系统库文件。

    “Security.framework”、“libiconv.dylib”、“SystemConfiguration.framework”、“CoreGraphics.Framework”、“libsqlite3.dylib”、“CoreTelephony.framework”、“libstdc++.dylib”、“libz.dylib”。

    (3)在AppDelegate.h中 导入 头文件

    #import <TencentOpenAPI/TencentOAuth.h>

    4)在AppDelegate.m中向腾讯注册。(ps:只是集成分享功能,所以不用授权)

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    [[TencentOAuth alloc] initWithAppId:QQKey andDelegate:nil]; //注册

    【要特别注意以下3点:

    1、上面代码中QQkey为APP ID,而不是APP KEY,并且与URL schemes不相同。

    2、URL type 里的 URL schemes  = tencent + appid。(因为微信、微博的两个值是相同的,所以要注意一下。)

    appid是1104292447

    3、这里delegate为空,因为没有授权,所以不用代理。

    (5)重写AppDelegate 的handleOpenURL和openURL方法

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

    return[TencentOAuth HandleOpenURL:url];

    -(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{

    return[TencentOAuth HandleOpenURL:url];

    }

    (ps:不用实现TencentSessionDelegate代理方法,手机QQ里分享时,会等到分享成功后,才会跳回原应用,所以不用监听发送情况)

    (6)设置Bundle display name属性值。

    如果是Xcode 6.0创建工程时,默认可能没有单独设置Bundle display name属性值。但是因为SDK需要用到Bundle display name的值,所以务必请检查确保这个属性存在,如果没有请添加上。如下图所示:

    Bundle display name 为桂林理工大学

    (ps:注意的是,这个名字会用在2个地方:1、应用显示的名字,2、分享到QQ界面时显示的“来自”小尾巴(到空间时,小尾巴是你注册腾讯appid时写的应用名字)

    (7)在实现分享的ViewCotroller里加入头文件

    #import  <TencentOpenAPI/QQApi.h>

    #import <TencentOpenAPI/QQApiInterface.h>

    (8)实现分享内容的代码(以分享图片为例)

    //用于分享图片内容的对象

    QQApiImageObject *imgObj = [QQApiImageObject objectWithData:imgData

    previewImageData:previewImage

    title:self.newsModel.title

    description:@"由 桂林理工大学-校园通 转码"];

    SendMessageToQQReq *req = [SendMessageToQQReq reqWithContent:imgObj];

    //将内容分享到qq

    QQApiSendResultCode sent = [QQApiInterface sendReq:req];

    其它内容,大家还是磨磨官方文档,或者用集成化的sdk吧,同时希望腾讯的iOS开发者不要在打酱油了~.~

    nice~

    相关连接:

    QQ SDK 介绍页

    QQSDK IOS_API调用说明

    《QQSDK iOS SDK环境搭建》下载

    《QQSDK iOS SDK API使用说明》下载

    - 如果有什么疑问,可以在评论区一起讨论;

    - 如果有什么不正确的地方,欢迎指导!

    > 注:本文首发于iHTCboy's blog,如若转载,请注明来源。

    相关文章

      网友评论

      • d09d282ea5aa:你好 我分享单张图片到会话列表没有问题 但是分享到qq空间就调不起空间的界面
      • 4f6a2617054e:为啥分享到QQ的图片模糊了,分享到微信就没事呢
        iHTCboy:@渣渣_丹 被QQ压缩了:sleepy:
      • LD_左岸: -QQAPI- ConfigManager.m:113 @_@
        能分享给QQ好友 分享成功也能返回我的应用
        就是Debug区打印这个不知道什么意思
      • Yaanco:这sdk是真蛋疼
      • GavinKang:写的不错,我解决了分享ZIP格式的问题
      • GavinKang:直接分享文件,例如:ZIP格式的
      • GavinKang:不可以直接文件到QQ吧???
      • miliPolo:请问怎么分享本地音乐文件,我看本地分享大小是有限制的
        iHTCboy:@miliPolo 好的,感谢。虽然这篇文章已久,而且已经很久没有单独的开发集成分享功能。所以暂时无法更新,如果你有想法,可以自己写一篇文章,为大家开导一下,谢谢。
        miliPolo:@iHTCboy 查了下文档,现在可以分享了
        iHTCboy:@miliPolo 现在可以分享大的音乐文件了吗?这个很没有接过哦,你要看一下文档有没有写,这种SB的问题就是看文档没有什么好说的,要不就是看他们的头文件的方法有没有备注?
      • JKCQW:QQ分享,一直返回错误码-2,为指定分享到QQ或TIM;检查了依赖库,检查了Other Linker Flag,检查了URL Schemes,检查了LSApplicationQueriesSchemes字段,都和能成功分享的Demo一样,但还是返回-2。最后我甚至把TencentOAuth的初始化删了,还是返回-2。请问遇到过这种问题吗?
        面向copy编程的白丁:请`setShareDestType`,
        例如
        QQApiTextObject* object = [QQApiTextObject objectWithText:@"分享的内容"];
        [object setShareDestType:ShareDestTypeQQ];
      • 水户洋平_Psist:"上面代码中QQkey为APP ID,而不是APP KEY" 这句话中的 APP KEY是指什么?楼主
      • 清眸如画:请问集成qq分享需要企业认证吗?
        iHTCboy:@约定一生 不用的,进入腾讯开放平台,注册时可以选择企业或个人认证。
      • de0845ca7cd8:QQ分享图片,图片有没有大小限制的?
        iHTCboy:@不太会 有的,看sdk方法有注解。图片是1M。
      • Mr孙:我的这个位置,老是提示啊,什么问题?
        [[TencentOAuth alloc] initWithAppId:QQKey andDelegate:self];
        AppDelegate.mm:293:5: Expression result unused
      • 14a96d7da267:刚刚那个问题我解决了,请解怎么回调分享是否成功?
        iHTCboy:@风起时灬想你 在delegate方法中回调的,你可以监听然后提示
      • 14a96d7da267:求解我这边一直-canOpenURL: failed for URL: "mqq://" - error: "This app is not allowed to query for scheme mqq"
        咋办啊
        chopin:@iOS开发的毛毛虫 配置了还是这样
        GavinKang:你是不是没有配置QQ的白名单??
        Flysheng:我也是显示这个 什么原因?
      • 夏木数石:腾讯,微信,科大讯飞的文档,都写成一堆狗屎。。
      • 042a0e1be73f:最讨厌看腾讯的文档!!!
      • aa22b04f123c:一直说qq分享api不支持是怎么回事啊
        042a0e1be73f:@书呆子Crane 还要加这些<string>mqqapi</string>
        <string>mqq</string>
        <string>mqqOpensdkSSoLogin</string>
        <string>mqqconnect</string>
        <string>mqqopensdkdataline</string>
        <string>mqqopensdkgrouptribeshare</string>
        <string>mqqopensdkfriend</string>
        <string>mqqopensdkapi</string>
        <string>mqqopensdkapiV2</string>
        <string>mqqopensdkapiV3</string>
        <string>mqzoneopensdk</string>
        <string>wtloginmqq</string>
        <string>wtloginmqq2</string>
        <string>mqqwpa</string>
        <string>mqzone</string>
        <string>mqzonev2</string>
        <string>mqzoneshare</string>
        <string>wtloginqzone</string>
        <string>mqzonewx</string>
        <string>mqzoneopensdkapiV2</string>
        <string>mqzoneopensdkapi19</string>
        <string>mqzoneopensdkapi</string>
        <string>mqqbrowser</string>
        <string>mttbrowser</string>
      • NS西北风:qq官方demo。。亏他妈的做的出来,,一坨屎。
      • da761f6701eb:极度蛋疼的qq sdk,代码乱七八糟,文档也是乱七八糟
      • 12cbf7343e53:坑爹的SDK还漏说了依赖库,然后不知道为嘛竟然不支持分享图片到QQ空间……不知道其他APP怎么实现的
        vanessa_imp:@HeminWon 采用发说说的形式添加一张图片,看起来相当于是分享图片到空间
        HeminWon:请问后来如何解决的

      本文标题:iOS单独集成QQ分享功能的苦逼经验

      本文链接:https://www.haomeiwen.com/subject/zcvpxttx.html