zoukankan      html  css  js  c++  java
  • 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,系统会自动设置根视图控制器。

     

    1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
    2.     // Override point for customization after application launch.  
    3.       
    4.     _window=[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];  
    5.     _window.backgroundColor =[UIColor colorWithRed:249/255.0 green:249/255.0 blue:249/255.0 alpha:1];  
    6.     HelpViewController *mainController=[[HelpViewController alloc]init];  
    7.     _window.rootViewController=mainController;  
    8.     [_window makeKeyAndVisible];  
    9.   
    10.     return YES;  
    11. }  

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

     

    2.初始化ShareSDK

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

     

    1. #import <ShareSDK/ShareSDK.h>  

    1. //1.初始化ShareSDK应用,字符串"iosv1101"是应该换成你申请的ShareSDK应用中的Appkey  
    2. [ShareSDK registerApp:@"iosv1101"];  
    3.   
    4. //2. 初始化社交平台  
    5. //2.1 代码初始化社交平台的方法  
    6. [self initializePlat];  

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

    3.初始化社交平台

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

     

    1. #import "WXApi.h"  
    2. #import "WeiboSDK.h"  
    3. #import "WeiboApi.h"  
    4. #import <TencentOpenAPI/QQApi.h>  
    5. #import <TencentOpenAPI/QQApiInterface.h>  
    6. #import <TencentOpenAPI/TencentOAuth.h>  

    社交平台的AppKey、AppSecret、回调地址等需要您自已去相应平台新建应用获取。
    1. - (void)initializePlat  
    2. {  
    3.     /** 
    4.      连接微信应用以使用相关功能,此应用需要引用WeChatConnection.framework和微信官方SDK 
    5.      http://open.weixin.qq.com上注册应用,并将相关信息填写以下字段 
    6.      **/  
    7.     [ShareSDK connectWeChatWithAppId:@""  
    8.                            appSecret:@""  
    9.                            wechatCls:[WXApi class]];  
    10.     /** 
    11.      连接QQ应用以使用相关功能,此应用需要引用QQConnection.framework和QQApi.framework库 
    12.      http://mobile.qq.com/api/上注册应用,并将相关信息填写到以下字段 
    13.      **/  
    14.     //旧版中申请的AppId(如:QQxxxxxx类型),可以通过下面方法进行初始化  
    15.     //    [ShareSDK connectQQWithAppId:@"QQ075BCD15" qqApiCls:[QQApi class]];  
    16.       
    17.     [ShareSDK connectQQWithQZoneAppKey:@""  
    18.                      qqApiInterfaceCls:[QQApiInterface class]  
    19.                        tencentOAuthCls:[TencentOAuth class]];  
    20.       
    21.       
    22.       
    23.       
    24.     //  
    25.     /** 
    26.      连接腾讯微博开放平台应用以使用相关功能,此应用需要引用TencentWeiboConnection.framework 
    27.      http://dev.t.qq.com上注册腾讯微博开放平台应用,并将相关信息填写到以下字段 
    28.       
    29.      如果需要实现SSO,需要导入libWeiboSDK.a,并引入WBApi.h,将WBApi类型传入接口 
    30.      **/  
    31.     [ShareSDK connectTencentWeiboWithAppKey:@""  
    32.                                   appSecret:@""  
    33.                                 redirectUri:@"http://www.sharesdk.cn"  
    34.                                    wbApiCls:[WeiboApi class]];  
    35.     //  
    36.       
    37.       
    38.       
    39.       
    40.     /** 
    41.      连接QQ空间应用以使用相关功能,此应用需要引用QZoneConnection.framework 
    42.      http://connect.qq.com/intro/login/上申请加入QQ登录,并将相关信息填写到以下字段 
    43.       
    44.      如果需要实现SSO,需要导入TencentOpenAPI.framework,并引入QQApiInterface.h和TencentOAuth.h,将QQApiInterface和TencentOAuth的类型传入接口 
    45.      **/  
    46.     //    [ShareSDK connectQZoneWithAppKey:@""  
    47.     //                           appSecret:@""  
    48.     //                   qqApiInterfaceCls:[QQApiInterface class]  
    49.     //                     tencentOAuthCls:[TencentOAuth class]];  
    50.       
    51.       
    52.     /** 
    53.      连接新浪微博开放平台应用以使用相关功能,此应用需要引用SinaWeiboConnection.framework 
    54.      http://open.weibo.com上注册新浪微博开放平台应用,并将相关信息填写到以下字段 
    55.      **/  
    56.     [ShareSDK connectSinaWeiboWithAppKey:@""  
    57.                                appSecret:@""  
    58.                              redirectUri:@"http://www.sharesdk.cn"];  
    59.       
    60.       
    61. }  


    四,设置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中添加处理打开链接的方法


    1. - (BOOL)application:(UIApplication *)application  
    2.       handleOpenURL:(NSURL *)url  
    3. {  
    4.     return [ShareSDK handleOpenURL:url  
    5.                         wxDelegate:self];  
    6. }  
    7.   
    8. - (BOOL)application:(UIApplication *)application  
    9.             openURL:(NSURL *)url  
    10.   sourceApplication:(NSString *)sourceApplication  
    11.          annotation:(id)annotation  
    12. {  
    13.     return [ShareSDK handleOpenURL:url  
    14.                  sourceApplication:sourceApplication  
    15.                         annotation:annotation  
    16.                         wxDelegate:self];  
    17. }  


    五,构造分享内容并分享

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

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

     

    1. #import <ShareSDK/ShareSDK.h>  

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

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

     

    1. -(void)shareAct:(id)sender  
    2. {  
    3. //      
    4.     NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"ShareSDK" ofType:@"jpg"];  
    5.       
    6.     //1、构造分享内容  
    7.     id<ISSContent> publishContent = [ShareSDK content:@"要分享的内容"  
    8.                                        defaultContent:@"默认内容"  
    9.                                                 image:[ShareSDK imageWithPath:imagePath]  
    10.                                                 title:@"ShareSDK"  
    11.                                                   url:@"http://www.mob.com"  
    12.                                           description:@"这是一条演示信息"  
    13.                                             mediaType:SSPublishContentMediaTypeNews];  
    14.     //1+创建弹出菜单容器(iPad必要)  
    15.     id<ISSContainer> container = [ShareSDK container];  
    16.     [container setIPadContainerWithView:sender arrowDirect:UIPopoverArrowDirectionUp];  
    17.       
    18.     //2、弹出分享菜单  
    19.     [ShareSDK showShareActionSheet:container  
    20.                          shareList:nil  
    21.                            content:publishContent  
    22.                      statusBarTips:YES  
    23.                        authOptions:nil  
    24.                       shareOptions:nil  
    25.                             result:^(ShareType type, SSResponseState state, id<ISSPlatformShareInfo> statusInfo, id<ICMErrorInfo> error, BOOL end) {  
    26.                                   
    27.                                 //可以根据回调提示用户。  
    28.                                 if (state == SSResponseStateSuccess)  
    29.                                 {  
    30.                                     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"分享成功"  
    31.                                                                                     message:nil  
    32.                                                                                    delegate:self  
    33.                                                                           cancelButtonTitle:@"OK"  
    34.                                                                           otherButtonTitles:nil, nil nil];  
    35.                                     [alert show];  
    36.                                 }  
    37.                                 else if (state == SSResponseStateFail)  
    38.                                 {  
    39.                                     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"分享失败"  
    40.                                                                                     message:[NSString stringWithFormat:@"失败描述:%@",[error errorDescription]]  
    41.                                                                                    delegate:self  
    42.                                                                           cancelButtonTitle:@"OK"  
    43.                                                                           otherButtonTitles:nil, nil nil];  
    44.                                     [alert show];  
    45.                                 }  
    46.                             }];  
    47.   
    48. }  


    到此基本完成

    测试一下 点击微博分享 

  • 相关阅读:
    e621. Activating a Keystroke When Any Child Component Has Focus
    e587. Filling Basic Shapes
    e591. Drawing Simple Text
    e595. Drawing an Image
    e586. Drawing Simple Shapes
    e636. Listening to All Key Events Before Delivery to Focused Component
    在 PL/SQL 块的哪部分可以对初始变量赋予新值? (选择1项)
    Oracle数据库中,在SQL语句中连接字符串的方法是哪个?(选择1项)
    你判断下面语句,有什么作用?(单选)
    Oracle数据库表空间与数据文件的关系描述正确的是( )
  • 原文地址:https://www.cnblogs.com/hjltonyios/p/4975349.html
Copyright © 2011-2022 走看看