【iOSアプリ】初めてのリジェクトをくらってしまった話

どうも。Reoです。今回はわりと雑談。

 

先日Robinのアップデートをしようと審査に出したら初めてリジェクトをされてしまいました。

iOSアプリを現時点で4本出していますが、リジェクトくらったことないのが唯一の自慢だったのに・・・!

Changes needed!!!

 

リジェクトされること自体は別に珍しいことでもないんですけどね。

 

リジェクト理由は「シャッターボタンを押すとアプリがクラッシュするよ!」ってことでした。

以前、時間割アプリだったかで起動画面だったか時間割詳細を見る画面だったかを開くとクラッシュするっていう結構致命的なバグを残したまま審査に出したことがあるんですが、その時は審査通ったんですよ。

正直めちゃくちゃ焦りましたね。アップデートされて、おー審査通ったやったーって思って数日後開いて見たら落ちまくるっていう。原因は確かなんか一箇所コメントアウトしてたのを忘れてそのまま出したみたいな感じでした。

 

なので今回リジェクトされて、その理由見て、またやらかすことだった!サンキュー!!って思ったんですよね。

そしていざ調べて見ると全然落ちないんですよね。

落ちないじゃん!!!!!

えーなんでなんでーって色々試しているうちに他のところがうまく機能していないのを見つけて、別のところのバグをいくつか直すことができたんですが、肝心のシャッターボタンはうまく機能していました。

 

リジェクトされた理由と一緒にクラッシュログとスクリーンショットが添付されていたんですが、またそのクラッシュログを解析しようにもXcodeのOrganaizerからdSYMダウンロードしようとしてもなんか怒られるんですね。

んでこれに承諾しようと思って探し回ったんですが全然見当たらない。

おそらく既に承諾済みだけれど反映されてないみたいでした。

これはもうResolution Centerで頑張って英語打ってやりとりするしか無いかなーと思いました。いやもう落ちないんだけどって言いたかった。

 

よくよく添付されたスクリーンショットを見てみると、カメラ画面なのに映像がとってこれてない状態でした。これってもしかして映像取れてきてない?って思ったのがビンゴでした。

カメラを使ったアプリは一番最初に「カメラへのアクセスを許可しますか?」みたいなのを聞いてカメラを使用できるようにしないといけないんですが、それを許可していない時の処理を全くしてなかったんですね。

アクセスできないようにしてシャッターボタンを押して見ると無事クラッシュ。

 

いやwwww写真撮るのがメインのアプリだって言ってんじゃんwwwなんで許可しないのwww

って正直思いました。

正直思ったけどね?でもまぁそういう人がいないことはないでしょうし、間違えて押しちゃったーとかもあるでしょうしね?

まさかそんなところ見られるとは思わなかった。というかむしろ前回も同じコードなんだけど通っているのにやっぱり人によって大分違うってことなんかなーって感じです。

とりあえずはこの処理を入れてバッチリ。

 

そして初めて知ったんですが、このカメラへのアクセスを許可するかどうかの通知は本当に一回ポッキリしか出してくれないみたいですね。

初めてアプリをダウンロードして、それを起動して出てきた1回だけ。一度アプリを消して入れ直しても以前の情報が残っているみたいで、ポップアップが出ないんです。

なので一度拒否してしまったらアプリを削除してもう一回ってしようとしてもダメで、設定画面からわざわざ許可しないといけないっぽいです。

 

通知とかは毎回聞いてくるのでカメラもそういうもんだと思っていたんですけどね。こりゃ確かにわからん人からすれば説明書いてないと困りますわい。

 

あ、dSYMはiTunesConnectのMy Appより

 

ここで対象のビルドを選択するとビルド情報が見れるのですが、その中にdSYMをダウンロードっていうのがありまして、そこでダウンロードすることができました。

 

 

諸々バグを直して、もう一度審査を受けて無事アップデートできました。

ということで、 Robinバージョンアップしました!!!!

リリースしてから初めてのアップデートになるんですが、アプデするの遅すぎですね。

今回の変更点は

・全体の動作を少し軽くした

・コレクション画面で全てを選択ボタンを追加

こんだけです。

そう・・・こんだけなのです・・・。

まだまだつけたい機能も改善したいことも山積みなんですが、久々にリリースされているバージョンのRobinを開いて見ると、めちゃくちゃ動作が重くてなんじゃこれってなりまして・・・

今回の変更点自体は、もう大分前に実装されていました。

本当は他にも色々加えてからアップデートするつもりだったんですが、そうこういいつつ何もせずに時間ばっかりが経ってしまいました。

こんなことになるならすぐにアップデートしておけばよかったです。

こまめにアップデートするのも大事だなってすごく思いました。

 

Robinをリリースしてからはチームの方のアプリ開発に力を入れたり、Swiftの勉強をしたり、精神的に死んでいたりしたんですが、最近ようやくRobinと向かい合っています。

Swiftの勉強をまともにすることで、今まで書いてきたコードが見てられなくなりまして、まずチームの方のアプリのコードを1から全部書き直して、その後Robinも大分見やすいコードに書き直しました。

そのRobinのコード書き直し作業をしているときに、これ思ったより時間かかるし先にアップデートしたほうがいいんじゃって思って書き直しする前のコードのまま審査に出しました。

そしたらリジェクト食らっちゃうし・・・・

 

最近結構Robinに力を入れていまして、審査を出した後も普通に書き直し作業進めてたんですね。

まさかリジェクトを食らうとは思ってもいなかったのですが、いやー、Gitがあって良かったってめちゃくちゃ思いました。

おかげさまで、ここさっきもっと読みやすいのに直したやんけと思いながら読みづらいコードに合わせて修正しました。

そもそもGitでバージョン管理をしていなかったら、書き直し作業なんてできてないんですけどね。本当にGit様様です。

 

書き直しと言っても1から全部書き直したわけではなく、例えばViewControllerがあまりにも膨大になっているから、ここは別のクラスに分けようとかそういう感じで書き直し作業をしました。

画像をリサイズする関数が無駄に全部のViewControllerに用意されているのとか全部1つにまとめてみたり・・・。

以前までのコードと比較して見ると大分スッキリ見やすくなったと思います。単純に文字数的にも大分減っただろうなーって感じです。

つい昨日一昨日ぐらいにようやくその作業が終わったのですが、見た目はリリースされたバージョンと全く同じです。ユーザーからすればそれ意味あんの?って感じかもしれないし、自分だけが見るコードなんだし自分がわかればいいじゃんとも思うかもしれないです。

でもねーー、やっぱり人に見せられるコードが書きたいんですよ。わかりやすいコードっていうか見やすいコードっていうか。それって結局安全なコードを書くことにもつながると思うんですよね。

 

それと、これまでクラスとかもそんな理解してなく、もう全部が全部ViewControllerに突っ込む感じで、関数とかも結構色々詰め込んで書いちゃってたんですね。

書き直し作業をして、1つの関数にあんまり詰め込まないようにしたことでわかったんですが、ちゃんと細分化することで、どこでエラーが出ているのかがすごくわかりやすくなりました。

 

そんなこんなで書き直し作業が終わったので、いよいよこれからは機能面やらパフォーマンスを改善していく予定です。

とりあえず今月中にまたアップデートしますね。

 

最近わりとRobinすごいねーとか可愛いねーとか言われるようになりました。すごい嬉しいです。

すごい嬉しいんですが、個人的にはRobinよりもっと流行ってほしいアプリがあるんですよ。その名もideaDASHで、私が2番目に作ったアイディアスケッチをするアプリです。

全然アップデートも何もしてないんですけど、これ本当はもっと頑張れるアプリだと思うんですよ。

本当はRobinは1ヶ月程度でゆるく作ってideaDASHに力入れるつもりだったんですが、すっかり代表作の座をRobinに乗っ取られてる気がします。

でも見比べてみるとやっぱりRobinのがスゴイ。デザインとかも含めて本当に自分が作ったの?って思うことも多々あります。

 

ちなみに私のアプリのダウンロード事情でいうと、ideaDASHちゃんは2番目にリリースしたにもかかわらず一番ダウンロード数少ないです。

今回の中国でのダウンロード数がグワッとあがった現象にもれなく私のアプリも乗っかったんですが、ideaDASHちゃんは漏れちゃったんですね。もれなくと言っておいてもれちゃってます。

そのせいもあって大分他のと差がついちゃいました。

ダウンロード事情はまた今度別記事にするつもりです。

 

なんだかんだでやっぱりRobinちゃんが一番頑張ってくれていますし、一番ホットでもあるのでそっちを優先してしまうんですけどね。

でもideaDASHも忘れてないよ!!!!!!

今年中に一度はideaDASHもアプデしたいですね。

 

新しく作りたいアプリ案もいっぱいあるんですけどねぇ。。。

でもSwiftの勉強をしてからアプリ開発すんごい楽しいんですよね。だから活動は以前よりは活発になるはずです。

 

なんだかただの雑談ブログになってしまいました。たまにはこんなのもいいよね。

ブログも変えたいし、LP作りたいし…

でもでもしばらくはRobinのアップデートに集中するつもりです。

Robinはとりあえず課金要素をつけるまでが今年の目標です。それが終わり次第ideaDASHの方やろうかしら。

 

とは言っても以前とは違って、自分のアプリだけやっていればいいわけではないので、案外キツイかもしれないですな〜。

 

とりあえず今日丸一日ブログしか書いてないのでそろそろ別作業に移りたいと思います。

 

リジェクト受けて、そのやりとりするところのスクショとか載せるつもりだったんですけど、無くなってたんで諦めました。

でもリジェクトを受けた履歴だけは残ったよ!!!!

ちなみにリソリューションセンターでのやり取りは一回もしてません。

 

 

これからもアプリ共々よろしくお願い致します。

それではでは。

2018/04/13追記
ついこの間全く同じ理由でリジェクトされました。(バカ)


しかしこれが初めてのリジェクトかー。
この先リジェクト祭りで最終的にAppleと電話することになるなんて夢にも思わんよな。Robinではないけれど。
Robin

Comments...

コメントは認証制です。詳しくは下記の注意をお読みください。お気軽にコメントお願いします!

Write a Comment

コメント時の注意

「Twitter」「Facebook」「Google+」「WordPress」のいずれかのアカウントをお持ちの方は各アカウントと連携することでコメントできます。 コメントしたことはSNSに流れませんので、アカウントをお持ちの方はこちらの方法でコメントを投稿して下さると嬉しいです。 アカウントをお持ちでない方はメールアドレスで投稿することができます。 初回コメント時は承認後に表示されます。

Related Memo...

UINavigationController + UIScrollView の組み合わせで使っている時に謎の余白ができる時

UINavigationController + UIScrollView の組み合わせで使っていて、UIScrollView 上に AutoLayout で上下左右0で View を設置しているのに、30px程度上にずれてしまうとき。

`navigationController.navigationBar.isTranslucent = false` にすると直るかもしれない。

ScrollView上のコンテンツとNavigationBarの重なっているところが透過していたら多分これで直せるはず。

通常のターゲットではちゃんと動いているのに、iOSSnapshotTestCase を用いたテストでだけこの対応が必要なのよくわからないけれど。。。

iOS

記事を書くほどでもないけれどメモっておきたいこと

テスト投稿。

例えばiphone7 の画面サイズ

750 × 1334
半分375 × 667

iOS

UITableView.RowAnimation の .none はアニメーションするよ

UITableView.RowAnimation の .none はアニメーションがnoneなわけじゃなく、デフォルトの設定を使うよという意味らしい。

The inserted or deleted rows use the default animations.

なのでアニメーションしちゃう。今更の気づき。

 

iOS
more