HatenaBookmarkSDK 1.3

HatenaBookmarkSDK 1.3

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
Released最新发布2017年1月

Hatenayashigani 维护。



  • Hatena Co., Ltd.

Hatena Bookmark iOS SDK

将 HatenaBookmark 集成到您的应用中。这是一个用于处理 Hatena Bookmark API 和提供用户界面的 Objective-C 库。

Main Screenshot

安装

使用

注册 OAuth

Hatena 开发者中心 注册您应用的信息。此 SDK 需要 all scope,包括 read_public、read_private、write_public 和 write_private 权限。

Scope Settings

注册后,您将获得一个消费者键和一个消费者密钥。

Consumer Key and Consumer Secret

初始化

首先,SDK 需要使用消费者键和密钥进行初始化。您应该在 application:didFinishLaunchingWithOptions: 或其他初始化部分中添加以下初始化代码。

[[HTBHatenaBookmarkManager sharedManager] setConsumerKey:@"your consumer key" consumerSecret:@"your consumer secret"];

授权

在向 API 发出请求之前,SDK 需要使用 OAuth 登录。将授权代码添加到您的应用设置视图中。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showWebView:) name:kHTBLoginStartNotification object:nil];

[[HTBHatenaBookmarkManager sharedManager] authorizeWithSuccess:^{

} failure:^(NSError *error) {

}];

在发起授权请求后,SDK 使用包含登录页面 URL 的 NSURLRequest 调用 kHTBLoginStartNotification。您应该使用 HTBLoginWebViewController 处理该通知和请求。

-(void)viewDidLoad
{
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showOAuthLoginView:) name:kHTBLoginStartNotification object:nil];
}

-(void)showOAuthLoginView:(NSNotification *)notification {
    NSURLRequest *req = (NSURLRequest *)notification.object;
    UINavigationController *navigationController = [[UINavigationController alloc] initWithNavigationBarClass:[HTBNavigationBar class] toolbarClass:nil];
    HTBLoginWebViewController *viewController = [[HTBLoginWebViewController alloc] initWithAuthorizationRequest:req];
    navigationController.viewControllers = @[viewController];
    [self presentViewController:navigationController animated:YES completion:nil];
}

Login Screenshot

书签 UI

SDK 提供了两种集成 Hatena Bookmarks 面板 UI 的方式。

  • HTBHatenaBookmarkActivity
  • HTBHatenaBookmarkViewController

HTBHatenaBookmarkActivity

UIActivity 是一个 iOS 原生分享界面,适用于 iOS 6 或更高版本。此 SDK 提供了 HTBHatenaBookmarkActivity

iPhone / iPod touch

您可以在 iPhone 或 iPod touch 上模态呈现 UIActivityViewController。

NSURL *URL = self.webView.request.URL;

// iOS 6 or later
if ([UIActivityViewController class]) {
    HTBHatenaBookmarkActivity *hateaBookmarkActivity = [[HTBHatenaBookmarkActivity alloc] init];
    UIActivityViewController *activityView = [[UIActivityViewController alloc] initWithActivityItems:@[URL]                                                                               applicationActivities:@[hateaBookmarkActivity]];
    [self presentViewController:activityView animated:YES completion:nil];
}

UIActivity Screenshot

iPad

苹果官方文档表示:“在 iPad 上,必须以弹出形式呈现”。

NSURL *URL = self.webView.request.URL;

// iOS 6 or later
if ([UIActivityViewController class]) {
    HTBHatenaBookmarkActivity *hateaBookmarkActivity = [[HTBHatenaBookmarkActivity alloc] init];
    UIActivityViewController *activityView = [[UIActivityViewController alloc] initWithActivityItems:@[URL]                                                                               applicationActivities:@[hateaBookmarkActivity]];
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { // on iPad
        self.activityPopover = [[UIPopoverController alloc] initWithContentViewController:activityView];
        __weak UIPopoverController *weakPopover = self.activityPopover;
        activityView.completionHandler = ^(NSString *activityType, BOOL completed){
            // dismiss popover on activity completed.
            [weakPopover dismissPopoverAnimated:YES];
        };
        [self.activityPopover presentPopoverFromBarButtonItem:sender
                                     permittedArrowDirections:UIPopoverArrowDirectionAny
                                                     animated:YES];
    }
}

请参阅 HTBDemoViewController 了解详情。

HTBHatenaBookmarkViewController

可以直接调用 ViewController。

// iOS 5
NSURL *URL = self.webView.request.URL;
HTBHatenaBookmarkViewController *viewController = [[HTBHatenaBookmarkViewController alloc] init];
viewController.URL = URL;
[self presentViewController:viewController animated:YES completion:nil];

构建 DemoApp

克隆此仓库并运行 git submodule update --init。之后,打开 /DemoApp/DemoApp.xcodeproj 并进行构建。

演示应用程序还需要 OAuth 消费者密钥和密钥。在 HTBDemoViewController 中添加到 [[HTBHatenaBookmarkManager sharedManager] setConsumerKey:@"your consumer key" consumerSecret:@"your consumer secret"];

运行测试

克隆此仓库,在根目录运行 make clean test

架构

  • /SDK/API/
    • HTTP 请求类
  • /SDK/UI/
    • 与书签面板 UI 和登录相关的某些类
    • HTBHatenaBookmkarkManager
    • 核心模块
    • 处理用户登录信息
    • 将 JSON 响应分派到模型类

要求

  • iOS 5.0 或更高版本
  • ARC

依赖项

  • AFNetworking
    • 版本 1.x
    • 目前不支持 2.0 版本因为它需要 iOS 7,而我们包含了重命名后的 AFNetworking 1.x。
  • AFOAuth1Client
    • 目前我们进行了分叉并将它复制为 HTBAFOAuth1Client 以等待合并一些拉取请求。
  • SFHFKeychainUtils

Hatena 书签 API

iOS SDK 与 Hatena 书签 API 进行接口交互。更多详情请见 API 文档(日语)。

许可

MIT 许可.