Tag iTunes Connect

Developer: App Store ガイドライン 2.12 に抵触しない Web ラップ型 アプリについて

WebView アプリで既存 Web サイトをラップした iOS アプリのストアレビュー時に、 App Store ガイドライン 2.12 でリジェクトされた経験をされた方は少なからずいることと思います。 先日、開発案件でこのリジェクトに遭遇しましたが、無事アプリをリリース出来ましたので、その時の解決方法を残しておきたいと思います。 目次 App Store ガイドライン 2.12 詳細内容 App Store ガイドライン 2.12 対策ロードマップ App Store ガイドライン 2.12 対策詳細 まとめ App Store ガイドライン 2.12 詳細内容 Apple Store ガイドライン 2.12の内容は以下の通りです。 ユニークではない、あまり有用でない、単にウェブサイトをバンドルしたもの、永続する娯楽価値を提供しないアプリケーションはリジェクトされます 自分の制作したアプリが あまり有用でない と言われるとショックですが、Web アプリを制作しリジェクトとなった場合の本題は、次の 単にウェブサイトをバンドルしたもの の一言に尽きると思います。 この事は開発者泣かせではありますが、単にウェブサイトをバンドルしたもの は Web ブラウザでサイトを閲覧すればいいだけなのですから、わざわざアプリ化する意味がなく、結局 App Store ガイドラインの あまり有用でない という表現は正しいことになります。 しかし、諸事情によりこういった あまり有用でない Web アプリをリリースしなければならない場合、どうすればいいのでしょうか。 次項からその解決方法を説明したいと思います。 App Store ガイドライン 2.12 対策ロードマップ 単にウェブサイトをバンドルしただけのアプリを申請し、その結果 2.12 リジェクトとなったときに立てた対策ロードマップは以下のとおりです。 プッシュ通知を実装 Apple レビュワーへの問い合わせ 独自メニューと共有機能を実装 設定画面を実装 コンテンツ表示の UITableView 化 App Store ガイドライン 2.12 対策詳細 プッシュ通知を実装 プッシュ通知はアプリ固有の機能です。Web サイトをラップするだけのアプリでも、サイトの更新やサービスのアップデートは必ず発生するので、これら更新情報を配信する機能をアプリに持たせることで、2.12 のリジェクトに対し一定の効果があります。 ただし、これだけでは あまり有用でない ことが理由でリジェクトとなりました。しかしこの時点で 単にウェブサイトをバンドルしたもの ではなくなりました。 Apple レビュワーへの問い合わせ プッシュ通知だけではリジェクトとなる可能性は十分考えられていたのですが、念のため、「なぜ、アプリ固有の機能であるプッシュ通知を実装したにも関わらず、 2.12 に抵触したのか」という問い合わせを行いました。 この問い合わせは、なぜダメだったのかを知るためではなく、どうすればリジェクトにならないか、をレビュワーに提案してもらうことが目的でした。 このアクションを早めに行うことで、レビュワーに従ってアプリを改善した結果が再びリジェクトとなった場合、訴求することが可能となります。 独自メニューと共有機能を実装 アプリの画面が WebView だけではブラウザそのものなので、アプリ専用メニュー として新しく View を作成し、そこに「進む」「戻る」「共有」と言った機能を追加します。比較的短時間で実装可能なうえ、リジェクトに対し一定の効果があると思いますが、この程度ではリジェクトとなりました。 設定画面を実装 アプリの画面数が1画面だけでは、やはりブラウザと大差がありません。そこでアプリに設定画面の UIViewController を追加 し、上記アプリ専用メニューから設定パネルへ遷移するボタンを追加し、2画面構成 とします。 設定画面では、「プッシュ通知のON/OFF」「サポートページ」「アプリを評価する」「カラースキーム変更」といった、最小リソースで実装が可能な機能を追加します。 このことが アプリを改善した結果 と評価されリリースとなりました。 コンテンツ表示の UITableView 化 Web コンテンツを一旦 CoreData に保存し、UITableView で表示することにより iOS ネイティブ特有の表現を行うためのプランでしたが、設定画面を実装することでアプリがリリースとなったため不必要となりました。 ここまでやれば、もはや 単にウェブサイトをバンドルしただけ のアプリではなくなりますが、この工程は工数が大幅に増大するため、あくまで最終手段として考えていました。 まとめ この記事を書いた目的は、こうすれば Web をラップしただけのアプリを開発したい場合、こうすればリリースできる、といったことが言いたかったのではありません。 Web サービスをアプリ化しようとする企画段階で、明らかにガイドライン 2.12 に抵触する恐れのあるアプリである場合、アプリ自体の開発を断念し Web サービスそのものの強化や見直し、リーチの拡大に注力するのが賢明だと言うことです。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。
eyecatch_image

iTunes Connect: Game Center の Achievement を設定する(2015年最新版)

Apple の Game Center を使って iOS のゲームアプリを設計すれば、ゲームスコアやアチーブメントをサーバーへ送信し、プレイヤーのスコアを元にランキングを表示することが出来ます。 以下の4回に分けて、iTunes Connect の設定や Swift のスコア送信の実装を、説明していきたいと思います。 iTunes Connect: Game Center の Leaderboard を設定する Swift: Game Center の Leaderboard へスコアを送信する iTunes Connect: Game Center の Achievement を設定する Swift: Game Center へ Achievement を送信する 今回は iTunes Connect で Game Center の Achievement の設定を行います。 ※この説明は Xcode で アプリが開発されていること、iTunes Connect で新規 iOS App の作成までは完了していることを前提としています。 手順の概要 Achievement の追加 達成項目 -> 達成項目の参照名 を入力 達成項目 -> 達成項目 ID を入力 達成項目 -> 点数 を入力 達成項目 -> 非表示 を選択 達成項目 -> 複数達成可能 を選択 達成項目のローカリゼーション 言語を追加 -> 言語 を選択 言語を追加 -> タイトル を入力 言語を追加 -> 達成前に表示する説明 を入力 言語を追加 -> 達成後に表示する説明 を入力 言語を追加 -> 画像(オプション)で ファイルを選択 から画像を登録する Leaderboardを編集 -> Save をクリック Game Center の Achievement を設定 を設定する ここからは SQN プレイ回数の Achievement を例に説明していきたいと思います。 上から順に設定していくと Game Center での Achievement の設定は完了します。 Achievement の追加 iTunes Connect -> マイ App -> アプリを選択 -> Game Center をクリック 達成項目を追加 をクリックし、アプリに Achievement を追加する。 達成項目 -> 達成項目の参照名 を入力 この値は iTunes Connect 上で Achievement の識別に使用します。 命名規則にルールはありませんので、分かりやすい名称にすればいいかと思います。 例)sqn.achievement.playFirst (アプリ名.アチーブメント.達成項目名) 達成項目 -> 達成項目 ID を入力 この値はアプリのコーディングで参照する値となります。 命名規則にルールはありませんので、分かりやすい名称にすればいいかと思います。 例)sqn.achievement.playFirst (Achievement の参照名と同じ) 達成項目 -> 点数 を入力 項目達成時に獲得する点数です。 アプリ内で使用できる合計得点は 1000 点までとなっているので、後のアップデートでアチーブメントを追加することを考慮し、全ての点数を使いきらないよう設計することをお勧めします。 達成項目 -> 非表示 を選択 非表示 とした場合、この Achievement をプレイヤーが達成するまで Game Center で達成項目が表示されません。 達成項目 -> 複数達成可能 を選択 Yes を選択すると、ユーザはすでに達成した達成項目に対する Game Center のチャレンジを受け入れることができます。 達成項目のローカリゼーション Leaderboard のローカリゼーション -> 言語を追加 をクリック 言語を追加 -> 言語… 続きを読む
eyecatch_image

iTunes Connect: Game Center の leaderboard を設定する(2015年最新版)

Apple の Game Center を使って iOS のゲームアプリを設計すれば、ゲームスコアやアチーブメントをサーバーへ送信し、プレイヤーのスコアを元にランキングを表示することが出来ます。 今回から4回に分けて、iTunes Connect の設定や Swift のスコア送信の実装を、説明していきたいと思います。 iTunes Connect: Game Center の Leaderboard を設定する Swift: Game Center の Leaderboard へスコアを送信する iTunes Connect: Game Center の Achievement を設定する Swift: Game Center へ Achievement を送信する 今回は iTunes Connect で Game Center の Leaderboard の設定を行います。 ※この説明は Xcode で アプリが開発されていること、iTunes Connect で新規 iOS App の作成までは完了していることを前提としています。 手順の概要 Leaderboard を追加する手順は以下の通りとなります。 各手順の詳しい内容に関しては、次項で説明したいと思います。 Leaderboardセットの作成 Leaderboard の追加 シングル Leaderboard を 選択する シングル Leaderboard -> Leaderboardの参照名 を入力 シングル Leaderboard -> Leaderboard ID を入力 シングル Leaderboard -> スコアのフォーマットタイプ を選択 シングル Leaderboard -> スコア送信タイプ を選択 シングル Leaderboard -> 並べ替えの順序 を選択 シングル Leaderboard -> スコアの範囲(オプション) を入力 Leaderboard のローカリゼーション 言語を追加 -> 言語 を選択 言語を追加 -> 名前 を入力 言語を追加 -> スコアのフォーマット を選択 言語を追加 -> スコアのフォーマットサフィックス を入力 言語を追加 -> スコアのフォーマットサフィックス(複数) を入力 言語を追加 -> 画像(オプション)で ファイルを選択 をクリック 言語を追加 -> Save をクリック Leaderboardを編集 -> Save をクリック Game Center の Leaderboard を設定する ここからは SQN クエストモードのハイスコアの設定画面を例に説明していきたいと思います。 上から順に設定していくと Game Center での Leaderboard の設定は完了します。(Leaderboardセット の作成は内容が重複するため割愛させていただきます) Leaderboard の追加 iTunes Connect -> マイ App -> アプリを選択 -> Game Center をクリック Leaderboard の追加 をクリックし、アプリに Leaderboard を追加します シングルLeaderboard の 選択する をクリック シングルLeaderboard -> Leaderboardの参照名 を入力 この値は iTunes Connect 上で Leaderboard の識別に使用します。 命名規則にルールはありませんので、分かりやすい名称にすればいいかと思います。 例)sqn.quest.highScore (アプリ名.ゲームモード.スコア名) シングルLeaderboard -> Leaderboard ID を入力 この値はアプリのコーディングで参照する値となります。 命名規則にルールはありませんので、分かりやすい名称にすればいいかと思います。 例)sqn.quest.highScore (Leaderboard の参照名と同じ) シングルLeaderboard -> スコアのフォーマットタイプ を選択 各フォーマットタイプの意味は次の通りです。 Integer: 整数値… 続きを読む

SQN:タイムアタックモードのプレイ完了後にフリーズする問題について

先日リリースした SQN ですが、TIME ATTACK でのプレイ中にアプリが落ちる、との報告を受けました。 厳密には「TIME ATTACK を何度かプレイした後、全てのナンバーをタッチしたとき」にアプリが落ちてしまうという問題です。 現在、このバグに関する修正版(Ver.1.01)を Apple に申請中です。修正版がリリースされるまでプレイヤーの皆様にはご不便をおかけしますが、今しばらくお待ちいただければと思います。 SQN を引き続きよろしくお願いいたします。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

SQN:新作無料ゲームアプリ SQN の申請が承認されました。

3月3日に申請に出した SQN ですが、昨日3月6日に無事リリースが承認されました。 今回は1発で申請が通る自信があったのですが、期間も最短の3営業日での承認となりました。 リジェクトにならなかったのは良いニュースなのですが、今回あまりにも承認が早かったためリリースの準備が全く出来ていません。 あとは iTunes Connect でリリースボタンを押せば即座にリリースされるのですが、SQNのゲーム内容の詳細等の説明や、プロモーション活動もリリースにあわせてある程度行いたいと考えていますので、今しばらく時間をいただくことになるかと思います。 近日中にゲーム詳細を発表したときに、リリースに関してもふれるつもりでいますので、もう少しだけお待ちください。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

SQN:新作無料ゲームアプリ SQN が完成。アプリを申請しました。

昨年12月より開発を進めていたゲームアプリ SQN ですが、3月2日に完成し、昨日アプリの申請が無事完了いたしました。 まだ、Apple へのアプリの提出が完了しただけで、リリースが確定した訳ではありません。今回のアプリに関してはリジェクトになる要素はないはずですが、そこは Apple 次第というところでしょうか。 今回の SQN はアプリのレビュー通過後に即リリースをせず、リリースの承認がおりた後、あらためてリリース日を決定しようかと考えています。 現在、アプリのレビュー開始まで8営業日程度の時間を要しているようです。最短でリリース出来たとしても3月中旬あたりになるかと思いますので、いましばらくお待ちください。 SQNのゲーム内容の詳細に関しては、レビューが通過した段階で sirochro.com で公開したいと思います。 まとめ 当初は2ヶ月強の開発期間を予定しており、2015年1月末〜2月上旬リリース予定でしたが、年末から年始にかけ、プライベートで想定外の割り込みが発生したため、1ヶ月以上遅れが出てしまいました。 リリースが遅れる分、より楽しんでもらえる内容にブラッシュアップしていますので、ご期待いただければと思います。 また、以前よりお知らせでは何度も報告していましたが、今回の SQN は昨年登場した Apple の新言語 Swift で開発を行いました。 SQN リリース後には、アプリ開発時に得た Swift の知識や情報をこのサイトでも順次投稿していきますので、アプリとあわせて Swift の投稿記事もお楽しみいただければと思います。 SQN の審査結果に関しては分かり次第、随時サイトで報告したいと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Developer:リジェクトされないために App Storeレビューガイドラインの和訳 2015年最新版

App Storeでアプリリリース時の審査基準となるレビューガイドライン。 初めての iOS アプリ開発において、英文であることを理由に熟読しないまま理解したつもりで開発を始めてしまい、何度もリジェクトを経験しました。 このときのリジェクトによる苦い経験から、少しでも日本の開発者の役に立てればと思い、App Store Review Guidelines を和訳(一部意訳)しました。 あえて訳さない方が適切と思われる名称やセンテンスについては、原文のままの表現を用いています。(本コンテンツに対してのご意見・不備・間違い等ありましたらこちらからご連絡いただければ幸いです) 開発者のスキル・レベルに関係なく、一読すればきっとリリースまでの道のりが短くなります。ご活用下さい。 更新履歴 [2015.12.23] 11.6項の誤りを修正しました。おのでら様、ご指摘いただきありがとうございました。 [2015.12.21] 11.9項の誤りを修正しました。匿名希望様、ご指摘いただきありがとうございました。 [2015.06.26] 11.17項を追加しました。sakuyan様、ご連絡いただきありがとうございました。 [2015.06.19] 9.4項を更新しました(64kbps -> 192kbps)すがはら様、ご連絡いただきありがとうございました。 [2015.06.04] レビューガイドラインに 25-28 項追加しました。すがはら様、ご連絡いただきありがとうございました。 [2014.10.10] 11 項目の誤植(通過 -> 通貨)を修正しました。町田様、ご指摘いただきありがとうございました。 [2014.07.09] 2.7 項目の誤訳を修正しました。pernodd様、ご指摘いただきありがとうございました。 [2014.05.01] 2.15 項目の誤り(50MB -> 100MB)を修正しました。開発要員A様、ご指摘いただきありがとうございました。 [2014.02.18] 24.Kids Category の追加と HTML タグ、翻訳の誤記を修正しました。 [2013.07.20] コンテンツの本文を修正しました。 [2013.07.14] 一部コンテンツ内容の構成を変更しました。

iTunes Connect:リジェクト(5回目)→→公開

結局前回の申請はリジェクトだった。資料提出から翌日のことだった。 度重なるリジェクト リジェクト理由は主機能が動作しないというもの。 これまでのリジェクトと違い、その内容があまりに絶望的で、問題解決の糸口が見つからず途方にくれていた。そもそも、開発時に不具合が認められるようなものを申請などしないからだ。

iTunes Connect:アプリ再申請→メタデータのリジェクト→レビュー中

レビュー開始からまもなく20時間が経過するが、リジェクト通知が来ない。これまでは、長くても12時間以内にリジェクトされていたから、記録更新だ。

iTunes Connect:アプリ再申請→リジェクト(4回目)→アプリ再申請

またしてもリジェクト。Appleさん、すみません。。前回の内容はこちら。 先週末にリジェクトされたのだが、今回のリジェクトは原因が明確だったため、そのまま修正し、先ほど再申請の手続きが完了した。 アプリの改善点 反省と問題点の抽出 先に誤解のないように言っておくと、バグが多いとか、クラッシュするという初歩的な部分で足踏みをしているわけではない。ある1つの機能についてガイドラインに抵触する問題があって、戻しが来ているのだ。 この機能にこだわっているのは、自分が欲しい機能だからだ。そして、その機能を持ったアプリは山ほどあるのも知っている。しかし、自分がいいと思うものが全く存在しないため、何とかリリースできるやり方がないかを考えながら、これまで開発を続けてきた。 レビュワーへの質問 念のため、いつものようにリジェクトの理由を問いただし、原因を突き止めた。やはり先ほど言った機能についてだ。 今回、レビュワーからの返答に、アプリ審査委員会にアプリの機能の正当性をアピールすることもできる、といったアドバイスももらったが、こんなとこでモメたくはない。ここは素直に従うべきなのだ。 しかし、このままでは埒があかないので、気持ちを入れ替え、リリース後のアップデートで対応することを視野に入れつつ、問題の機能を一旦ペンディングにした。 問題となる機能をとってしまったのだから、もはやこの項目でリジェクトされる理由はなくなったはずだ。西洋医学的な発想だ。アプリの使用感がやや不便になった感は否めないが、ダメなものはダメなのだ。 改善と機能の追加 ついでに新しく別の機能を実装した。有料アプリにはある程度のボリューム感が必要なはずだ。機能を1つ取ってしまったのだから、その分の対価は検討しなければいけない。 また、今回のリジェクトの連絡が来た時、申請する日を水曜日に変更しようと決めていた。これまでの申請するタイミングはほぼ同じで、週末(金or土曜)に申請し、レビューは1週間後の週末(金曜)におこなわれていた。レビュワーも人間だ。週のストレスが開放に向かう直前だからこそ、シビアな判断をしていることだって十分考えられると思ったからだ。 まとめ 一番の原因は自分にあるとしても、リジェクトされない確率を高めるノウハウもあるはずだ。アプリ開発にかかる時間を無駄にしたくないから、思いつくことは全て実行していく。 開発前に全ては決まっている。大切なことは質問、コンセプト、そして運だ。技術力ではない。(つづく) 【追記】そろそろ終わりにしたいこの話題。続きはこちらからどうぞ。