Tumblr SDK For iOS
一个无意见、灵活的库,可轻松将 Tumblr 数据集成到您的 iOS 或 OS X 应用程序中。该库使用 ARC,需要至少 iOS 9 或 OS X 10.10。
如果您有任何功能请求,请创建一个问题或提交拉取请求与我们联系。请负责任地使用 Tumblr API,并遵守应用程序开发人员和 API 许可协议。
目录
开始使用
CocoaPods
CocoaPods 是将 Tumblr SDK 添加到项目中的推荐方式。使用 CocoaPods 意味着您无需担心克隆或以此存储库作为 git 子模块。 CocoaPods 是一款类似于 gem
(Ruby) 和 npm
(Node.js) 的包管理器,但它是为 Swift 和 Objective-C 项目设计的。
模块作者创建 "pods",这些会版本化管理并存储在中央仓库中。应用开发者创建 "podfiles" 来指定应用的依赖项,并通过 CocoaPods 命令行工具来进行
- 从他们 podfile 中获取指定的依赖
- 递归获取所有子依赖
- 创建一个包含 pods 的 Xcode 工作空间,它包括链接任何必要的库、配置头搜索路径、在适当的地方启用 ARC 以及更多
如果您是 CocoaPods 的新手,网站中包含大量有用的 文档。
要安装 Tumblr SDK,您只需在应用程序的根目录中创建一个类似以下的 podfile
platform :ios, '9.0'
pod 'TMTumblrSDK'
在运行 pod install
之后,您将拥有一个包含不仅您的应用程序,还包括 Tumblr SDK 的 Xcode 工作空间。这就是全部内容。
您可以通过简单的引用名称(TMTumblrSDK
)来获得 SDK 的最新版本。本指南解释了如何指定显式的依赖版本。
如果您选择手动包含 TMTumblrSDK(即不使用 CocoaPods),请确保您的应用程序仍然可以读取 TMTumblrSDK.podspec.json
。我们使用此文件来跟踪正在使用哪一个版本的 TMTumblrSDK,这帮助我们做出关于项目未来的明智决定。
文档
SDK的Appledoc可以在这里找到:链接。如果你使用CocoaPods安装Tumblr SDK,docset将自动添加到Xcode中。
连接到Tumblr
API客户端
使用TMAPIClient
类通过Tumblr API与Tumblr进行通信。API客户端的典型用例是允许用户同时将照片分享到多个社交网络的应用。在这种情况下,在用户选择照片后,你可以提供一个列表供用户选择照片会发送到的不同网络。确认后,假设他们选择了Tumblr,你可以使用API客户端将图像发布到用户的Tumblr。使用API客户端需要用户对某些路径进行身份验证,你可以通过TMOAuthAuthenticator
类来实现。
请查阅API文档以获取完整的用法说明。
OAuth身份验证
在你的AppDelegate
中导入<TMTumblrSDK/TMOAuthAuthenticator.h>
、<TMTumblrSDK/TMURLSession.h>
和
为你的应用 Tumblr 消费者密钥和密钥声明常量
NSString * const OAuthTokenConsumerKey = @"";
NSString * const ConsumerSecret = @"";
如果你还没有密钥/密钥,你可以在这里注册。
设置
在您应用的 Info.plist
中,指定一个自定义的 URL 方案,浏览器可以使用该方案在用户允许或拒绝访问 Tumblr 后返回您的应用程序。
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>com.tumblr.example</string>
<key>CFBundleURLSchemes</key>
<array>
<string>my-sample-app</string>
</array>
</dict>
</array>
在您应用代理设置中配置 TMURLSession
和 TMOAuthAuthenticator
实例,例如
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.applicationCredentials = [[TMAPIApplicationCredentials alloc] initWithConsumerKey:OAuthTokenConsumerKey consumerSecret:ConsumerSecret];
self.session = [[TMURLSession alloc] initWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]
applicationCredentials:self.applicationCredentials
userCredentials:[TMAPIUserCredentials new]
networkActivityManager:nil
sessionTaskUpdateDelegate:nil
sessionMetricsDelegate:nil
requestTransformer:nil
additionalHeaders:nil];
self.authenticator = [[TMOAuthAuthenticator alloc] initWithSession:self.session
applicationCredentials:self.applicationCredentials
delegate:self];
ViewController *vc = [[ViewController alloc] initWithSession:self.session authenticator:self.authenticator];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.rootViewController = vc;
[self.window makeKeyAndVisible];
return YES;
}
还要添加处理传入的 URL 请求的能力,并遵从 TMOAuthAuthenticatorDelegate
在 iOS 上,这看起来像
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
[self.authenticator handleOpenURL:url];
return YES;
}
#pragma mark - TMOAuthAuthenticatorDelegate
- (void)openURLInBrowser:(NSURL *)url {
[[UIApplication sharedApplication] openURL:url];
}
然后,在另一个类(如视图控制器)的 authenticate
方法中使用这些实例,例如
- (void)authenticate {
[self.authenticator authenticate:@"ello" callback:^(TMAPIUserCredentials *creds, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
if (error) {
self.authResultsTextView.text = [NSString stringWithFormat:@"Error: %@", error.localizedDescription];
}
else {
self.session = [[TMURLSession alloc] initWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] applicationCredentials:[[TMAPIApplicationCredentials alloc] initWithConsumerKey:@"" consumerSecret:@""] userCredentials:[[TMAPIUserCredentials alloc] initWithToken:creds.token tokenSecret:creds.tokenSecret]];
self.authResultsTextView.text = [NSString stringWithFormat:@"Success!\nToken: %@\nSecret: %@", creds.token, creds.tokenSecret];
[self request];
}
});
}];
}
归因与深层链接
如果您的应用在 Tumblr 上发布,您可以在 TMPostKeyDeepLinkiOS
和 TMPostKeyDeepLinkAndroid
密钥下为 API 客户端提供深层链接 URL。这将导致在相应平台上,在帖子下方显示您的应用的归因界面。当点击此界面时,系统将打开您指定的深层链接。请注意,在可见此 UI 之前,必须在您应用配置中提供所有图标和必需字段。
注意: 目前此功能仅适用于白名单应用程序合作伙伴。如果您的应用需要此功能,请联系 Tumblr 商业发展部([email protected])。
分享扩展
自 iOS 8 以来,Tumblr for iOS 包装了分享扩展。它目前支持以下输入类型
- 文本
- 图片(最多:10 张)
- 视频(最多:1 个)
- URL(最多:1 个)
将来,我们希望记录一些特定方式,应用可以传递用于创建不同 Tumblr 发布类型的参数,但我们需要找到一个好方法,这样 不会干扰可能还会显示的其他分享扩展。
如果您想编写一些特定的 Tumblr 行为,我们的分享扩展的包标识符是 com.tumblr.tumblr.Share-With-Tumblr。
已弃用的连接方法
- URL方案 [已弃用]
- UIActivityViewController [已弃用]
示例
库中包含iOS和macOS示例应用程序。
联系方式
许可协议
版权所有 2012-2017 Tumblr, Inc.
本文件在Apache License, Version 2.0(“许可”)下授权;除非法律要求或经书面同意,否则不得使用此文件,除非符合许可。您可以在apache.org/licenses/LICENSE-2.0获取许可副本。
除非适用法律或书面许可,否则在许可下分发的软件按“原样”基础分发的,不提供任何形式的保证或条件,无论明确或暗示。请参阅许可了解具体授权权限和限制。