前阵子做Twitter分享折腾了好久,官方的文档又不够详细。这篇文章记录下解决方法。
首先获取Twitter相关framework添加到项目中
第一种方法:pod下载, 但这种方式总是会下载失败
target 'MyApp' do
use_frameworks!
pod 'TwitterKit'
end
第二种方法:然后直接从网站下载framework
https://dev.twitter.com/twitterkit/ios/migrate-social-framework
然后配置Twitter到项目
info.plist配置; 其中consumerKey 是你Twitter配置里面的 【Consumer Key】
// 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>
添加【Accounts.framework】到项目中(这里我开始一直没配置这项,导致好长时间都想不通为什么从Twitter登录回来后没反应)
添加代码到
App Delegate, didFinishLaunchingWithOptions 方法里面
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[Twitter sharedInstance] startWithConsumerKey:@"你的Consumer Key" consumerSecret:@"你的Consumer Secret"];
}
application:openURL:options: 方法里面添加
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options {
return [[Twitter sharedInstance] application:app openURL:url options:options];
}
如果项目里面还配置了Facebook等其他分享平台可以参照这个代码写法
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options {
if ([[Twitter sharedInstance] application:app openURL:url options:options]) {
return YES;
}
BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:app openURL:url options:options];
return handled;
}
分享代码的调用
//引入文件
#import <TwitterKit/TwitterKit.h>
//调用方法
TWTRComposer *composer = [[TWTRComposer alloc] init];
//设置分享的标题
[composer setText:subject];
//设置分享的URL
[composer setURL:[NSURL URLWithString:webURL]];
//添加图片, 这里分享的图片传值是 UIimage类型
UIimage *shareImage = picImageView.image;
[composer setImage:shareImage];
// Called from a UIViewController
[composer showFromViewController:self completion:^(TWTRComposerResult result) {
if (result == TWTRComposerResultCancelled) {
NSLog(@"Tweet composition cancelled");
}else {
NSLog(@"Sending Tweet!");
}
}];