感谢您查看 Pocket SDK。只需几行代码,您的应用程序即可快速支持将 URL 保存到用户的 Pocket 列表中。
Pocket SDK 是将 Pocket 集成到任何 iOS 或 Mac 应用程序的最快方式。将 Pocket SDK 添加到应用程序非常简单。按照以下步骤操作,您可以在 15 分钟内从您的应用程序将 URL 保存到 Pocket。
您可以在以下位置下载 SDK:http://getpocket.com/api/v3/pocket-objc-sdk.zip
您还可以从 GitHub 中查看/检查 SDK:http://github.com/pocketco/Pocket-ObjC-SDK。如果您使用,建议通过在您存储库的根目录中运行 git submodule add git://github.com/Pocket/Pocket-ObjC-SDK.git <path>
将 Pocket SDK 添加为项目的 git 子模块,将 <path>
替换为您希望它安装到的路径。
如果您使用 CocoaPods,您可以将 PocketAPI
pod 添加到 Podfile。然后运行 pod install
,Pocket SDK 将可用在项目中。有关设置新或现有项目的文档,请参阅 CocoaPods 网站上的文档。
项目下载包括 SDK 和示例项目。
SDK 包含所有必要的源文件,没有其他依赖项。
当您在 Pocket 上注册您的应用程序时,它将为您提供一个平台消费者密钥。此密钥用于识别您的应用程序以 Pocket 的 API。
如果您尚未获取消费者密钥,您可以在 http://getpocket.com/api/signup 注册一个。
一旦您获得了所支持平台的消费者密钥,应用程序必须注册一个 URL 方案以接收登录回调。默认情况下,这是 "pocketapp" 加上您应用程序的 ID(您可以在消费者密钥中的短划线之前找到它)。因此,如果您的消费者密钥是 42-abcdef,您的应用程序 ID 是 42,并且您的 URL 方案将是 "pocketapp42"。
如果您的应用程序的 Info.plist 中已经有 URL 方案,您可以添加新的 URL 方案,或者通过调用 [[PocketAPI sharedAPI] setURLScheme:@"YOUR-URL-SCHEME-HERE"]
使用现有的方案。要添加 URL 方案,请在 Info.plist 中创建一个如下所示的块,并用应用程序的方案更新它
▾ URL Types (Array)
▾ Item 0 (Dictionary)
URL Identifier (String) com.getpocket.sdk
▾ URL Schemes (Array) (1 item)
Item 0 (String) [YOUR URL SCHEME, like "pocketapp42"]
或者,您可以直接将以下内容复制粘贴到 Info.plist 的 XML 源中
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.readitlater</string>
<key>CFBundleURLSchemes</key>
<array>
<string>pocketapp9553</string>
</array>
</dict>
</array>
设置 Pocket SDK 的最终步骤是在主应用程序委托中添加一些代码。这是包含 iOS 所需方法(如 applicationDidFinishLaunching)的类。
在您应用程序委托的源文件顶部(以及您调用 PocketAPI 对象的任何地方),您需要包含 PocketAPI 头文件。您可能在类的顶部已经看到了其他导入。只需添加以下行
#import "PocketAPI.h"
Pocket SDK 需要您的消费者密钥才能向 API 发出请求。在启动应用程序时,使用您的注册消费者密钥调用此方法
[[PocketAPI sharedAPI] setConsumerKey:@"Your Consumer Key Here"];
最后一步是给 SDK 机会处理传入的 URL。如果您还没有在应用程序委托中实现此方法,只需添加以下方法
-(BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation{
if([[PocketAPI sharedAPI] handleOpenURL:url]){
return YES;
}else{
// if you handle your own custom url-schemes, do it here
return NO;
}
}
在此阶段,您已正确安装了 SDK,现在可以开始发出请求并将 URL 保存到 Pocket。这里有一个示例
NSURL *url = [NSURL URLWithString:@"http://google.com"];
[[PocketAPI sharedAPI] saveURL:url handler: ^(PocketAPI *API, NSURL *URL, NSError *error){
if(error){
// there was an issue connecting to Pocket
// present some UI to notify if necessary
}else{
// the URL was saved successfully
}
}];
上述示例使用了需要 iOS 4.0 或更高版本的 blocks。如果需要支持 iOS 3.0,可以使用 [linkto:delegate 或 operation based methods]。
按照 Pocket API的最佳实践,您可能希望提供一种方法让用户管理他们登录的账户。通常,这是通过在应用程序的选项屏幕中添加一个设置来处理的,允许用户配置他们的 Pocket 账户。当用户点击它时,您可以简单地调用一行代码,这将处理整个授权过程。
[[PocketAPI sharedAPI] loginWithHandler: ^(PocketAPI *API, NSError *error){
if (error != nil)
{
// There was an error when authorizing the user. The most common error is that the user denied access to your application.
// The error object will contain a human readable error message that you should display to the user
// Ex: Show an UIAlertView with the message from error.localizedDescription
}
else
{
// The user logged in successfully, your app can now make requests.
// [API username] will return the logged-in user’s username and API.loggedIn will == YES
}
}];
还建议您观察 PocketAPI 的 username 和 loggedIn 属性的变化,以确定已登录用户的更改。如果 iOS 在后台终止您的应用程序(例如,由于内存限制),任何挂起的登录尝试将在启动时自动保存和恢复(如果需要)。因此,您的委托/块响应可能不会被调用。如果需要在用户登录更改时更新 UI,请在应用程序启动时注册 PocketAPI 的观察者。
要调用其他任意API,需要传递API的方法名、HTTP方法名和一个参数的NSDictionaries。将包含API响应的NSDictionaries传递到处理程序。
NSString *apiMethod = ...;
PocketAPIHTTPmethod httpMethod = ...; // usually PocketAPIHTTPMethodPOST
NSDictionary *arguments = ...;
[[PocketAPI sharedAPI] callAPIMethod:apiMethod
withHTTPMethod:httpMethod
arguments:arguments
handler: ^(PocketAPI *api, NSString *apiMethod, NSDictionary *response, NSError *error){
// handle the response here
}];
Pocket SDK使用了以下开源软件
版权所有 © 2012 Read It Later, Inc.
特此赋予任何获得本软件及其相关文档副本(以下简称“软件”)的人免费使用权,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许软件提供方以本协议规定的条件使用软件。
上述版权声明和本许可声明应包含在软件的任何副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性。在任何情况下,作者或版权所有者不应对任何索赔、损害或其他责任承担责任,无论此类责任是基于合同、侵权或其他原因,也不论这种责任是由于、源于或与本软件或其使用或其他交易有关。