iOSアプリ申請 ステータス:Metadata Rejected で リジェクトされた!!

下書きには保存していて公開するのを忘れてたおっちょこちょいなシステム部の中村です。

こんにちは

 

さて先日からクライアント様のアプリを申請しているのですが、最後の最後で

Metadata Rejected  なるステータスでリジェクトされてしまいました。(自分初めて見ました・・・)

IMG_4165

 

調べてみると

プログラムその物には問題ないけど、ストアーに表示するデータ(文言等)に問題があるので、通せないよ!

でも、プログラムは問題ないから、表示する文言とかの問題箇所をなおしたら、直ぐに確認して公開してあげるよ

という旨の連絡が、友人の結婚式場に前日入りしたホテルの大浴場の脱衣場でアップルさんから流れてきました。

でもアプリ紹介の文言で問題になりそうな箇所はないし、レーティングも問題ないはずだし・・・

何だろう・・と よくよく調べてみると、

スクリーンショット画像に時計などのステータスがでてるので、だめっぽいという事がわかりました。

温泉で火照った体を クールダウンしながら、ちゃっちゃっと画像を修正アップ! 

リジェクト連絡が届いてから1時間で再申請=>2時間で In Review=>そのあと、3時間後に公開という流れ

で無事公開できました。正直ここで、またリジェクトになったら、どうしようと・・と結婚式どころではなかったのですが、

無事結婚式の前日にアップできて安心してウエディングケーキを食べることが出来ました!

ほんとよかったよかった・・

IMG_4012

写真は友人の新婦デザインのウエディングケーキ おいしゅうございました。

 

 

 

お客様のアプリだったので、なかなか公開時間が確定できず、お客様に心配をおかけしてしまったのが、本当に申し訳ない状態でした。

アップルさん・・・お願いです。有料でいいから優先レビューオプション作ってください;;;

 

iOSアプリ審査についての覚書

クライアント様のアプリ開発でアップルの審査が遅れに遅れまくり、冷や汗だらだらのシステム部中村です。

今回はDUNSナンバーの不具合等がすべての引き金になってはいるのですが、次は問題起こらないようにと覚書を・・・

 

製作会社でよくあるパターンとして、ADCへの登録を代行して行い、開発・審査・公開まで代行する。という流れが多いと思います。この流れに沿って覚書を・・・書いておきます。

 

ADCへの登録代行のときに必ず必要になるが、DUNSナンバーといわれる、国際的な会社証明IDみたいなものが必要となります。日本の登記簿謄本の民間版みたいなものです。日本では、東京商工リサーチ様が対応してくれています。

https://duns-number-jp.dnb.com/search/jpn/login.asp

クライアント様が自社のIDを取得するのは、無料で行えるのと、一番時間も手短に行えるので、これだけはクライアント様にとっていただきましょう。請求申請から 2営業日ぐらいで届きます。

ただ、このDUNSナンバー 病院など財団関係とかだと、一部情報が正確に入っておらず、法人格扱いされていない場合があるので、その場合は、カンパニー登録が出来ないので、修正が必要です。DUNSナンバーの修正は、D&B社に英語対応が必要になるので、修正処理を完了するまで、約一週間程度かかります。

D&B社から修正完了のメールが届いてから、アップルにその情報が反映されるまでに、14営業日が必要となるので、修正が必要だった場合は、かなりの時間のロスを覚悟してください。(この間に開発を行えば、時間のロスもなくなりますが・・・)

なお弊社が今回代行させていた際、修正した連絡がとどいて16営業日たっても、アップル側に修正がうまく伝わらず、法人申請ができないという状態になったため、日本のアップルデベロッパーセンターに直接電話を行い、登記簿謄本のコピーを送り、対応してもらいました。 修正必要な場合は、正直すべて登記簿謄本扱いで対応していただきたいが、とりあえず、電話対応(日本語)でここはなんとか切り抜けられました。

 

さて 法人登録で登録できたら、次は、iOSデベロッパー契約に移ります。(年間7800円税別)法人登録さえ出来ていれば、金額さえ支払えば、1-2営業日で対応してもらえます。

※ アップルIDの名前は必ず英語表記でないと審査に通りません。

 

ここまででかかる日数をまとめると

DUNSナンバー取得 最大 2営業日 必須
DUNSナンバー修正 平均 7営業日程度 修正時のみ
DUNSナンバー修正アップル反映 最短 14営業日(米時間計算) 修正時のみ
ADC法人登録 最短 1営業日 必須
iOSDeveloperProgram 平均 2営業日 必須

なかんじになります。

通常であれば、5営業日もあれば、対応できるのですが、DUNSナンバーの修正等の作業が入るとかなり時間が延びます。また新会社などの場合も登録申請に時間がかかると思われるので、まずは、DUNSナンバー取得してADCに登録だけしてしまうのがよいかと思いますね。

 

さて登録できたとなると次はアプリを開発して、 iTunes Connect =>Manage Your Appsで申請をかけます。

これが通常では7営業日ぐらいといわれいますが、最近は、5営業日ぐらいが平均です。

http://appreviewtimes.com/

他の開発者の公開時間等を集計して平均値を出してくれているサイトです。この辺で確認するとよいかとおもいます。OSのアップデート時などは、いつもより時間がかかるかなと思っていますが、最近はほんと平均的5営業日もあれば、審査してくれています。

ただし、これは、カルフォルニアの時間帯での計算なので、米国の祝日等とかぶると、日本のカレンダーでの計算とずれる場合があります。


審査状況を知るために、便利なツールがアップル純正のアプリとしてiTunes Connect Mobile

IMG_3943 IMG_3941 IMG_3942

を使いリアルタイムでアプリの審査状況がリアルタイムでわかります。

IMG_3940

朝9時半電車に乗っている時間帯にPush送信で新着情報が届くので、会社にきて直ぐ対応できるので、便利です。(メールでももちろんお知らせは届きます。)

 

あとは、アップルと連絡を取るために、判りやすいように

IMG_3939

サンフランシスコの時間も登録しておくと、向こうが深夜から連絡がこない などわかりやすくなるので、登録するのがお勧めです。

 

最後に

アップルさんも有料枠いいので、審査を優先的にしてくれるフローを作っていただけるとすごいうれしいです。急にアプリを公開しないといけないとか、修正が必要な場合とか用に(一応そういうフォームはあるんですが、確実に優先的にやっていただけるわけではないので・・・)

 

WebViewの内部の横幅を強制的に変更する方法

 

iOSアプリはある程度作りやすいので困らないのですが、Androidさんは、ほんと機種・OSVerによって動きがコロコロ変わったりするので、どうしようかなと思っている、現在某病院様のiOSアプリ・Androidアプリの開発を行っているシステム部の中村です。

こんにちは

 

さてiOSをUniversal(ipad/iPhone共有)を作っていると、どうしても、iPhoneとiPadで動作等に差が出てきてしまい、それを限りなく近づける事に時間を割かれてしまいます。

今回の開発も同じようにiPadのWebviewで思った様な表示が出来ずに困っています。

いつもであれば、html側を変更して調整するのですが、今回は実際に動いているサイトを強制的に整形しないといけないという状況に陥りましたので、そのときの逃げ方を書きます。

 

・webviewのHTML表示領域をiPhoneと同じ320pxにしたい場合

通常ならhtml側のmetaで指定する事でしつけるのですが、今回は出来ないため、

webViewで読み込んだ後、JSで強制的にJavaScriptでmetaダグを適応させる方法で逃げたいと思います。

 

何はともあれ、まずはソースを

スクリーンショット 2014-02-18 21.04.24

[php]
#import "ViewController.h"

@interface ViewController (){

}
@end

@implementation ViewController
@synthesize wv;

– (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

//iPhoneの場合は自動的に、スマートフォンページに移動する
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// iPad
NSURL *URL = [NSURL URLWithString:@"http://www.kantei.go.jp/"];
NSURLRequest *URLreq = [NSURLRequest requestWithURL:URL];
[wv loadRequest: URLreq];
}
else {
// それ以外
NSURL *URL = [NSURL URLWithString:@"http://www.kantei.go.jp/"];
NSURLRequest *URLreq = [NSURLRequest requestWithURL:URL];
[wv loadRequest: URLreq];
}

wv.delegate = self;

}

//webロードが正常に完了
– (void)webViewDidFinishLoad:(UIWebView *)view {

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// iPadのみWebの領域を320サイズにしてからフィットさせる。
NSString *js =[NSString stringWithFormat:@"var meta = document.createElement(‘meta’);var iniScale = screen.width / 320;meta.setAttribute(‘name’, ‘viewport’);meta.setAttribute(‘content’,’width=320, initial-scale=’ + iniScale + ‘, minimum-scale=0.5, maximum-scale=3.0, user-scalable=1’);document.getElementsByTagName(‘head’)[0].appendChild(meta);"];

[wv stringByEvaluatingJavaScriptFromString:js];

}
else {
// それ以外

}
}

– (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end

[/php]

何をやっているかというと

webviewにurlを与えて表示して、ロード終わったあとにiPadのみにJavaScriptでメタタグを貼付け強制t系に、320pxで動かしているだけです。

 

これでレシポンシブサイト(首相官邸 :  http://www.kantei.go.jp/ )をipadでiPhoneで表示しているイメージで表示できます。

HTMLをいじれない場合使ってみてくださいませ。

表示サンプルをアップしておきます。

スクリーンショット 2014-02-18 20.10.49

iPadRetina表示(標準)

スクリーンショット 2014-02-18 20.10.24

iPadRetina表示(メタタグで強制320px表示)

IMG_3278

iPhone retina 4インチ

iOS開発 storyboard使用時のステータスバーのズレ対処法

システム部の中村です。

Xcodeでの開発を行う際、iOS7からステータスバーの一判断がiOS6と大きく変わっており、

iOS6と7を共通のストーリーボードで開発する際webviewなどのオブジェクトがステータスバーにかぶさるという自体が発生します。

OSのVerを判断して位置を移動させるコードで逃げている方もいますが、極力コードには手を出さないように書きたい自分は

下記のようなやり方で逃げています。

iOS6/7 Detail にステータスバーの20PX分マイナス値を与えてやるという方法です。

ios6 7のステータスバー分の移動

iOS6/7 Detail とは iOS6の場合どのくらいストーリーボードで設定した位置から動かしますか?という場所なので

ここに、-20を与えるとよいわけです。

ようはこのiOS6/7のY軸を-20pxと指定することで、iOS7の場合だけ位置を動かしてくれるようになります。

 

iOS67ステータスバー判断

結構検索してみると皆さんあまりここを使われていないようでして、、layoutで強制していたりする方もいますが、これが一番簡単ではないかなと思います。

 

[Xcode]iOSアプリ開発 チュートリアル:ストーリーボードの使い方(下)

MAC Book Ai(初代)をインストールする間に貯めていたブログ記事を書かせてもらいます。

こんにちは システム中村です。

ストーリーボードの使い方(下)ということで最後となります。

次は当初の予定通りカメラアプリの作り方を書く予定ではありますが、その前にGoogleMapのナビゲーションネタを書くかもしれません・・・・

 

さて話を戻し、

WEBページをアプリ内で表示するためにWebView機能を使います。

まずクラスファイルを作ります。

スクリーンショット 2013-09-05 11.09.40スクリーンショット 2013-09-05 11.12.03

IBOutletを準備しておきます。

スクリーンショット 2013-09-05 11.13.17

スクリーンショット 2013-09-05 11.13.35スクリーンショット 2013-09-05 11.13.54

IBOutlet接続でストーリーボード上で連携します。

あとは、WEBを表示するためのコードを書けば終わりです。

スクリーンショット 2013-09-05 11.22.29

(ここで初心者が戸惑う self delegate が出てきますが、それはまたそのうち)

スクリーンショット 2013-09-05 11.23.23

一通りこれでストーリーボードを使った開発は終わりです。

あとはこれをベースに機能をついかしていけばいろんなアプリが作れるはずです。

 

 

[Xcode]iOSアプリ開発 チュートリアル:ストーリーボードの使い方(中)

Retinaディスプレイに慣れてしまったiPad2を見てると液晶が荒いな と日々開発を行いながら思っている中村です。

こんにちは

前回の続きで今回はストーリーボードにコードを埋め込んでいきます。

SBview

前回までで作ったストーリーボードです。

ではitem1側のUiTextView エリアにコードで文字列を表示させる流れですが、

まず適応するコードとなるファイルを新規追加します。ファイルを追加したい箇所でマウス右ボタンで

NewFileを選択し、Objetcitve-C classを選択します。

スクリーンショット 2013-09-05 10.44.31 スクリーンショット 2013-09-05 10.45.11

Nextをクリックしファイル名を確定させます。

スクリーンショット 2013-09-05 10.46.25

今回は標準の UIViewController を選択肢、class名に TopViewControllerとします。

スクリーンショット 2013-09-05 10.46.56

これでストーリーボードへ取り付けるコードの準備はできました。準備ができたので、TopViewController をストーリーボードへ関連づけます。

 

スクリーンショット 2013-09-05 10.50.07

コードを取り付ける箇所にマウスをあて全体が青色になる事を確認し、左メニューからclass(作ったファイル)を関連づけます。

これだけで完了です。

次はUITextViewの部品単位をひも付けます。h m両ファイルに書き込みします。

スクリーンショット 2013-09-05 10.55.29スクリーンショット 2013-09-05 11.06.58

IBOutletがひもづけるために必要なものです。ソースができたら、

今度はストーリーボードでIBOutletとUITextViewをひもづけます。

スクリーンショット 2013-09-05 11.03.10

これで完成です。ビルドをすると下の様な結果画面が出来ます。

スクリーンショット 2013-09-05 11.07.32

コード側でUITextViewの設定をかえるなどする事も可能です。

 

次の(下)は UIWebViewを使った WEB表示画面を作っていきます。

 

 

[Xcode]iOSアプリ開発 チュートリアル:ストーリーボードの使い方

カメラアプリを作るにあたって、まずはXcodeでの簡単なアプリの作り方から書いていこうと思っているシステム部 中村です。こんにちは

Xcode とは アップルがデベロッパツールとして無料で配布している開発作業環境です。Verがかわると仕様もかわるため開発者泣かせなIDEではありますが、現状iOSの開発を行えるのはこの環境だけです。
Xcode に関しては https://developer.apple.com/jp/technologies/ から参照してください。

iOS7からは開発に関してはストーリーボード必須となってしまったため、まずはストーリボードを使いtabアプリケーションを作っていきたいと思います。
ここで覚えられるのは
標準viewを止め、新規にtabviewcontrollerを実装し、タブで切り替えるViewにカスタマイズしたクラスファイルをひもづけての動作一連までが覚えられると思います。

同じ内容で詳しく書かれているページも多数ありますが、今回は本当に初めてXcodeを使う人にわかりやすく書きます。

まずは、Xcodeを開いてテンプレートを選択します。最初からTabbed Applicationを選択してもいいのですが、今回はチュートリアルのためSingle Vew Application を選択します。

Xcode

Continue reading