はてなブックマークSDKを使って投稿するためのTitaniumモジュールができました

http://www.flickr.com/photos/8062328@N02/3697560136

B!ボタンをアプリに組み込みやすくする、はてなブックマークiOS SDKを正式リリースしました - はてなブックマーク開発ブログ

でリリースされたはてなブックマークiOS SDKのUIコンポーネントを利用するTitaniumモジュールを作りました。

以下にMITライセンスでソースコードを公開しています。

https://github.com/laiso/titanium-hatenabookmark

SYNOPSIS

http://www.flickr.com/photos/48052697@N05/5714544755
photo by davidhorne

ブックマークするだけなら以下のようにして呼び出します(未認証の場合はログインページを一旦開きます)。

var hatenabookmark = require('so.lai.hatenabookmark');

hatenabookmark.setup({
  consumer : '__CONSUMER_KEY__',
  secret : "__CONSUMER_SECRET__"
});

if(!hatenabookmark.loggedIn){
  hatenabookmark.authorize();
}else{
  hatenabookmark.bookmark({
    url : 'http://example.com/'
  });
}

※コンシュマーキーはあなたのOAuthアプリのものへ置き換えてください

インストール

http://www.flickr.com/photos/11399912@N00/55491077
photo by basykes

https://github.com/laiso/titanium-hatenabookmark/releases

から配布ファイルをダウンロード

解凍してso.lai.hatenabookmark-iphone-*zipファイルと.bundleファイルをResources以下に配置します。

cp so.lai.hatenabookmark-iphone-0.1.zip ./Resources/iphone/
cp -a HTBResources.bundle Resources/iphone/

tiapp.xmlから有効にします。


<modules>
  <module platform="iphone">so.lai.hatenabookmark</module>
</modules>

使い方

http://www.flickr.com/photos/80975498@N00/306074038
photo by Ben.Millett

はてなブックマーク iOS SDKリポジトリにあるDemoAppのTitanium版クローンを作っておきましたのでそちらをご参考ください。

https://github.com/laiso/titanium-hatenabookmark/blob/master/DemoApp/Resources/ui/common/FirstView.js

(コンシュマーシークレット入っとるやんけ……*1 )

既知の問題

http://www.flickr.com/photos/59768604@N03/7975953800
photo by Navaneeth K N

はてなブックマーク iOS SDKのログインUIは未認証時に呼び出しても自動でログイン画面へ遷移→ブックマークIへ戻る。という動作なのですが、Titaniumモジュールから呼び出すとこのログインが完了しない問題が発生しました。

いまいち原因不明だったので不本意だったのですが認証フロー必須というドキュメントにして運用でカバーしました。将来的に改善しましたら動作をあわせます。

Titaniumモジュール開発雑感

http://www.flickr.com/photos/34547181@N00/5442325916
photo by Philippe Put

はじめて手を出したんですが、思ってたより数段楽に作れました。titanium.pyのスクリプトからXcodeで編集できるプロジェクトを生成してくれてXcode上からTitaniumアプリをビルドしてシミュレータでexample以下のJavaScriptでエンドトゥーエンドテストができます。

ただし、内部的にはObjective-C向けのデバッグ環境ではなくコマンドラインで通常のTitaniumアプリをビルドしているだけなのでLLDBなどは使えずプリントデバッグでした。まあモジュール開発はXcode単体でデバッグしてその後Titaniumモジュールとして結合するのが筋かもしれません。

なんにせよiOSアプリ開発者なら楽勝でしょう。以下のドキュメントが網羅されておりました。

お問い合わせ

http://gyazo.com/b3b68fe582a57bc279d0e6bb1793c280.png

非公式な個人プロジェクトなので株式会社はてなではなくid:laiso,@laiso,github:id:laisoあたりにお問合せください。まあ公式版モジュールもそのうち出るかもしれませんが。

One More Thing

http://gyazo.com/4c4f52b44673f2f1effa40fa00fcf256.png

Apache Cordavo(Adobe Phonegap)向けのプラグインも作っています。

https://github.com/laiso/cordova-plugin-hatenabookmark

が情熱が足りないので、プラグイン開発者ならまだしも公開して使ってもらう状態にはまでまだ至っておりません。

もし興味がある人がいましたら声をかけてください。返事はしません。

*1:まあ悪用されたら停止します