2014年9月27日土曜日

【App Store】Weight Log 〜 毎日記録をリリースしました (体重記録、体重管理アプリ)

Weight Noteは体重と体脂肪を記録するアプリです。
毎日コツコツと記録することによって、ダイエット効果をアップすることができます。

■ 機能
・朝・晩の体重と体脂肪の測定ができます。
・食事量や運動量を5段階で記録できます。
・日々の入力データの編集に対応。
・日々の入力データは一覧で参照ができます。
・グラフによるダイエットの進捗状況の確認ができます。
・BMI指数による身体判定に対応。
・100g / 50g単位の入力に対応、自由に選択できます。


現在、iPhone6の画面サイズに対応したVersionをAppleの審査待ちです。

【Xcode】iPhone6の画面サイズに対応させるためのXcode側での初期設定について

Xcode5以前で作成した既存のプロジェクトに対して、iPhone6のサイズに対応させようと試行錯誤しましたが、いくら頑張っても4インチを引き伸ばした状態で、表示されてしまいました。いろいろ調べてみたこところ、Xcode側でLaunchImageにiPhone6のサイズの画像が用意されているかどうかで、iPhone6のサイズに対応するか判断しているようです。

よって、iPhone6のサイズに対応したい場合は、LaunchImageにiPhone6用の画像を設定するか、今回から新しく追加されたLaunchScreenFileを設定すれば、新しい画面サイズに対応した表示になります。この設定をしないと、iPhone6であっても568x320モードを引き伸ばしされた状態で起動されてしまいます。(ラクラクホンのように表示されてしまう)

ちなみにiPhone6では、下記の画面サイズになっています。
LaunchImageに設定する場合に必要な画像サイズです。
iPhone6    → 667x375
iPhone6Plus → 736x414

iPhone6のサイズに対応させるとアプリ側で画面の配置などを今回新たに追加されたSizeclassesやAutoLayout機能を使用して最適化する必要があるので、かなりの手間がかかります。

逆に上記の対応をせずに、そのままビルドをしていれば、今のところは画面の引き伸ばし状態でアプリは動かせますが、(審査は通ります)、利用者からすると、「大画面の意味がない」と思われるので、開発者としては早く対応してあげたいところです。きちんと対応すれば、大画面では1画面により多くの情報を表示することができます。今まで、5行しか見えていなかった情報が8行、9行と一度に表示することができます。

では、これから今回新しく追加されたLaunchScreenFileの設定をやってみましょう。

1.プロジェクトからファイルを追加
 Launch Screenファイルを選択して「Next」

2.プロジェクトに追加されたLaunch Screen.xibを編集
 適当に背景色を変えてみました。
上記アプリの紹介はこちら

3.Launch Screenを使用するための設定
 Target - GeneralからApp Icons and Launch ImagesのLaunch Screen Fileで2のファイルを選択する。



これでiPhone6の画面サイズへの対応準備は完了しました。試しにビルドして実行すると、引き伸ばしされずに、下記のように表示されます。

あとは、アプリ側でiPhone6の画面サイズに対応させていきましょう。
ただ、大きく表示させるのではなく、大画面用にアプリを再デザインして使いやすくしていくとよいと思います。特にiPhone6 Plusでは画面上部に指が届かないことを想定したデザインしていくと、より使いやすいアプリになると思います。




2014年9月20日土曜日

【Apple】iPhone5S、6、6Plus、iPad mini、iPad Airのサイズを比較してみた

新型のiPhone6は2サイズで展開しています。画面は旧型であるiPhone5Sの4インチからiPhone6は4.7インチに、iPhone6Plusは5.5インチへと大幅にサイズアップしました。どちらを購入しようか迷っている方のために、今回のサイズアップがどの程度のメリットがあるのかを検証しました。

■全体のサイズについて
まずはiPad含めて、全体の大きさを撮りました。写真を見て頂くと分かりますが、5.5インチであってもiPad miniと比較するとかなり小さいことが分かります。完全にiPadが不要になるというわけではく、携帯電話、タブレットと住み分けできていることが分かります。

左からiPhone5S、iPhone6、iPhone6Plus、iPad mini、iPad Air



■ Webサイトの表示範囲について
はっきりいってしまうと、もう4インチには戻れません。それだけ今回の大画面化というのは、Webサイト表示において、かなりの恩恵を受けます。また、今まではかなり見づらかったドキュメント類ですが、5.5インチでは普通に表示できていました。オンラインショッピングでも画面に表示される商品一覧数が大幅に増えていることがわかります。











 ■iPadとの比較
やはりPCサイトの表示はiPadには敵いません。文字の表示においては、4.7インチでは相当無理しないと文字が読めませんが、5.5インチではそれなりに読める大きさで表示されています。




■ まとめ
iPhone6は、4インチと比べてもあまり大きく感じませんでしたが、手に持った時のホールド感は高く、片手でのフリック入力も安心してできます。
iPhone6 Plusは、今までは厳しかったドキュメント類の確認ができます。また、PC向けサイトの表示もある程度はこなすことができるようになりました。手に持った時のホールド感は低く、片手でのフリック入力はギリギリできるといったところです。混雑した電車内では間違いなく落とすので両手持ちになります。
ちなみに6Plusは画面がフルハイビジョンで、カメラも光学手ぶれ補正がついており、性能面では6を圧倒しています。特に画面の文字に関しては、かなり美しく表示されていて、驚かされます。
個人的には大は小を兼ねるのでiPhone 6Plusをオススメしますが、片手でメール返信ができなくなるのが、嫌な人はiPhone6にするしかありません。

2014年9月18日木曜日

【App Store】イロドリ パズル 〜 間違えたら終わり 〜をリリースしました

「イロドリ パズル 〜 間違えたら終わり 〜」をリリースしました。

今までに見たこともないパズルゲームです。
画面上段に出現する5つの色を画面下段から探すタイムを競います。
間違えたら時点でゲームオーバー。
ゲームセンターに対応していますので、最速タイムを目指して世界中のゲーマーと競うことができます。

App Storeの配信アドレスhttps://appsto.re/jp/e28F2.i

【Apple】アイコン型広告を実装したアプリはリジェクト(2.25)される


審査中のアプリがリジェクト対象になりました。原因を調べてみると、どうやらAppleはアプリ審査のガイドラインを変更したらしく、『他社アプリのプロモーションをすることは認められません』というメッセージがResolution Centerに送られてきました。
他社のアプリとは、『アイコン型に表示されるアプリ広告』のことを指しているそうです。

2.25: Apps that display Apps other than your own for purchase or promotion in a manner similar to or confusing with the App Store will be rejected










とり急ぎ広告の配信削除をして、アプリにアイコン型広告が表示されないようにしました。その後、リプライで広告の削除した旨のメッセージを英語で送信して完了です。
アプリのバイナリーの再アップロードは不要です。これをやってしまうと再審査までまた1週間程度またされます。
















インターネットで調べていると、インタースティシャル広告も上記同様の理由でリジェクト対象になったという人もいます。



2014年9月10日水曜日

【Objective-C】Game Centerに対応したアプリの作り方(実装編)


iTunes Connect側の設定ができていない場合は下記をはじめにお読みください。
【Objective-C】Game Centerに対応したアプリの作り方(準備編)


簡単に手順を説明します。(Appleの公式のガイドも参照してください)

1.Game Centerへのログイン処理
2.スコアの送信
3.リーダーボードの参照

大きくわけて、以上の3つになります。

1に関してはアプリ起動時の最初の処理で実装します。
/**
 * GameCenterにログインしているか確認処理
 * ログインしていなければログイン画面を表示
 */
- (void)authenticateLocalPlayer
{
    GKLocalPlayer* player = [GKLocalPlayer localPlayer];
    player.authenticateHandler = ^(UIViewController* ui, NSError* error )
    {
        if( nil != ui )
        {
            [self presentViewController:ui animated:YES completion:nil];
        }
        
    };

}

これで無事画面上部にGame Centerへのログインが表示されます。

2に関しては、ボードのスコアタイプごとに実装方法は変わってきます。
Elapsed Time To The Hundredth of a secondを例にして説明していきます。

00:00:00.00形式のことです。
スコアは時分秒の部分はすべて秒数に変換します。
_gameScore = [NSString stringWithFormat:@"%d.%d" ,((hour * 3600) + (minute * 60) + second) ,miliSec].doubleValue * 100;

そして、ミリ秒の部分は小数点として結合します。
例えば 00:05:10:22 ▶︎ 310.22とします。
これを100倍した、31022をスコアに送信すると仕様になっているようです。
スコアは、下記を実装することにより送信可能です。

// GameCenter スコア送信
        if ([GKLocalPlayer localPlayer].isAuthenticated) {
            GKScore* score = [[GKScore alloc] initWithLeaderboardIdentifier:@"Stage1"];
            score.value = _gameScore;
            [GKScore reportScores:@[score] withCompletionHandler:^(NSError *error) {
                if (error) {
                    // エラーの場合
                }
            }];
        }


3に関しては、下記を実装して実施します。
/**
 * リーダーボードで完了タップ時の処理
 * 前の画面に戻る
 */
- (void)gameCenterViewControllerDidFinish:(GKGameCenterViewController *)gameCenterViewController
{
    [self dismissViewControllerAnimated:YES completion:nil];
}


- (IBAction)btnRanking:(id)sender {
    GKGameCenterViewController *gcView = [GKGameCenterViewController new];
    if (gcView != nil)
    {
        gcView.gameCenterDelegate = self;
        gcView.viewState = GKGameCenterViewControllerStateLeaderboards;
        [self presentViewController:gcView animated:YES completion:nil];
    }
}

ボタンを用意して、ボタンが押下されときのイベントに紐付けします。これでランキングを見ることができます。
ちなみに、実機テストでは、サンドボックスモードにしないと、Game Centerにログインができないので要注意です。iPhoneの設定から変更できます。

すでにアプリが出来上がっている場合は、準備編から実装編あわせても、30分もかからずに実装することができると思います。

【Objective-C】Game Centerに対応したアプリの作り方(準備編)

■ iTunes Connectの設定

Appの管理からゲームセンターの設定に行きます。
ここではアプリごとにゲームセンターのスコアを送信するためのボードを作成していきます。複数のステージがある場合には、複数のボードを作成して、ステージ毎のスコアを競うことができます。

1.ゲームセンターの有効化
Game Center をEnabledにすること。
次にLeader Boardの追加をします。










2.Leader Boardの追加








スコアの種類、タイプ、並べ替えの順序など設定していきます。
例えば、シューティングゲームなどの点数を競う場合は、ベストスコア、スコアの降順の設定をし、カートのゲームなどでタイムを競う場合は、スコアの昇順での設定をするようです。ここで設定したボードのIDでアプリ側から参照をするので、覚えておいてください。

3,Leader Boardのローカリゼーション







Leader Boardの名前、得点のフォーマット、得点の単位(exp , pt)など好きに設定をできます。各国ごとにローカライズしてきましょう。
また、Game Centerのイメージアイコンが必要になりますので、用意しておく必要があります。サイズは512 * 512の大きさのものとなります。

ここまでで、無事にボードの作成はできました。しかし、これではまだGame Centerは有効にはなりません。次にAppの管理で現在のアプリのVersionを選択して、Game Centerを有効化する必要があります。

4.アプリのVersion





ここで+を押下すると先ほど追加して先ほど追加したボードをアプリに登録します。
Game CenterをEnabledにすることも忘れずに・・・。
これで、iTunes Connect側の設定は完了です。

次はアプリ側の実装方法について説明していきます。

【Objective-C】Game Centerに対応したアプリの作り方(準備編)