読者です 読者をやめる 読者になる 読者になる

カッパでも分かるiOSアプリゲーム開発

カッパがひたすらゲーム制作に関することを書くブログです。Railsに関するTipsもたまにまとめてます。

【悲報】かっぱサーガのiOS アプリ申請がリジェクト その原因と対策

かっぱサーガ iOSアプリ申請
スポンサードリンク

f:id:InvokeTwoA:20151102033407j:plain

リジェクト……なんて悲しい響きなんだ。

f:id:InvokeTwoA:20151009145746p:plain「俺たちがプレイされるのは」
f:id:InvokeTwoA:20151023185730p:plain「いつになるんだろうか」


前回、心が折れそうになる超面倒なアプリ申請をしたかっぱ。kappa-game.hatenadiary.jp

しかし、申請から

2015年10月22日(木) 19時にリリース申請
↓
2015年10月26日(月) 明朝2時にリジェクト

f:id:InvokeTwoA:20151009145746p:plain 「い、いったいどういう事ですかカッパさん!」
f:id:InvokeTwoA:20151023183618p:plain 「お、落ち着きたまえスライム君」

覚悟してたとは言え悲しいものだ。

急いでリジェクト内容を確認してみる

iTunes connect に行くと、

以下のプラットフォームで問題があります。
iOS での未解決の問題:1

f:id:InvokeTwoA:20151023183618p:plain ゴクリ……

1.0.0 バイナリでの却下 October 26, 2015
2.1 Details During review, your app crashed on iPhone running iOS 9.0.2 when we: tap ” はじめる” and ”せってい” This occurred when your app was

f:id:InvokeTwoA:20151009145746p:plain 「英語で書いてあります! 翻訳してみましょう……」
f:id:InvokeTwoA:20151023183618p:plain 「iOS9.0.2 で『はじめる』、『せってい』をタップしたらクラッシュした……なんてこった。ゲームが始まってすらいないべ」

すべてのiOSバージョンでテストするの大変だもんなぁ。
それでも最新バージョンとその周辺は一通りチェックすべきだったかもね。

さらにメール形式になって詳細を確認する事もできる。
(返信などで何かをアピールする事もできる)

2.1 - Apps that crash will be rejected
2.1 Details

During review, your app crashed on iPhone running iOS 9.0.2 when we:

tap ” はじめる” and ”せってい”

This occurred when your app was used: 
- Offline
- On Wi-Fi
- On cellular network

We have attached detailed crash logs to help troubleshoot this issue.

Next Steps

Please revise your app and test it on a device to ensure that it runs as expected.

Resources

For information on how to symbolicate and read a crash log, please see Tech Note TN2151 Understanding and Analyzing iPhone OS Application Crash Reports.

If you have difficulty reproducing this issue, please try testing the workflow described in Testing Workflow with Xcode's Archive feature.

If you have code-level questions after utilizing the above resources, you may wish to consult with Apple Developer Technical Support. When the DTS engineer follows up with you, please be ready to provide:
- complete details of your rejection issue(s)
- screenshots
- steps to reproduce the issue(s)
- symbolicated crash logs - if your issue results in a crash log

クラッシュレポート.1
クラッシュレポート.2
クラッシュレポート.3

へぇー クラッシュレポートまで送ってくれるのは便利。

f:id:InvokeTwoA:20151013203140p:plain「On cellular networkってなんですかカッパ先生!」

f:id:InvokeTwoA:20151023183618p:plain「電話回線や3G回線の事だね」

アップルはオフライン、wi-fi、3G回線とすべての状況でちゃんとテストしてくれてるみたい。
ありがてえ、ありがてえ。

結局原因は?

初めはiOS8 と 9 の差異の問題だと思ってたけど、純粋なプログラムミスだった模様……。
テスト中は色々なデータが userDefault に保存されたままになってたからたまたま通ってただけで、
真っ白な初期データでプレイするとバグる \(^o^)/

要は userDefault に保存されてるデータの nil チェックがおろそかになっていた。
なので userDefault へのアクセスを下記のように改修

    class func getDataByInt(key: String) -> Int {
        if isDataExist(key) {
            return NSUserDefaults.standardUserDefaults().integerForKey(key)
        } else {
            return 0
        }
    }

    class func isDataExist(key: String) -> Bool {
        if (NSUserDefaults.standardUserDefaults().objectForKey(key) != nil) {
            return true
        }else {
            return false
        }
    }    

その他、いろいろ直して再度申請。
まさかスタート画面からボタンを押したら落ちるアプリを申請に出していたとは……恐るべし、カッパ

そして再びアプリ申請へ

どうせならスクショ画像も新たにもう一枚作る事に。
リジェクトされるごとにアプリの品質が上がっていくのだ。

余談

iTunes Connect

iTunes Connect

  • Apple
  • ビジネス
  • 無料

このアプリいれればレビュー状況が変わるとすぐに通知くるので便利。