2013年11月8日金曜日

iOS7で、初期アニメーションが動かない場合

画面が起動した際にアニメーションを入れる演出をしようとしたところ…
iOS6では動くが、iOS7では動かないことが判明。
ちなみに起動時以外は、正常に動いてくれます。

ViewDidLoadに、書いてもダメでviewDidAppearに処理を書くことで動きます。
Xcode5になってからさらにアプリが作れなく悩む日々…。

- (void)viewDidAppear:(BOOL)animated {
 // この中に処理を書く
}

2013年9月9日月曜日

スマホサイト制作のポイント

よく忘れるのでMEMO

スマホサイト制作においてブラウザのアドレスバーを非表示にする。

<script type="text/javascript">
function hideAdBar(){ setTimeout("scrollTo(0,1)", 100);}
</script>

</head>

<body onLoad="hideAdBar()" onOrientationChange="hideAdBar()">

あとスマホ横向きの制御は幅479pxで行う。
480px(iPhone3.5インチ)では、大柄になって馬鹿っぽいくなるので。
iPadは、横にした際に、780pxで制御がちょうど良い?
横にした際に、両端に空スペースができる方が縦表示部分が大きくなるので…。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
アイコン設定

ホームのショートカットに表示されるアイコンの作成について見ていこう。画像のサイズは正方形で作成する。iPhoneの場合、過去の端末であるiPhone 3G /3GSは57×57px、Retinaディスプレイを搭載したiPhone 4/4Sは114×114pxとなっている。

<link rel="apple-touch-icon" href="img/apple-touch-icon.png" />

apple-touch-iconを指定した場合、iPhoneではアイコン画像に自動的に光沢処理が行われる。光沢をつけたくない場合は、rel属性の値にapple-touchiconではなく、apple-touch-iconprecomposedを指定

<link rel="apple-touch-icon-iconprecomposed" href="img/apple-touch.png" />


【参考】
https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html#//apple_ref/doc/uid/TP40002051-CH3-SW3




2013年9月4日水曜日

iPhone リセットのやり方

iPhone5Sが発売される…ということでiPhone4SのSIMフリー版を発売前にヤフオクに出品。
SIMフリーのiPhoneは、docomoや海外で使えるだけでなく、カメラ撮影時のシャッター音が鳴らないのがGOODです。
盗撮目的とかでなく、セミナーなどで撮影する時に、やはりシャッター音はしない方が良い。

iOS5で脱獄してかなりカスタムして便利に使っていましたが、ヤフオク出品にあたりリセットすることに。
設定>一般>リセット
こちらから普通はすぐにできるのだが、脱獄の影響か30分経ってもグルグルがまわっている。

そこでそんな時のリセット方法
DFUモードで復元をします。
クリーンインストールに成り問題が解決します。

USBケーブルをパソコンに接続して。
ホームボタンとスリープボタンを同時に押して電源がきれたらスリープボタンを離します。
ホームボタンを押し続けるとiTunesが立ち上がってリカバーモードのiPhoneを
見つけましたと出れば復元をクリック。
iOS5だったのに、iOS6にアップデイトされてしまう。

2013年7月18日木曜日

Macで画面を録画する…

Quick Timeで画面を録画することができる。

QuickTime Playerを起動させ、「ファイル」-「新規画面収録」 


 これでは音が入らない。
音が必要な場合は、下図のようにして内蔵マイクを選択。

しかし自分の声だけが入っても意味がないので、上記画面にあるSoundflowerを使います。
以前に設定していたようだ。
ダウンロード先 https://code.google.com/p/soundflower/

1年に1度やるかやないかくらいのことなのでMEMOとして記録。。。。



2013年5月21日火曜日

Game Centerの設定不足でリジェクト

1年振りにGameCenter を設定し、テストモード(Sandbox)でも動作確認できて、満を持して審査待ちをしていましたがリジェクト…


Binary Rejected

  • 2.3: Apps that do not perform as advertised by the developer will be rejected

Apple
May 20, 2013 08:19 AM
----- 2.3 -----

We found that your application is using Game Center features, however, you have not yet submitted the features for review. It would be appropriate to submit the Game Center features for review.

While your iTunes Connect Application State shows as Rejected, we don't require a new binary to address this issue. Please visit iTunes Connect, Manage Your Applications, then select your app and click on Manage Game Center to complete the features setup or to remove it. When you are finished, please reply to this message and we will proceed with your review.

IMPORTANT: After making the necessary changes to your metadata and clicking the "Save" button at the bottom of the page, do NOT click "Ready to Upload Binary" unless you plan to submit a new binary. If you click the "Ready to Upload Binary" button, a new binary upload will be required.

GameCeterは、Enableになっているのに、何を言うとるねん…。
気付いたのは、
ページ下部にある青いボタン「View Detail」こちらから入ったところにもGameCetnterの設定があるが、ここも勿論、Enableにしておいたのだが、その下は空っぽになっていることに気付く。



こちらをEditを押して、設定したIDを有効にして再申請。(バイナリーはアップせずに変更したよと連絡すれば良いようだ。)
上図の左側の矢印の部分が空でした。
右側は、Manage Game Centerの画面。
同じミスをまた時間が経つとしそうなのでメモとして記録。




現在は単にハイスコアだけの利用だが、アチーブメントなどの設定も次回チャレンジした。
(参考)
http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/GameKit_Guide/GameCenterOverview/GameCenterOverview.html




2013年5月15日水曜日

GameCenterを設定してみる


GameCenter(GameKit)を使う準備
iTunesConnect側で新規アプリを登録します。実際のアプリデータはまだ送信しなくてOKです。iTunesConnectGameCenterの設定をしないと、テストも出来ないのです。Xcodeの方だけで設定をしていても「this game is not recognized by game center」とエラーが出るだけです。
アプリを登録したら、アプリの設定画面から「Manage Game Center」をクリック。


Edit」で中に入ったら、左上の「Add Leaderboard」をクリックして新しくLeaderboardを作ります。Choose Leaderboard Typeでは「Single Leaderboard」をクリック。




Leaderboardの各項目について
  • Leaderboard Reference Name・・・リーダーボードの名前:任意
  • Leaderboard ID・・・リーダーボードのID:任意 (Xcodeでの実装にも必要なので忘れずに…)
  • Score Format Type・・・スコアの送り値 整数 / 固定小数点数 / タイム / 金額 より選択
  • Ascending・・・並び順を昇順か降順を選択
  • Score Range・・・とりあえず0から、マックスまで指定
Leaderboard Localizationでは各国毎に表記を変更できます。例えば単位に「点」、「秒」をつけることができます。


Xcodeでの実装
GameKitのフレームワークを追加。
Cocos2dだと、最初からフレームワーク入ってた…。

次にResorces > info.plistの中のRequrired device capabilities内に+ボタンを押して
Keyにgamekit,、TypeはBookean、ValueはYESと入力



アプリ起動時にGameCenterへのログイン認証を行いたいので、AppDelegate.m内に追記。
#import <GameKit/GameKit.h>



- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    
    //gamecenterのプレイヤーを取得
    [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error){}];



ログインしていれば、ログインしました。と上部ににょろっと表示される。SANBOXというモードはテスト専用のモード。(テストの高得点が、実際のGameCenterに反映されないようになっています。テストユーザーを作る時は、特に注意が必要。ここで使ったメアドは、本番のApple IDに利用できなくなるなどのトラブルが続き、アップル内でも部署をまたぎかなり面倒なことに…)

次にGameCenter呼び出す。
実装ファイルの.h .mの両方に#import <GameKit/GameKit.h>を追加

以下は自分の備忘録的にCocos2dでの実装…。
1)デリゲートをちゃんと記述する
XXXScene.h
@interface XXXScene : CCLayer<GKLeaderboardViewControllerDelegate>{
XXXScene.m
//リーダーボードを立ち上げる
- (void)GoToRankng {
    GKLeaderboardViewController *leaderboardController =
    [[GKLeaderboardViewController alloc] init];
    
    if (leaderboardController != nil)     
        {
        leaderboardController.leaderboardDelegate = self
        [[CCDirector sharedDirector]
         presentModalViewController:leaderboardController animated:YES];
        }
    }

//リーダーボードで完了を押した時に呼ばれる
- (void)leaderboardViewControllerDidFinish:(GKLeaderboardViewController *)viewController
    {
    [[CCDirector sharedDirector] dismissModalViewControllerAnimated:YES];
    }


これでビルドしてランキングボタンを押すとリーダーボードが呼び出される(感動)


続いて仕上げにスコアを送る設定
ゲームオーバー処理の箇所に下記を追加。スコア値と、先程メモしておいたリーダーボードIDを設定。

// Game Center スコア送信
    GKScore *scoreReporter = [[GKScore alloc] initWithCategory:@"●●●リーダーボードID●●●"];
    NSInteger scoreR;
    scoreR=●●●スコア値●●●;
    scoreReporter.value = scoreR;
    [scoreReporter reportScoreWithCompletionHandler:^(NSError *error) {
        if (error != nil)
        {
            CCLog(@"error %@",error);
        }
    }];


リーダーボードが呼び出されればスコア送信はすんなり行き完了。
GameCenterはいろんな設定ができますが、頭の悪い私はスコアのランキングだけできればとりあえず満足。

2013年5月13日月曜日

Xcodeで実機デバッグができなくなる…。


原因は、脱獄した時に入れたLocationHolicという位置情報偽装アプリが原因でした。
こちらCydiaのInstalledというタブから探して右上のModifyよりRemove。


ちなみに上記のアプリは、東京にいながら大阪のFMを聴いたりすることができます。

脱獄は違法ではありませんが、アップルのサポートが受けれなくなるリスクがあるので自己責任で行いましょう。必ずバックアップを取ってから…。

ちなみに最近のお気に入りは、
InfiniFolderというアプリは最強でフォルダーに無制限?にアプリが格納できるのでかなり整理できてかなり良いです。(有料)

2013年5月2日木曜日

Xcode 起動中にスリープさせない


時計アプリなど、デバイスのスリープを無効にするために… 
ViewDidLoadの部分に追加しておくと機能したぜ。

[UIApplication sharedApplication].idleTimerDisabled = YES;

ステータスバーを半透明にする

カメラアプリに実装しようとするが、撮影画面にステータスバーを表示していなかったことを思い出す。


これを実現するコードはこんな感じ。UIViewController 内に記述する。
- (void)viewWillAppear:(BOOL)animated
{
 [super viewWillAppear:animated];

 // setup *bar translucent
 [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackTranslucent;
 self.wantsFullScreenLayout = YES;    // ステータスバーの背景も描画対象にする

 self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
 self.navigationController.navigationBar.translucent = YES;
 
 self.navigationController.toolbar.barStyle = UIBarStyleBlack;
 self.navigationController.toolbar.translucent = YES;

}

Cocos2d iPhone4SだけBGMが鳴らない…

iPhone5もiPad3もシュミレーターも音が鳴るのに…。
クリーンしても、アプリを削除して再度ビルドしてもBGMだけ鳴らない(単音は鳴る)

神秘的な状況が解決しない。

【対策1】
 初期化でBGMのプリロードを一番最初に持ってくる。
 (一瞬、これで復活)

【対策2】
 実機を再起動(電源オフ)。
 電池切れで直っていたことで音が鳴ったことにより解決。

Xcode iPhone iPadアプリ作成に必要なアイコンサイズ一覧

iPhoneアプリを作る時はiPadでも必ずチェックしないとアイコンがスプラッシュ画像になっていることが…。iPad用のアイコンの追加を忘れない。




icon.png                             (57 x 57)                 【iPhone用】
icon@2x.png                     (114 x114)              【iPhone Retina用】
icon-small@2x.png          (58 x 58)                【iPhone4 Spotlight用】
icon-small.png                  (29 x 29)                【設定メニュー/Spotlight用】
icon-small-50.png            (50 x 50)               【iPad Spotlight用】
icon-72.png                        (72 x 72)                【iPad用】
icon-72@2x.png                        (144 x 144)                【iPad Retina用】
iTunesArtwork.png (512 x 512)              【App Store用 拡張子不要】
iTunesArtwork@2x.png (1024 x 1024)       【App Store用 拡張子不要】

iPadがない場合はシュミレーターでも十分。
反映されない場合はplistをチェック。
ファイルがない場合は、上図のように追加して、Cleanを実行して、実機またはシュミレーターのアイコンを削除してから再度ビルドする。

2013年4月22日月曜日

Cocos2d WebView画面を追加する

Cocos2dとUIKitの連携は一癖あるようだ。
 iPhone5で動いてるので安心していたのだが、iPhone4Sの実機に入れるとボタンを押すと落ちることが判明。 切り分けするためにシュミレーターでもやってみるとiOS5で落ちる。

 原因は、Xibファイルの設定に問題が… 図のオートレイアウトの✔を外すと解決☆ 細かいことはわからないけど、動けばいいや…。

4月中に初のCocos2dアプリを出すことを目標に頑張っています。

 

2013年3月14日木曜日

Cocos2dのバージョンアップ

Ver.1からVer.2にする際に
テンプレートのインストールをコマンドラインでやるのだが、どうも通らない。

Finder > 移動 > ライブラリー >Developer > Xcode >Template
ここに問題のディレクトリーがある。
こちらのアクセス制限を一時的に解除してあげることにより、無事、テンプレートがインストールできた。(⌘+i )

達人より直接ご指導頂き解決。