iOS轻量级社会化分享框架Trochilus使用指北

什么是Trochilus

Trochilus是iOS平台下轻量级分享框架,集分享、登录、支付于一体。

Trochilus优势

1、无需导入一大堆系统库(framework、tbd),仅需导入WebKit.framework网页授权用到。
2、无需导入社交平台SDK(QQSDK、微信SDK、微博SDK)等。
3、API简单易用,仿ShareSDK API。
4、各个平台回调Trochilus内部自动处理。
5、开源、开源、开源。

初始化Trochilus

打开AppDelegate.m导入头文件

#import "Trochilus.h"

在- (BOOL)application: didFinishLaunchingWithOptions:方法中调用registerActivePlatforms方法来初始化第三方平台

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    //平台注册
    NSArray *platforems = @[@(TPlatformTypeQQ),
                                      @(TPlatformTypeWechat),
                                      @(TPlatformTypeSinaWeibo)];
    
    [Trochilus registerActivePlatforms:platforems onConfiguration:^(TPlatformType platformType, NSMutableDictionary *appInfo) {
        
        switch (platformType) {
            case TPlatformTypeQQ:
                [appInfo TSetupQQByAppId:@"100371282"
                                           appKey:@"aed9b0303e3ed1e27bae87c33761161d"
                                         authType:TAuthTypeBoth
                                           useTIM:NO];
                break;
            case TPlatformTypeWechat:
                [appInfo TSetupWeChatByAppId:@"wx4868b35061f87885"
                                            appSecret:@"64020361b8ec4c99936c0e3999a9f249"];
                break;
            case TPlatformTypeSinaWeibo:
                [appInfo TSetupSinaWeiboByAppKey:@"2586911134"
                                                appSecret:@"fa8d0464da4cf32585892621e48ea3c4"
                                              redirectUri:@"http://www.wangquanwei.com"
                                                 authType:TAuthTypeBoth];
                break;
            default:
                break;
        }
        
    }];
    
    return YES;
}

(注意:每一个case对应一个break不要忘记填写,不然很可能有不必要的错误。)

分享

添加如下代码,分享之后的效果需要去对应的分享平台上观看,首先要构造分享参数,然后再根据每个平台的方法定制自己想要分享的不同的分享内容。

NSMutableDictionary * parameters = [NSMutableDictionary dictionary];

//QQ好友分享
[parameters TSetupQQParamsByText:@"222"
                                        title:nil
                                          url:nil
                                audioFlashURL:nil
                                videoFlashURL:nil
                                   thumbImage:nil
                                       images:nil
                                         type:self.type
                           forPlatformSubType:TPlatformSubTypeQQFriend];
                           
//微信好友分享
[parameters TSetupWeChatParamsByText:@"222"
                                            title:nil
                                              url:nil
                                       thumbImage:nil
                                            image:nil
                                     musicFileURL:nil
                                          extInfo:nil
                                         fileData:nil
                                     emoticonData:nil
                              sourceFileExtension:nil
                                   sourceFileData:nil
                                             type:TContentTypeText
                               forPlatformSubType:TPlatformSubTypeWechatSession];
                      
//微博分享
[parameters TSetupSinaWeiboShareParamsByText:@"222 http://www.wangquanwei.com/"
                                                    title:nil
                                                    image:nil
                                                      url:nil
                                                 latitude:0
                                                longitude:0
                                                 objectID:nil
                                                     type:TContentTypeText];
//分享
[Trochilus share:{这里填分享平台}
          parameters:parameters
      onStateChanged:^(TResponseState state, NSDictionary *userData, NSError *error) {
        
          switch (state) {
              case TResponseStateSuccess: {
                  UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"分享成功" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
                  [alert show];
              }
                  break;
              case TResponseStateFail: {
                  
                  UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"提示" message:[NSString stringWithFormat:@"分享失败\n%@",error] delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
                  [alert show];
              }
                  break;
              case TResponseStateCancel: {
                  UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"用户取消" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
                  [alert show];
              }
                  break;
              default:
                  break;
          }
          
}];

更多可以参考文件 (Trochilus / Category / NSMutableDictionary+Share)中的方法。

登录

把如下代码复制并粘贴到你要登录的位置,并且修改相应的参数即可。
这里以QQ登陆为例
(其他的平台也一样的处理,修改下登陆方法里authorize的平台类型参数:微信登录-> TPlatformTypeWechat,新浪微博登录->TPlatformTypeSinaWeibo。

[Trochilus authorize:TPlatformTypeQQ settings:nil onStateChanged:^(TResponseState state, TUser *user, NSError *error) {
        
}];

支付

首先要构造支付参数,然后再根据每个平台调用不同的方法。
支付涉及到敏感数据,参数全隐去。

//微信支付
NSMutableDictionary * wechatPay = [NSMutableDictionary dictionary];
[wechatPay payWithWechatPartnerId:{partnerId}
                             prepayId:{prepayId}
                             nonceStr:{nonceStr}
                            timeStamp:@"1499752264"
                              package:@"Sign=WXPay" //iOS微信支付package只能为Sign=WXPay
                                 sign:{sign}];
                                 
[Trochilus payToWechatParameters:wechatPay onStateChanged:^(TResponseState state, TUser *user, NSError *error) {
        

}];

//支付宝支付
NSString * urlScheme = {urlScheme};
NSString * orderString = {由服务器返回构造好的支付字符串};

[Trochilus payToAliPayUrlScheme:urlScheme orderString:orderString onStateChanged:^(TResponseState state, TUser *user, NSError *error) {
        
                
}];

适配iOS9+系统

1、http
问题:
在iOS9下,系统默认会拦截对http协议接口的访问,因此无法获取http协议接口的数据。对Trochilus来说,具体表现可能是,无法授权、分享、获取用户信息等。
解决方法:
在项目的info.plist中添加一个Key:App Transport Security Settings,类型为字典类型。然后给它添加一个Key:Allow Arbitrary Loads,类型为Boolean类型,值为YES。

iOS轻量级社会化分享框架Trochilus使用指北_第1张图片

2、白名单
问题:
在iOS 9下涉及到平台客户端跳转,系统会自动到项目info.plist下检测是否设置平台Scheme。对于需要配置的平台,如果没有配置,就无法正常跳转平台客户端。因此要支持客户端的分享和授权等,需要配置Scheme名单。
解决方法:
在项目的info.plist中添加一LSApplicationQueriesSchemes,类型为Array。然后给它添加一个需要支持的项目,类型为字符串类型。

LSApplicationQueriesSchemes

    wechat
    weixin
    sinaweibohd
    sinaweibo
    sinaweibosso
    weibosdk
    weibosdk2.5
    mqqapi
    mqq
    mqqOpensdkSSoLogin
    mqqconnect
    mqqopensdkdataline
    mqqopensdkgrouptribeshare
    mqqopensdkfriend
    mqqopensdkapi
    mqqopensdkapiV2
    mqqopensdkapiV3
    mqzoneopensdk
    wtloginmqq
    wtloginmqq2
    mqqwpa
    mqzone
    mqzonev2
    mqzoneshare
    wtloginqzone
    mqzonewx
    mqzoneopensdkapiV2
    mqzoneopensdkapi19
    mqzoneopensdkapi
    mqzoneopensdk
    alipay
    alipayshare

iOS轻量级社会化分享框架Trochilus使用指北_第2张图片

URL Scheme

别忘了配置URL Scheme否则将无法返回客户端。
具体规则请看各个平台文档。

感谢

感谢ShareSDK,API模仿ShareSDK做的。

下载

Trochilus

你可能感兴趣的:(iOS轻量级社会化分享框架Trochilus使用指北)