欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

iOS 分享功能开发

来源: 开发者 投稿于  被查看 10115 次 评论:195

iOS 分享功能开发


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

如下图

\

 

 

一,注册账号

 

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

\

 

二,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 

    //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 
#import 
#import 

社交平台的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
     上注册腾讯微博开放平台应用,并将相关信息填写到以下字段
     
     如果需要实现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类型的对象,把需要分享的标题、内容、图片、URL等 包装在这个对象。

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

 

#import 

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

 

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

 

-(void)shareAct:(id)sender
{
//    
    NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"ShareSDK" ofType:@"jpg"];
    
    //1、构造分享内容
    id publishContent = [ShareSDK content:@"要分享的内容"
                                       defaultContent:@"默认内容"
                                                image:[ShareSDK imageWithPath:imagePath]
                                                title:@"ShareSDK"
                                                  url:@"http://www.mob.com"
                                          description:@"这是一条演示信息"
                                            mediaType:SSPublishContentMediaTypeNews];
    //1+创建弹出菜单容器(iPad必要)
    id 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 statusInfo, id 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 欢迎交流学习


 

 

 

 

用户评论