将 HatenaBookmark 集成到您的应用中。这是一个用于处理 Hatena Bookmark API 和提供用户界面的 Objective-C 库。
在 Hatena 开发者中心 注册您应用的信息。此 SDK 需要 all scope,包括 read_public、read_private、write_public 和 write_private 权限。
注册后,您将获得一个消费者键和一个消费者密钥。
首先,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];
}
SDK 提供了两种集成 Hatena Bookmarks 面板 UI 的方式。
UIActivity 是一个 iOS 原生分享界面,适用于 iOS 6 或更高版本。此 SDK 提供了 HTBHatenaBookmarkActivity
。
您可以在 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];
}
苹果官方文档表示:“在 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
了解详情。
可以直接调用 ViewController。
// iOS 5
NSURL *URL = self.webView.request.URL;
HTBHatenaBookmarkViewController *viewController = [[HTBHatenaBookmarkViewController alloc] init];
viewController.URL = URL;
[self presentViewController:viewController animated:YES completion:nil];
克隆此仓库并运行 git submodule update --init
。之后,打开 /DemoApp/DemoApp.xcodeproj
并进行构建。
演示应用程序还需要 OAuth 消费者密钥和密钥。在 HTBDemoViewController
中添加到 [[HTBHatenaBookmarkManager sharedManager] setConsumerKey:@"your consumer key" consumerSecret:@"your consumer secret"];
。
克隆此仓库,在根目录运行 make clean test
。
/SDK/API/
/SDK/UI/
HTBHatenaBookmkarkManager
iOS SDK 与 Hatena 书签 API 进行接口交互。更多详情请见 API 文档(日语)。