Hatena::Groupiphone-dev

iOS プログラミングメモ

2013-07-30 (Tue)

MacAppStoreの規模はなかなか小さかった 23:00  MacAppStoreの規模はなかなか小さかった - iOS プログラミングメモ を含むブックマーク

MocaMac版 は、おかげさまで最高で有料トップ7位の位置まで行きました。ありがたいことです。ちなみにその日のダウンロード数は50弱くらいでした。200くらいダウンロードされれば1位になるんじゃないだろうか。

ちなみにMacAppStoreは、一週間に一回くらいダウンロードされるくらいでもカテゴリランキングに入れたりします。

仕事効率化カテゴリだけでも、毎日一個くらいは新しいアプリが出てきてるみたいなんだけど、知られてないアプリ多いだろうな。MacBank は再開しないのかしら。

トラックバック - http://iphone-dev.g.hatena.ne.jp/ktakayama/20130730

2013-07-25 (Thu)

MocaのMac版が登場するまで 11:20  MocaのMac版が登場するまで - iOS プログラミングメモ を含むブックマーク

Mocaの Mac版 がリリースとなりました。一度リジェクトされたりしたので、その件について。

いまDevCenterが長期メンテナンス中でプロビジョニングが更新出来なかったり色々と面倒な状況ですが、審査プロセスには影響はないみたいです。自分が申請した段階では、レビューにかかる日数は5 business daysという風に書いてありました。いまメンテ中だからその情報は見れないけど、特に変わってないような気がします。

さてリジェクトの件。これは「名前に問題あり」とういメタデータのリジェクトでした。AppStore上の名前とインストールしたアプリの名前が一致しないよということです。ちなみに英語だとAppStore上の名前は「Monthly Calendar Moca」としています。アプリの方は単に「Moca」なのでダメだということです。

今回の場合はAppStore上の名前を変更することで解決できるということで、そのための手順が書いてありました。バイナリを更新しない場合の手順のようです。メタデータを編集して、右上の"Submit New Metadata"をクリックしてくれと書いてあったんですが、そのボタンが無い…!!右上にはいつも見かける"Ready to Upload Binary"のボタンがあります。うぉう、なんてことだ。探したけど見付かりません。意を決して"Ready to Upload Binary"をクリックすると普通にバイナリのアップロード待ちになってしまった…!うわー、やっちまった。メタデータの更新のみだったら審査も速そうだったのに。

リジェクト理由が記載されてるResolution Centerのページに返信用のフォームがあったので、"Submit New Metadata"ボタンないから"Ready to Upload Binary"ボタン押しちゃったんだけどどうすればいいの?とか我ながら恥ずかしい質問を送って1日待ってみることにしました。

で、これといった返信がない*1ので仕方ないから前回送信したバイナリと同じものを再サブミットしましたとさ。

7.11 20時申請
7.17 01時リジェクト
7.18 09時再申請
7.24 08時レディーフォーセール!ふぉー!

あとになって気付いたんですが、"Submit New Metadata"ボタンがでなかった理由って、英語版のメタデータしか編集しなかったからのような気がします。日本語版も編集していれば、ボタンが出てきたのかもしれない。

しかし、このリジェクト理由はiOS版でも同じだった気がするんで今後のiOS版のアップデートが心配です。

*1:Ready to Upload Binaryボタンを実行した後は、Resolution Centerのフォームは使用不能になるようです

tootoo2013/09/28 07:34いま同じ症状にはまってます。
ちなみに、デフォルト言語以外にはApp Review Information自体がないので、
「英語版のメタデータしか編集しなかったからのような気がします。日本語版も編集していれば、ボタンが出てきたのかもしれない。」
ということはないようです。たぶん、アップル側の設定ミスではないかと。
Ready To Upload Binaryは押していないので、画面キャプチャしてAppleに問い合わせ中です。

トラックバック - http://iphone-dev.g.hatena.ne.jp/ktakayama/20130725

2013-07-12 (Fri)

MocaのMac版を作ってました 12:17  MocaのMac版を作ってました - iOS プログラミングメモ を含むブックマーク

最近Macアプリの開発情報を更新していたのは、月特化カレンダーMoca のMac版を作っていたからでした。

昨日サブミットしたのでお知らせします。今月中にはリリースできるといいな。

f:id:ktakayama:20130712112553p:image:w600

Macアプリの開発、思ったより大変でした…。5月はじめから着手して他の仕事はほとんどなかったので、丸2ヶ月くらいかかってしまったということか。iPhone版のMocaより時間かかってるという。

最初のうちは「iOS版のコードをちょろっと変更しただけで動くぜひゃっはー」とかいう感じで進めてて「みんなMac版作ればいいのに」なんて思ってたんですが、だんだんそうもいかなくなってきて気付いたらいばらの道へ。Model系のクラスはわりとそのままいけるものが多いんですが、UIKitとAppKitとの違いはボディブローのように効いてきます。

  • 兄弟View同士を重ねられない(重ねる場合はSubviewsにする)
  • 原点が左下の[0,0] (iOSは左上[0,0]が原点)
  • TableViewやScrollViewのAPIがなんか全然違う、構造も全然違う
  • NSViewControllerとUIViewControllerはイコールじゃないらしいとか
  • Layerの扱いもなんか違うっぽい

あとカレンダーまわりのAPIがひどすぎて泣けた。Moutain Lionより前はCalendarStoreていうフレームワークがあったんだけど、Moutain LionからはiOSと同じEventKitフレームワークが導入されたので「こいつはラッキー」と使い始めたのが運の尽き。バグらしきものがすごくてビビった。多分これでカレンダーアプリ作ってる人いないんじゃないのかっていうレベル。まだ新しいOSとか試してないから、その辺ちゃんと調査してバグリポートせねば。

もちろんMacアプリ開発にも良い点はあって、特に動作速度が速くてメモリが芳醇なのはすばらしい。iOSの場合はちょっとでも動作速度を上げるためになるべく余計な処理を省くようにしていましたが、Macではそれほど気にしなくても体感できる差はあらわれない。そして Cocoaバインディング が超便利で感動した。Cocoaバインディングを使うとViewの変更(メニューの選択やテキストフィールドへの入力)をModelへ反映させるための雑多なコードを書かなくてもよくなる。たとえば設定画面とかでNSUserDefaultsの中身を更新するような機能を作る場合、コードは一切書かなくていい。ただ、CocoaバインディングはiOSでは使えないみたいで残念。

というわけで、みんなMacアプリ作ればいいのに。

uchiuchi2013/12/28 03:54Mac版Mocaを利用させていただいております。
まだまだこの先期待できるアプリだと思いますが、とりあえず以下の通り要望させていただきますので、お願いします。

【要望】
・下部に「今日に移動」など直接今日に飛べるボタンが欲しい。
・メニューバーを使用できるようにして欲しい。
・予定を入れる時に最初から詳細入力が出来るようにして欲しい。
・その月の背景に薄く月名を入れて欲しい。

以上、その他にもまた何かあったら連絡させていただきます。
とても便利に使わせていただいておりますので、よろしくお願いいたします。

リオンリオン2014/01/15 10:31mac版mocaについて
背景に月名表示が出来るようにして欲しい。
Googleカレンダーの同期内容を、カレンダーを切り替えると予定が気えてしまう。

改善お願いします!

uchiuchi2014/01/20 04:25不具合がありますので、ご修正いただければと思います。

【不具合】
・複数日に渡る予定を入力し、開始時間と終了時間を指定すると開始日のみに予定が表示され、それ以外の日には予定が表示されません。

ダブルブッキングをしてしまいそうになるのでご修正いただければと思います。

MOMMOM2015/07/17 01:55新規登録の画面にするとすぐにホーム画面に戻ってしまい、設定すら出来ないので、しっかり改善して頂きたいです。

トラックバック - http://iphone-dev.g.hatena.ne.jp/ktakayama/20130712

2013-06-28 (Fri)

Macアプリでグローバルなショートカットでアプリをアクティブにしたりする方法 19:38  Macアプリでグローバルなショートカットでアプリをアクティブにしたりする方法 - iOS プログラミングメモ を含むブックマーク

ちょっとめんどくさかったのでメモ。詳細はまた今度書く可能性が…ない…と思う…。

要約:DDHotKeyShortcut Recorder を使う

DDHotkey

DDHotKey は、アプリがアクティブじゃなくても指定したショートカットが入力された場合に指定したメソッドを実行する

  • 適当に NSApplicationDelegate とかで受け取ればいいんじゃないかな
  • [NSApp activateIgnoringOtherApps:YES] とかするとアプリがアクティブになる
  • [NSApp hide:nil] するとアプリが隠れる
  • つまり、表示・表示のトグルができる

Shortcut Recorder

Shortcut Recorder は、設定画面とかでよくあるキーボードショートカットの設定機能のためのフレームワークを提供してくれる

  • Framework をビルドしたらそれを自分のプロジェクトに入れればそのまま使える、便利
  • 独自の Framework はリソース内にコピーされるようにしないといけない、これがわかんなくてハマった
    • Target の設定にある「Build Phases」で「Add Build Phase」して Destination を Frameworks として ShortcutRecorder.framework をコピーするようにしておく
    • Growl の Framework を追加してる人の記事を参考にした → no title
  • 「Build Settigns」の「Runpath Search Paths」に「@loader_path/../Frameworks/」と入力しておく
  • UI は ShortcutRecorder のデモアプリから SRRecorderControl をコピペしてくるのが楽
    • デモアプリにはフィールドが二箇所あるけど、上のやつをコピーするといいかも
      • 上のやつは、バインディングで shortcut キーが割り当てられてる
      • つまり設定値を保存したりするコードを書かなくても、[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"shortcut"] とすれば設定された値を呼び出せる
    • ちなみに設定画面は DBPrefsWindowController を使うと楽
トラックバック - http://iphone-dev.g.hatena.ne.jp/ktakayama/20130628

2013-06-19 (Wed)

iOSアプリのローカライズの動作チェックとかが簡単になるかもしれないやり方 15:02  iOSアプリのローカライズの動作チェックとかが簡単になるかもしれないやり方 - iOS プログラミングメモ を含むブックマーク

Macで特定のアプリ、たとえばiTunesを英語のUIで起動させたいと思ったら、Mac自体を英語環境にしたりiTunesのリソースから日本語を抜いたりとかいった方法がありますが、ターミナルを使って以下のコマンドを実行することでも可能です。英語に限らず、引数で指定した言語で起動します。

$ open -a iTunes.app --args -AppleLanguages "(en)"

特定のアプリを英語で開きたくて簡単にできる方法がないかと思って探して見つけました。結構便利です。

で、Xcodeでもこれってできるのかなと思って試したらできました。Macの開発がはかどりますね。まあMacアプリ作ってる人がどれくらいいるかって話で、たいして人々の役には立てないよなあなんて思いながらiOSアプリの方で同じことを試したらできてしまったのでなかなか興奮しました。「Build => Run」すると指定した言語でアプリが起動するので、いちいち設定アプリを開いて言語を選んでちょっと待って…って手間を省けます。

設定方法

アプリ起動時の引数に、上で紹介したようなやつを追加するだけです。

Xcodeの左上にあるターゲットのメニューから「Edit Scheme」を選んで「Run」アクションの「Arguments」に「-AppleLanguages "(en)"」とかって指定するだけです。カンタンですね。

f:id:ktakayama:20130619145936p:image

この状態で「Build => Run」すると、アプリが英語で起動しますよ。やったね。メインのスキーマで指定しておくと混乱するから、英語用とか日本語用のスキーマを追加しておくのがいいんじゃないかと思いました。

残念ながらXcodeのRunから実行した時だけしか有効じゃないみたいなので、一度Stopとかでアプリを落としてiPhone単体で起動したら、デフォルトの言語で表示されます。まあでもこれでちょっとした確認がはかどるのは間違いないかと思うんですがいかがでしょうか!

トラックバック - http://iphone-dev.g.hatena.ne.jp/ktakayama/20130619