Sparkle
Sparkle、物凄く便利なのですが、1回組み込むとフレームワークのバージョンを上げるだけの作業になるので、新しいアプリケーションを作った時に導入方法を忘れてしまったりします。
今回は自作ソフトで、ソフトウェアの自動アップデートを可能にするフレームワーク、Sparkleの導入の仕方を忘備録がわりに。
まず、 http://sparkle.andymatuschak.org/ の "Get Sparkle 1.5 b6" をダウンロードします。(現時点では1.5 b6ですが、新しいバージョンをダウンロードします)
ダウンロードしたZipファイルを解凍すると、ドキュメントなどが入っていると思います。
軽くドキュメントに目を通しておきます。
この中で、必要なのは、"Extras" と "Sparkle.framework" です。
"Sparkle.framework" をプロジェクトのディレクトリの中にコピーします。(Frameworkフォルダを作ったり)

続いて、Framework フォルダに追加した Sparkle.framework を Xcode のプロジェクトに追加します。

ターゲットのアプリ名を右クリックして、「追加」「新規ビルドフェーズ」「新規コピーファイル」選択します。

情報ウインドウの、デスティネーションをフレームワークにして閉じます。
「ファイルをコピー」が出来たら、Linked Framework から Sparkle.framework をドラッグアンドドロップして追加します。

ここまで出来たら、次は Window などが有る xib(nib) を開きます。
Library から Object を 追加して Class を SUUpdater にします。

Windowへボタンを配置し、先ほど作った Updater(Object) へ Action を繋げIBは閉じます。

次はXcodeを離れてFinderで作業します。
ダウンロードして解凍したフォルダの Extras→Signing Tools を開きます。
Terminal.appを起動して、"ruby" と入力し、("は要りません)スペースを入力した後、
Signing Toolsフォルダの中にある、"generate_keys.rb" をTerminal.appへドラッグアンドドロップしてreturnキーを押します。
If you lose it, your users will be unable to upgrade! が表示され、プロンプトが表示されたら、ホームディレクトリに移動し、"dsa_priv.pem" と "dsa_pub.pem" が出来ている事を確認します。
(この二つは無くすと後々厄介ですので、 忘れないように保存しておきます。)
続いて、" dsa_pub.pem" を プロジェクトのディレクトリのResourcesフォルダへコピーし、Xcode の Resources にも追加します。

追加出来たら、Info.plist へ必要な情報を追加します。
追加する内容は、Keyが「SUPublicDSAKeyFile」 Valueが「dsa_pub.pem」と Key が 「SUFeedURL」Valueが「 web上へ置くxmlのアドレス」です。
InfoPlist.strings を開き、SUFeedURL = "web上へ置くxmlのアドレス"; を追加します。
(例:SUReedURL = "http://www.hoge.jp/AppName/Updates/en/AppName.xml";
これでアプリケーション側は終わりです。後は xml と表示する html を作成し、Webへアップロードして終わりです。
最後に、アップロードの際は "dsaSignature" を新しくする必要があります。
ビルド後にZip圧縮したら、ターミナルで
ruby[S]Extras/Signing Tools/sign_update.rb[S]zipのPath[S]保存している dsa_priv.pem
で dsaSignature を作成しWeb上のxmlを変更します。
※[S]はスペース
Xcodeのバージョンが上がったり、Sparkleで大きな変更が有った場合は、記述通りにいかないかもしれませんので、ご注意を。
また、今回の組み込み方法はデジタル署名を使用した例です。
トンボを激写
iPhone 4 対応状況
iPhone 4が発売されて1週間以上経ちましたが、macTipsでリリースしているアプリの対応状況は、△です。
iOS 4には動作確認と軽い修正をし、アップデート済みですので問題なく動きます。
完全対応は、iPhone 4のRetinaディスプレイ対応と合わせて対応します。(マルチタスクとか) 完全対応版は、現在 mCounter、MoneyCalc、PhotoZipSend が審査中ですので使われている方は、少々お待ち頂きたいと思います。
SoundShutter、PhotoMemories は、Retina対応は済んでいますが、実機が届いてからデバックするのでもう少し時間がかかりそうです・・・。
植物園
昨日、植物園に行って来ました。
一番の目的は時計草!
という事で、色々撮りながら探してたのですが、なかなか見つからず...
友人が花壇の手入れをしている人にどこに咲いているか聞くと・・・
「あぁ... 時計草は園の外ですよ」
(= ω = )え!? (・ω・ )!?
と言う事で、園の外に咲いておりました(笑
蒸し暑くて気持ちの半分は写真どころじゃなかったけど...
いやー、楽しいですなー。
豪雨の合間に
雨が降るのは知っていたけど、どうせ夕方頃だろと思って友人を誘い写真を撮りに。しかし出発した瞬間降り出し、そして数十分後豪雨に。
でもせっかくなので色々移動し、雨の降っていない所を見つけて撮ってきました。
アザミを撮っていたら視線を感じたので、横を見ると蜘蛛が警戒してた。
しかし、雨の日は駄目だね。メガネが曇ってピント合わせどころじゃなかった。
ちなみに昨日書いたてんとう虫もどきは、正式名称がテントウムシダマシと言うらしい。弟に教えてもらった。ナイス弟!
てんとう虫もどき
OS X または iOS のローカライズ
今日、Twitterの @iphone_dev_jp にローカライズの質問が上がっていたので、そういや急に対応してと言われた時に、確認するの面倒だったなぁと思い出したので備忘録を。
da : デンマーク語
Dutch : オランダ語
English : 英語
fi : フィンランド語
French : フランス語
German : ドイツ語
Italian : イタリア語
Japanese : 日本語
ko : 韓国語
no : ノルウェー語
pl : ポーランド
pt_PT : ルーマニア語
pt : ポルトガル語
ru : ロシア語
Spanish : スペイン語
sv : スウェーデン語
zh_CN : 中国語
zh_TW:台湾語
Appleのリファレンスによると、ここに従っているようです。
上の一覧は、Finder.appの中を漁って調べたものです。
まあ、これだけ有れば普通は十分かと。
そして追加方法ですが、Xcodeのローカリゼーション追加の項目にはデフォルトで4言語(English, Japanese, French, German) しかリストに出てきません。

なので、自分で入力します。

そしてでき上がったファイルには元の言語がコピーされているので、そこを修正するだけです。
nib、xib のローカライズは作ってしまった後では、大本のGUIを変更した時に自動で変更されないのでかなり面倒。
iOSでは、xibをユーザーの方がローカライズして送ってくる事はまず無いので、xibをローカライズせずにラベルなどアウトレットで繋いでLocalizable.stringsで生成時に変更するようにしています。

for OS X







for iPhone
























