iOS开发实用技术ios实用开发技巧人猿星球

iOS Twitter SDK 集成分享功能

2018-03-23  本文已影响494人  Andi

下面开始集成

1. 使用 CocoaPods 注意use_frameworks! 不能少

我集成的版本是3.2.2


image

集成成功下一步

2。AppDelegate 引用#import <TwitterKit/TwitterKit.h>

   //初始化Appkey 和Secret
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
     [[Twitter sharedInstance] startWithConsumerKey:twitterAppkey consumerSecret:twitterSecret];
}
   
//Twitter分享 必须实现
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options {
    return [[Twitter sharedInstance] application:app openURL:url options:options];
}

3.Info.plist 文件添加以下字段

// Info.plist
<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>twitterkit-<consumerKey></string>
    </array>
  </dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>twitter</string>
    <string>twitterauth</string>
</array>

4.分享推文

第一种方法 带text和图片的 正常推文显示方式

//检查是否当前会话具有登录的用户
 if ([[Twitter sharedInstance].sessionStore hasLoggedInUsers]) {
     TWTRComposer *composer = [[TWTRComposer alloc] init];
     [composer setText:title];
    //带图片方法
     [composer setImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imageUrl]]]];
     [composer setURL:[NSURL URLWithString:shareUrl]];
     [composer showFromViewController:self completion:^(TWTRComposerResult result){
         if(result == TWTRComposerResultCancelled) {
            //分享失败
        }else{
            //分享成功
         }
     }];
  }else{
    [[Twitter sharedInstance] logInWithCompletion:^(TWTRSession *session, NSError *error) {
        if (session) {
                 TWTRComposer *composer = [[TWTRComposer alloc] init];
                 [composer setText:title];
                //带图片方法
                 [composer setImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imageUrl]]]];
                 [composer setURL:[NSURL URLWithString:shareUrl]];
                 [composer showFromViewController:self completion:^(TWTRComposerResult result){
                      if(result == TWTRComposerResultCancelled) {
                         //分享失败
                     }else{
                     //分享成功
                     }
                 }];
                 NSLog(@"signed in as %@", [session userName]);
            } else {
                 NSLog(@"error: %@", [error localizedDescription]);
            }
        }];
    }

image image

第二种方法 不带图片的 大卡片显示方式

和上面方法是一样的 去掉图片添加的方法 。 text方法 有没有都可以

//检查是否当前会话具有登录的用户
 if ([[Twitter sharedInstance].sessionStore hasLoggedInUsers]) {
     TWTRComposer *composer = [[TWTRComposer alloc] init];
     [composer setText:title];
     //注释掉添加图片方法
     [composer setURL:[NSURL URLWithString:shareUrl]];
     [composer showFromViewController:self completion:^(TWTRComposerResult result){
         if(result == TWTRComposerResultCancelled) {
            //分享失败
        }else{
            //分享成功
         }
     }];
  }else{
    [[Twitter sharedInstance] logInWithCompletion:^(TWTRSession *session, NSError *error) {
        if (session) {
                 TWTRComposer *composer = [[TWTRComposer alloc] init];
                 [composer setText:title];
                 //注释掉添加图片方法
                 [composer setURL:[NSURL URLWithString:shareUrl]];
                 [composer showFromViewController:self completion:^(TWTRComposerResult result){
                      if(result == TWTRComposerResultCancelled) {
                         //分享失败
                     }else{
                     //分享成功
                     }
                 }];
                 NSLog(@"signed in as %@", [session userName]);
         } else {
                 NSLog(@"error: %@", [error localizedDescription]);
         }
      }];
}

image image

5.如果是分享视频

//检查是否当前会话具有登录的用户
if ([[Twitter sharedInstance].sessionStore hasLoggedInUsers]) {
    TWTRComposerViewController *composer = [TWTRComposerViewController emptyComposer];
        //下面俩个方法按需使用
   // [composer initWithInitialText:@"" image:@"" videoURL:@""];
  // [composer initWithInitialText:@"" image:@"" videoData:@""];
    [self presentViewController:composer animated:YES completion:nil];
} else {
    [[Twitter sharedInstance] logInWithCompletion:^(TWTRSession *session, NSError *error) {
        if (session) {
            TWTRComposerViewController *composer = [TWTRComposerViewController emptyComposer];
            [self presentViewController:composer animated:YES completion:nil];
        } else {
            //分享失败
        }
    }];
}

再次强调:Twitter sdk 只支持ios9以上

上一篇下一篇

猜你喜欢

热点阅读