*

動画で英語を学習できるiOSの無料アプリCapTubeをリリースいたしました。

公開日: : Swift, プログラミング ,


スポンサードリンク



個人では初となるiOSアプリをリリースいたしました。

何度もリジェクトをくらいながら、開発開始からリリースまでに3ヶ月ほどかかりました。
その経験を踏まえて、本エントリーでは、アプリのリリース時にApple様よりいただいたリジェクト事例を記載させていただきます。

まずは、アプリの紹介をさせていただきます。英語を動画で学習することができる無料アプリです。名前はCapTubeです。

・iTunes リンク
https://itunes.apple.com/jp/app/captube/id1171045056?l=ja&ls=1&mt=8

・紹介動画(Youtube)

普段から開発(Java、C#、C++、Swift、Objective-C、Ruby on Rails)でエンタープライズ向けの開発のお仕事をやっております。
技術系のブログを複数やっておりますので、コーディングには悩まないのですが、いろいろ個人でやるとなると大変ですよね・・・

1. We discovered one or more bugs in your app..on Wi-Fi connected to an IPv6

IPv6環境でナビゲーションバーのアイコンをクリックするとアプリがクラッシュするとの指摘でした。

これで4回ぐらいリジェクトをくらいました。3回目のリジェクトのあとサンノゼから携帯に電話がありました。
内容は、なぜそんな内容で電話をかけてくるのだろう??、と思うぐらいのものだったのですが、着信時は、
英語かー!?、と焦ったけど日本語での電話でしたのでとても印象に残ってます。

とリジェクトの内容から完全に逸脱していますが・・・

結論から記載させていただくと、この指摘はIPv6ネットワークとIPv4ネットワークの間に立ってNATが起こす遅延に起因するマルチスレッドの不具合でした。

10日ぐらい再現を試みたのですが、私の環境では再現せず。クラッシュダンプとにらめっこする毎日でした。
しょうがないので、あれかなー?、これかなー?、とちょこちょこ直しながら、I can’t reproduce!とのコメントを付けて審査を要求しました。

そんな状態で審査を依頼しても当然のようにリジェクトされます。
いっぱいググって、外国のディベロッパーが「Wi-Fi connected to an IPv6」の問題はIPv6が本質的な原因ではない
的な事を書いていたのを見て、これは遅延により発生頻度が跳ね上がるマルチスレッドの問題だと感じました。

その線で自分のアプリを調べていくと、スレッドが滞留していく現象が発生している事に気付きました。
マルチスレッドプログラミングなんてエンタープライズ系のシステムだとあたりまえなので、自分の書いたコードにそんな問題があるなんて気づいてませんでした。でもエンタープライズ系のiOSアプリでゴリゴリにマルチスレッドって処理ないですよね・・・

具体的な対処方法ですが、スレッドが「あ!俺終わらないといけないんだ」と認識させるようにチェックポイントを入れるといった事となります。iOSのスレッドは終了させる事ができないので、走っているスレッドが自ら気づいて止まるようにするしかないです。

上記のような修正を実施し、審査を要求するとすんなりこの指摘はクリアーできましたが、この押し問答の間に他の指摘も追加されていったんですよね・・・
この続きは次のエントリーで記載させていただきます。


スポンサードリンク

Googleアドセンス

Googleアドセンス




関連記事

Xcode6_Beta5&SwiftでUITableViewでUINibを使ったカスタムセル(UITableViewCell)を利用する方法

前回は、「Xcode5&Objective-CでUITableViewでUINibを使ったカ

記事を読む

Xcode6(xcode_6_beta_7、Xcode 6 GM seed)のインストール方法

2014年9月22日追記 Xcode6の正式版がリリースされApp Storeからインストール可能

記事を読む

iOS8開発者向けお勧め本紹介[詳細! Swift iPhoneアプリ開発 入門ノート Swift 1.1+Xcode 6.1+iOS 8.1対応]

iOS7開発者向けお勧め本紹介を以前に紹介させていただきまいたが、今回は同じ著者(大重美幸様)の本を

記事を読む

Swift入門[公式リファレンスのチュートリアルのSteps2の前半]

「Swift」と「Xcode 6」を少しずつさわっていこうと思ってはいるのですが、「Xcode 6

記事を読む

Xcode6-Beta2でSwiftのユニットテスト(Unit Test)をXCTestフレームワークで試してみる。

タイトルの通りですが、Xcode6-Beta2でSwiftのユニットテスト(XCTestフレームワー

記事を読む

no image

スマートフォン向けのアプリケーション開発フレームワークを比較してみる。

本日のエントリーではスマートフォン向けのアプリケーション開発フレームワークを比較してみようと思います

記事を読む

Xcode6とSwiftで画面コンポーネント(UIコンポーネント)を配置して利用するための基本

当然ですが、iOS向けのアプリケーションを作成するためには、 画面に画面コンポーネント(UIコンポ

記事を読む

Xcode6-Beta3でSwiftでBDDを行うためにQuickを導入しようと思ったが、all-product-headers.yaml:4:13: error: Could not find closing ]!が発生する

そろそろQuickを利用しようと思いまたまたハマりました。というかハマり中です。 「Quick

記事を読む

Swift入門(Xcode6のXCTestフレームワークで学ぶ) 第一回「Swiftの概要」 

Swiftの簡単な説明 アップルのiOS(iOS8以降)およびOS Xのためのプログラミング言語。

記事を読む

no image

Androidの「Action Bar Icon Pack」を調査する。

Androidアプリケーションを作成する時にはアイコンの利用はほぼ必須です。 「Action Ba

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

動画で英語を学習できるiOSの無料アプリCapTubeをリリースいたしました。

個人では初となるiOSアプリをリリースいたしました。 何度もリジ

no image
Ruby on rails4系でBootstrapを利用するためのtips

MacでRuby on rails4系のBootstrapを利用しよう

no image
Java、Eclipse、JUnit関連のエントリーの移行のお知らせ

Java、Eclipse、JUnit関連のエントリーは http:/

iOS8開発者向けお勧め本紹介[詳細! Swift iPhoneアプリ開発 入門ノート Swift 1.1+Xcode 6.1+iOS 8.1対応]

iOS7開発者向けお勧め本紹介を以前に紹介させていただきまいたが、今回

Swift入門(Xcode6のXCTestフレームワークで学ぶ) 第二回「関数(メソッド)とクロージャーの利用方法」

前回はSwiftの概要をザックリと説明させていただきました。 今

→もっと見る

Optimization WordPress Plugins & Solutions by W3 EDGE
PAGE TOP ↑