- 随着中国互联网企业走向海外,越来越多的中国APP 支持Twitter 及Facebook ,但是 国内的集成平台对Twitter 及Facebook支持并不好,其实也不怪国内平台,一是被墙,二是国外的sdk都不太人性化,对开发者很不友好。
- 在这之前一直用友盟分享 点击Twitter 直接返回个结果(分享成功或失败) 没有任何过程或像国内微博 微信的跳转客户端,这程序员都不能忍 何况老板。
- 补充一下 苹果自带的 SLComposeViewController 在iOS11 已经废弃了。
- Twitter 在之前要集成相关功能 要先集成Fabric 在里面下载Twitter SDK,我16年集成过一次,虽然成功了,但是反正感觉挺费劲。今年听说Fabric 卖给了谷歌。直接可以下载 Twitter SDK了 也支持CocoaPods,真是改进了不少。
- Twitter SDK 只支持iOS9 以上 这点要注意!
下面开始集成
- 点击twitter iOS集成文档
- 按照 twitter 给集成文档就可以,有些小伙伴被墙,我把过程整理一下 发出来
1. 使用 CocoaPods 注意use_frameworks! 不能少
我集成的版本是3.2.2
集成成功下一步
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.分享推文
- 点击twitter iOS集成文档——分享功能
- 分享twitter 分俩种展示样式的 方法都是一样 但是需要HTML 去改一下
第一种方法 带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]);
}
}];
}
- 展示样式 :这种正常推文 只能点击在蓝色的连接才能 跳转网页,点击图片是图片浏览器
第二种方法 不带图片的 大卡片显示方式
和上面方法是一样的 去掉图片添加的方法 。 text方法 有没有都可以
大卡片方式 需要HTML 去改一下 大约是给title和图片加Twitter 固定的某个字段 Twitter就会自动截取了
//检查是否当前会话具有登录的用户
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]);
}
}];
}
- 展示样式 这种大卡片的方式 点击大卡片就跳转网页了。没有图片浏览
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以上