iOS 分享功能开发

iOS 开发过程中可能会遇到需要进行第三方分享的需求,比如向QQ,微信,微博等分享

如下图

我们今天要讲到的方式是使用了一个第三方工具: http://www.sharesdk.cn

一,注册账号

去官网注册:http://www.sharesdk.cn

创建应用,最终获得 App Key,App Secret

二,SDK集成

下载SDK

把下载的SDK拖到项目工程,在弹出的对话框中选中"Copy items if needed"和"Create groups",并点击“Finish“按钮

添加依赖库文件

必须添加的依赖库:

SystemConfiguration.framework

QuartzCore.framework

CoreTelephony.framework

libicucore.dylib

libz.1.2.5.dylib

Security.framework

根据社交平台需要添加的依赖库

Social.framework    腾讯微博

Accounts.framework  腾讯微博

MessageUI.framework 短信和邮件

libstdc++.dylib   QQ好友和QQ空间SSO授权需要(新注册的腾讯开放平台帐号只支持SSO授权权限)

libsqlite3.dylib   QQ好友和QQ空间SSO授权需要(新注册的腾讯开放平台帐号只支持SSO授权权限)

CoreMotion.framework   Google+

CoreLocation.framework Google+

MediaPlayer.framework  Google+

CoreText.framework   Google+

AssetsLibrary.framework    Google+

AddressBook.framework  Google+

到此为止SDK集成就算完成 下来我们开始代码部分

三,初始ShareSDK和社交平台

在AppDelegate.m中添加ShareSDK头文件

1.设置根视图控制器

必须设置rootViewController。如果使用storyBoard,系统会自动设置根视图控制器。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

    _window=[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
    _window.backgroundColor =[UIColor colorWithRed:249/255.0 green:249/255.0 blue:249/255.0 alpha:1];
    HelpViewController *mainController=[[HelpViewController alloc]init];
    _window.rootViewController=mainController;
    [_window makeKeyAndVisible];

    return YES;
}

以上示例代码中讲 HelpViewController 的一个对象设置为了 此应用的rootViewcontroller;

2.初始化ShareSDK

导入头文件,加上初始化方法。

#import <ShareSDK/ShareSDK.h>
    //1.初始化ShareSDK应用,字符串"iosv1101"是应该换成你申请的ShareSDK应用中的Appkey
    [ShareSDK registerApp:@"iosv1101"];

    //2. 初始化社交平台
    //2.1 代码初始化社交平台的方法
    [self initializePlat];

[self initializePlat ]  方法见下一步(此处以微信,qq,腾讯微博 ,新浪微博为例);

3.初始化社交平台

可以用代码初始化或在ShareSDK开发者后台的社会化平台设置中填入社交平台的信息。

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

社交平台的AppKey、AppSecret、回调地址等需要您自已去相应平台新建应用获取。

- (void)initializePlat
{
    /**
     连接微信应用以使用相关功能,此应用需要引用WeChatConnection.framework和微信官方SDK
     http://open.weixin.qq.com上注册应用,并将相关信息填写以下字段
     **/
    [ShareSDK connectWeChatWithAppId:@""
                           appSecret:@""
                           wechatCls:[WXApi class]];
    /**
     连接QQ应用以使用相关功能,此应用需要引用QQConnection.framework和QQApi.framework库
     http://mobile.qq.com/api/上注册应用,并将相关信息填写到以下字段
     **/
    //旧版中申请的AppId(如:QQxxxxxx类型),可以通过下面方法进行初始化
    //    [ShareSDK connectQQWithAppId:@"QQ075BCD15" qqApiCls:[QQApi class]];

    [ShareSDK connectQQWithQZoneAppKey:@""
                     qqApiInterfaceCls:[QQApiInterface class]
                       tencentOAuthCls:[TencentOAuth class]];

    //
    /**
     连接腾讯微博开放平台应用以使用相关功能,此应用需要引用TencentWeiboConnection.framework
     http://dev.t.qq.com上注册腾讯微博开放平台应用,并将相关信息填写到以下字段

     如果需要实现SSO,需要导入libWeiboSDK.a,并引入WBApi.h,将WBApi类型传入接口
     **/
    [ShareSDK connectTencentWeiboWithAppKey:@""
                                  appSecret:@""
                                redirectUri:@"http://www.sharesdk.cn"
                                   wbApiCls:[WeiboApi class]];
    //

    /**
     连接QQ空间应用以使用相关功能,此应用需要引用QZoneConnection.framework
     http://connect.qq.com/intro/login/上申请加入QQ登录,并将相关信息填写到以下字段

     如果需要实现SSO,需要导入TencentOpenAPI.framework,并引入QQApiInterface.h和TencentOAuth.h,将QQApiInterface和TencentOAuth的类型传入接口
     **/
    //    [ShareSDK connectQZoneWithAppKey:@""
    //                           appSecret:@""
    //                   qqApiInterfaceCls:[QQApiInterface class]
    //                     tencentOAuthCls:[TencentOAuth class]];

    /**
     连接新浪微博开放平台应用以使用相关功能,此应用需要引用SinaWeiboConnection.framework
     http://open.weibo.com上注册新浪微博开放平台应用,并将相关信息填写到以下字段
     **/
    [ShareSDK connectSinaWeiboWithAppKey:@""
                               appSecret:@""
                             redirectUri:@"http://www.sharesdk.cn"];

}

四,设置URL Scheme

1.需要依赖客户端分享或者要支持SSO授权(可以理解成跳到客户端授权)的平台都需要配置平台的URL Scheme(应用分享到社交平台后通过识别URL Scheme返回应用)。具体配置URL Scheme请参考iOS配置SSO授权

(http://wiki.mob.com/%E9%85%8D%E7%BD%AEsso%E6%8E%88%E6%9D%83-2/)。

2.需要在AppDelegate.m中添加处理打开链接的方法

- (BOOL)application:(UIApplication *)application
      handleOpenURL:(NSURL *)url
{
    return [ShareSDK handleOpenURL:url
                        wxDelegate:self];
}

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation
{
    return [ShareSDK handleOpenURL:url
                 sourceApplication:sourceApplication
                        annotation:annotation
                        wxDelegate:self];
}

五,构造分享内容并分享

1.构造一个id<ISSContent>类型的对象,把需要分享的标题、内容、图片、URL等 包装在这个对象。

在需要分享的viewController 中导入头文件

#import <ShareSDK/ShareSDK.h>

在需要分享的地方 实现如下方法

比如在点击一个button的时候调用方法 shareAct

-(void)shareAct:(id)sender
{
//
    NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"ShareSDK" ofType:@"jpg"];

    //1、构造分享内容
    id<ISSContent> publishContent = [ShareSDK content:@"要分享的内容"
                                       defaultContent:@"默认内容"
                                                image:[ShareSDK imageWithPath:imagePath]
                                                title:@"ShareSDK"
                                                  url:@"http://www.mob.com"
                                          description:@"这是一条演示信息"
                                            mediaType:SSPublishContentMediaTypeNews];
    //1+创建弹出菜单容器(iPad必要)
    id<ISSContainer> container = [ShareSDK container];
    [container setIPadContainerWithView:sender arrowDirect:UIPopoverArrowDirectionUp];

    //2、弹出分享菜单
    [ShareSDK showShareActionSheet:container
                         shareList:nil
                           content:publishContent
                     statusBarTips:YES
                       authOptions:nil
                      shareOptions:nil
                            result:^(ShareType type, SSResponseState state, id<ISSPlatformShareInfo> statusInfo, id<ICMErrorInfo> error, BOOL end) {

                                //可以根据回调提示用户。
                                if (state == SSResponseStateSuccess)
                                {
                                    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"分享成功"
                                                                                    message:nil
                                                                                   delegate:self
                                                                          cancelButtonTitle:@"OK"
                                                                          otherButtonTitles:nil, nil];
                                    [alert show];
                                }
                                else if (state == SSResponseStateFail)
                                {
                                    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"分享失败"
                                                                                    message:[NSString stringWithFormat:@"失败描述:%@",[error errorDescription]]
                                                                                   delegate:self
                                                                          cancelButtonTitle:@"OK"
                                                                          otherButtonTitles:nil, nil];
                                    [alert show];
                                }
                            }];

}

到此基本完成

测试一下 点击微博分享

如有问题 可留言,或者QQ群:414319235  欢迎交流学习

时间: 2024-11-02 08:45:08

iOS 分享功能开发的相关文章

如何使用友盟 Cocos2d-x 分享组件实现 Android/iOS 分享功能

Cocos2d-x作为一款优秀的跨平台游戏引擎,已经被越来越多的开发者使用,而在游戏中使用分享组件能够有效的提供用户粘性,通过分享回流来提高APP安装量,但是目前市面上能够在Cocos2d-x环境下使用的分享插件并不多,开发者们只能自己对原生分享SDK进行封装来实现,前一段时间友盟推出Cocos2d-x分享组件,能够帮助开发者快速集成.友盟也把组件的源码放在GitHub上,有好的想法也可以直接在GitHub上修改(PS.在GitHub上提bug可以获得友盟的小奖品),同样也可以对源码进行学习,对

微信二次分享功能开发笔记

最近的一个项目在进行二次分享的时候出现了问题,定制的文案描述及图片都不能在分享后出现,如图所示: 经过十八般折腾,终于变成我想要的样式了,如图:    下面讲讲具体如何实现的. 首先,明白我们的需求是使由app分享到微信后的页面可以使用微信的二次分享功能做定制化的分享(如图所示) 然后开始着手做相关功能开发. 根据微信开发文档,知晓我们需要调用微信的api,获取对应的分享功能(朋友.朋友圈.qq)等,还需要一个对应的公众号或者服务号.理清思路后,接下来介绍关于各部分的具体处理,见下: 本地代码处

微信jssdk分享功能开发

先理解下分享: 在app端 ,经常能看见 分享按钮的功能,(分享给朋友,分享到朋友圈,分享到QQ空间等等): https://open.weixin.qq.com/(微信开发平台),这需要到开放平台注册账号,绑定自己的应用,才能实现其权限: 在微信公众号开发过程中,目前,现在只能,实现,自定义分享内容,而不能自己开发分享按钮: 我们通过 一些分享的方法,只是获取“*******” 按钮点击状态及 自定义分享内容接口,请注意 我们,仍然,需要点击,微信自带的头部菜单按钮里面(分享朋友,分享朋友圈按

微信分享功能开发代码整理

微信分享对接php项目: 做微信分享开发要注意所有的JS接口只能在公众号绑定的域名下调用,公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名” 1,Jssdk类包的引入Jssdk.class.php生成注册微信官方分享按钮的权限参数,代码如下: <?php // +---------------------------------------------------------------------- // | 微信分享核心包类 // +--------

微信分享功能开发

1.H5页面配置 (1)引入微信JS SDK <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> (2)在js里配置接口参数 wx.config({ debug : false,//这里是开启测试,如果设置为true,则打开每个步骤,都会有提示,是否成功或者失败 appId : '${appid}', time

iOS开发之--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook功能开发汇总

前言 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用系统应用.使用系统服务: 目录 系统应用 系统服务 2.1. 短信与邮件 2.2. 通讯录 2.3. 蓝牙 2.4. 社交 2.5. Game Center 2.6. 应用内购买 2.7. iCloud 2.8. Passbook 1. 系统应用 在开发某些应用时可能希望能够调用iOS系统内置的电话.短信.邮件.浏览

ios客户端发现_动画屋后期页面重构与悬浮评论分享模块开发项目总结

从"看世界杯送流量"项目,遇到响应式布局问题之后,专门钻研了这方面专业的书籍,同时阅读了相关文章.响应式布局简单的说就是使开发的页面在不同设备上都有友好的效果.而最开始"暑期动画屋"的项目,当时并没有采用响应式布局,虽然ipad上可用,其他设备则会有显示问题.这也暴露了,目前所在移动业务事业部前端的问题:    1.考虑到响应式布局在不同设备上,UI设计师只给了一套UI原型图,而在不同设备上的显示只是根据前端工程师的理解或个人偏好来完成布局.从产品经理的角度以及测试

为Unity开发的android手机游戏添加一个社会化分享功能

先看一下我最近自己做的一个游戏的效果图,然后在为大家讲述怎么做这样一个分享功能,如果图片不直观,当然如果你也不介意我顺便宣传一下我的游戏,你可以点击以下这个链接,下载我的游戏,进去体验一下里面的这个分享功能:http://zhushou.360.cn/detail/index/soft_id/2954399?recrefer=SE_D_BubbleDeer 好了,接下来我们就来一起探讨一下这个分享功能怎么做. (1)提供下载一个社会化分析的SDK,这个我用的是mob.com网的ShareSDK,

微信开发(一)基于Wx-java的微信分享功能

最近在做微信服务号开发,简单总结一下,便于自己学习积累和分享给大家: 环境介绍: Spring+ Spring MVC +Mybatis 开发语言: JAVA 微信公众平台的开发中,微信只公布了一个基于Http协议的接口和加解密的算法sdk,在开发的过程中可以自己根据需求来配置数据,调用相关接口,也可以引用比较成熟的基于java语言的微信公众号sdk.笔者引用的是目前比较流行的 weixin-java-tools 可以参考:点击打开链接 项目中引入了weixin-java-mp 就可直接调用相关