Appleとの戦い

大変お待たせしました。今日Appleの審査に通り、無事(?)リリースを行えました。

今回のリリースは前回リリース時のバグ(データ永続化されてない)を修正したものです。

永続化されない問題を回避を再優先にしたリリースのため、その他いろいろと細かなバグが残っています。

今回の記事では経緯をまとめておこうと思います。

マンガ新刊情報のアプリではCocoaContorolsに登録されているライブラリ、MagicalRecordを利用しています。

前回のリリース時にこのMagialRecordを最新化+mogeneratorを最新化してました。

最新化に伴い使い方に一部変更があり、永続化方法が変更になってました。

修正は前回リリース日には既に完了しており、うまく行けばその後1週間後にAppleの審査が通り無事リリースされる見込みでした。

今回1ヶ月越しのリリースになったのは、このAppleの審査に4度落ちたからです。

1回目落ちた理由

[March 1, 2015 at 4:08 AM]

  • 3.3 - Apps with names, descriptions, screenshots, or previews not relevant to the content and functionality of the App will be rejected

アイコン型広告の範囲を広げたことによる影響。
→アイコン型広告の公開範囲、(ギャンブル系など)を除去。

  • 3.8 - Developers are responsible for assigning appropriate ratings to their Apps. Inappropriate ratings may be changed/deleted by Apple

最新刊情報のマンガ一覧で今アプリを公開している状態のレートにそぐわないとのこと。
つまりは、やらしいタイトルのマンガが対象年令のレートにそぐわないらしい。
→対象年令は9歳から12歳以上に変更しました。

2回目落ちた理由

[February 22, 2015 at 8:16 AM]

  • 3.3 - Apps with names, descriptions, screenshots, or previews not relevant to the content and functionality of the App will be rejected

また3.3ですが、今回はアプリ内でRakutenやAmazonで購入できるというアプリ紹介文とアプリ紹介画像がNGとのこと。 →修正してすぐレビュー。

3回目落ちた理由

[February 12, 2015 at 8:48 AM]

  • 11.13 - Apps that link to external mechanisms for purchases or subscriptions to be used in the App, such as a "buy" button that goes to a web site to purchase a digital book, will be rejected

アプリ内でRakutenやAmazonでの注文がダメとのこと。
まぁ知ってはいたんですが、今まで審査通ってたし今更感。。
アプリの魅力として、最新刊を知る→すぐ注文して購入できる!という流れを作りたかったための機能なのでちょっとレビューアと戦いました。

4回目落ちた理由

[February 4, 2015 at 2:27 AM]

  • 2.25 - Apps that display Apps other than your own for purchase or promotion in a manner similar to or confusing with the App Store will be rejected

アプリ紹介画像に広告のアイコンが表示されているのはNGとのこと。
まぁ、、うん。。。今更ですが、とりあえず消しました。

  • 11.13 - Apps that link to external mechanisms for purchases or subscriptions to be used in the App, such as a "buy" button that goes to a web site to purchase a digital book, will be rejected

3回目落とされたときから継続して戦い中。
アプリのレビューアと別の窓口があるので、そちらにもアプリの審査通らないから助けて!って連絡しました。
その人は、確かにアプリの魅力をわかってない!オレも文句言ったる!と言ってくれたんですが・・・

結局アプリレビューア最強ということで、こちらが折れる結果となりました。

レビューアとの戦いは以上です。

なので中途半端にアプリのアイコンがなくなってたりといろいろ指摘された箇所をつぎはぎで修正しています。

ただ永続化の問題を直すためだけだったのに・・・

なので次回リリースはSwiftを使って軽量化+デザインリニューアルを測りVer3を構想中です。

また次回のリリースをお待ちください。

SwiftでJSONを使ってみた

今までObjective-cJSONをやっていたんですが、 Swiftをそろそろやってみようと思い調べながらやってみましたのでメモついでに書き込みます。

共通定数クラス

取得先のURLは共通定数クラスに定義したいので以下のようにしました。 (他にいい書き方ないのかな。。。)

import Foundation

class const {
    /** JSON用URL */
    class jsonUrl {
        class var hoge:String{
            return "http://hoge.com/hoge.json"
        }
        ・
        ・
        ・
    }
}

JSONを取得してログに出してみる

JSONのサンプル

取得するJSONのサンプルは以下の通りです。

{
  "items" : [
    {
      "title" : "hogeeeeee",
      "image" : "http://hoge.co.jp/hogeeee.jpg",
      "release" : "2015-03-01T00:00:00+00:00",
      "auth" : "保毛保毛"
    },
    ・
    ・
    ・
   ]
}

定数を取得

先ほど Const.swift で定義した値を使ってNSData型で取得します。

var strJsonUrl = const.jsonUrl.hoge
var jsonData = NSData(contentsOfURL: NSURL(string: strJsonUrl)!)

Swiftで単純にやってみた

キーitemsの中にあるリストから1つ目を取得し、その中のキーtitleのValueを取得してみます。

let jsonMap:NSDictionary = NSJSONSerialization.JSONObjectWithData(jsonData!,options: NSJSONReadingOptions.AllowFragments, error: nil) as NSDictionary
if let itemsArray = jsonMap["items"] as? NSArray {
    if let firstItem = itemsArray[0] as? NSDictionary {
        if let item = firstItem["title"] as? NSString {
            println(item)
        }
    }
}

面倒すね。。

hogeeeeee

SwiftyJSONを使ってみた

SwiftyJSONを取得します。 実際に使うのは Source ディレクトリの中にある SwiftyJSON.swift のみです。 そのままプロジェクトにドラッグアンドドロップで取り込みます。

git clone https://github.com/SwiftyJSON/SwiftyJSON.git

ソースは以下のとおりです。

let json = JSON(data:jsonData!)
println(json)
if let title = json["items"][0]["title"].string {
    println(title)
}

とっても簡単! SwiftyJSONがすげー!って記事をいくつか見たんですが、半信半疑でやった結果 やっぱりすげー!でした。

参考

※サイトに記載されてるままではOptionalでエラーになってしまいました。

バーテンダーがいない未来

今日はいつもと違って思いつきというか、独り言です。。

f:id:kakushika:20150302060821j:plain
将来なくなる職業としてバーテンダーがあるらしい。

ロボットがこれからどんどん普及してなくなるとのこと。

これ今にでもできるんじゃない?と思うんだけど。

凄いバーテンダーは凄い。

けど、それに該当しないレストランなどでよく見かけるバイトのバーテンダーというか、ドリンク作る人ってノズルから出るアルコールやらをカップに注いでるだけで、自動化すりゃいいのにってほろ酔いながらもいつも思ってた。

見てるとファミレスのドリンクバーと変わらなそうなんだもん。

まぁ実際kickstarterでも、既にあるようで

f:id:kakushika:20150302060901j:plain

まぁー家庭用ですわな。


お店にこれじゃ、なんかどしっと感ない。

昔ゲーセンのメダルコーナーにあったブラックジャックのこのゲーム見たときは未来感じたし、今でもこの仕組みいけるんじゃないかって思うんだけど。
f:id:kakushika:20150302061050j:plain

キャラクターは大切だと思う。

f:id:kakushika:20150302061152j:plain
こんなんや、
f:id:kakushika:20150302061207j:plain
こんなんだと美味しくなさそう、。
というか油混じってそう。。。

やっぱり全面にディスプレーでバーテンダーの人の動画なり、キャラクターを映すのがベストだよな。。

お酒の分野に強いサントリーとかやらないのかな。。
f:id:kakushika:20150302062526j:plain

フェスやクラブやレストランでいけるんじゃないって思うけど。。
f:id:kakushika:20150302062551j:plain

ホテルロボット化進めてるハウステンボスとかもいけるんじゃない?

カクテルのメニューメチャクチャ多いからスマホのアプリ経由で好みのドリンクをオーダー。

好みの問題でいつも飲むの同じだったりするし、お気に入り登録とか必要でしょ。

あとは、これ飲んでる人は他にこれ飲んでる人が多いよ!的な協調フィルタリングとかしてさ。


支払いはスマートにApple payで。

In Review

http://farm8.staticflickr.com/7160/6589717271_9e36c614d6.jpg

大変おまたせしています。
マンガ新刊情報のアプリについて今朝Appleの方でレビューが開始されました。

ただ、In Reviewに入ったのはいいんですが、そのまま土曜を迎えてしまっています。
今度こそ審査は通過する見込みですので来週火曜にはリリースされるのではと思っています。
※シアトルで審査していることを考えると日本時間では火曜になると思います。

もう少々お待ちください。

今回の臨時の修正でいろいろと不要なソースとなってしまったものもあるので、これを気にObjective-cからSwiftに切り替え軽量化、安定化を試みます。

いろいろと追加したい機能も考えているのでこれからもどうぞよろしくお願いします。

楽天、Amazonへのリンクを停止します

Appleからの通達でアプリ内で楽天Amazonへのリンクを許さないと来ましたので停止いたします。

手間なく購入忘れを防ぐ方針でしたが了承を得られませんでした。

購入リンクについては今後改めて方針を検討します。

今しばらくお待ちください。