iOSアプリで、GameCenterを入れても、自分のスコアしか反映されない

gamecenter アイコン

タイトルの通り、iPhoneアプリでleaderboard等、
ランキング機能を使っていたのですが、いくらやっても、
何故か自分のスコアしか反映されない。

いくら施行錯誤しても、だめでした。

sandboxユーザー でやったり、TestFlightユーザー でやったり、
ユーザーを何度も作り直したり、
debugやreleaseが問題なのかなと思ったたり、

一行に1ユーザーの情報だけしか表示されない、、
何が原因なんだー、、半日まっても駄目。。。

iOS swiftでQRコード認識時に時々クラッシュする際対策!

iphone swiftでQRコード認識時にクラッシュする事がある。その対策

QRコードリーダーアプリで、下記のようにカメラ内のQRコードを読み取る時に、
クラッシュする事が一定確率であった。

エラー内容


fatal error: unexpectedly found nil while unwrapping an Optional value

クラッシュ対象のコード


qrCodeObject = previewLayer.transformedMetadataObjectForMetadataObject( metadata as! AVMetadataMachineReadableCodeObject) as! AVMetadataMachineReadableCodeObject

この部分で、クラッシュする事がある。。

色々調べたら、AVCaptureVideoPreviewLayer内のメソッドでnilが入る事があるらしい。

超参考:http://ja.stackoverflow.com/questions/14968/%E4%B8%8B%E8%A8%98%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%92%E5%8F%82%E8%80%83%E3%81%AB%EF%BC%92%E6%AC%A1%E5%85%83%E3%83%90%E3%83%BC%E3%82%B3%E3%83%BC%E3%83%89%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8A%E3%82%92swift2%E3%81%A7%E6%9B%B8%E3%81%84%E3%81%9F%E3%81%AE%E3%81%A7%E3%81%99%E3%81%8C-%E5%AE%9F%E6%A9%9F%E3%83%87%E3%83%90%E3%83%83%E3%82%AF%E6%99%82%E3%81%AB%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E7%94%BB%E9%9D%A2%E3%81%AE-fatal-error-unexpectedly

ボクが対策したコード


if previewLayer.transformedMetadataObjectForMetadataObject( metadata as! AVMetadataMachineReadableCodeObject) != nil { //nilチェックしてから処理 qrCodeObject = previewLayer.transformedMetadataObjectForMetadataObject( metadata as! AVMetadataMachineReadableCodeObject) as! AVMetadataMachineReadableCodeObject }else { // キャプチャセッション再始動 captureSession.startRunning() }

nilチェックをおこなってら処理する事で解決しました。
また、ただのnilの場合はカメラが動かなくなってしまうので、
キャプチャーセッション等を、再度走らせる事で思い通りの動作になりました。!
参考になれば幸いです!!

storyboard等で利用しているラベルのフォントを一括で変更(swift版)

swift フォント一括指定

swiftのコードで、ラベルのフォントを一括で変更

AppDelegate.swift


〜省略〜 @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. // 一括でLabelのフォントを変更 UILabel.appearance().font = UIFont(name: "Helvetica Bold Oblique", size: 18.0) 〜省略〜

もちろん UILabel以外も可能!

また、”Helvetica Bold Oblique” みたいに、

コードから呼び出す際に指定するフォント名の確認は下記で可能です!

iphoneアプリをappstoreに申請する際に、launchImage周りでエラーがでる場合

iphoneアプリをappstoreに申請する際に、launchImage周りでエラーがでる場合に、
エラーがでる事がある。

xcodeのバージョンは、xcode7.2.1

xcodeのLaunchImageは、レイアウトファイルをちゃんと指定しているのなになぜか、、
色々調べたところ。

通常は画像ファイルか、storyboardファイルの指定の必要があるが、
昔に作ったアプリなので、storyboardの拡張子ではなく、xibファイルの指定だったからのようでした。

xcode

LaunchScreen.xib → LaunchScreen.storyboard

これをxibからstoryboardで作り直しして指定したら、
無事解決!!!
同じようなシチュエーションの人で、参考なれば嬉しいです!

「cocos2d-x 3.5」 と 「cocos studio 2.2」の開発環境構築。

cocosインストール

http://www.cocos2d-x.org/download

こちらcocosというランタイム?をインストール。
またcocos studio2.2をインストール。
起動時のメニューにて、storeというのがあるので、
そこからcocos2d-x 3.5をダウンロードし、インストール。

初期セットアップ

$python setup.py 
$source ~/.bash_profile

テンプレートプロジェクトを作成 (ios&android)

$cocos new MyGame -p com.example.hoge -l cpp -d ~/project_folder/hoge_cocos2dx

iOSで開発

$cd ~/project_folder/hoge_cocos2dx/
のxcodeファイルを開けば、iosの確認が可能。

アンドロイドで開発(IDEつかわずに直接端末つないでadbのパターン)

$cd proj.android/
$python build_native.py 

android端末にインストール

$cd ~/project_folder/hoge_cocos2dx/MyGame/proj.android/bin/
$adb install MyGame-debug.apk

obective-c(iPhone)にて、UITabBar毎にUINavigationBarのページをコードで用意する。

最近iphoneアプリの開発をメインでやっており、色々調べながらやっているのですが、
どれもインターフェースビルダーや、ストーリーボードを使った説明が多く個人的にはやりずらい印象をもっております。

と言う事で、色々探した結果、コードでUITabbarUINavigationBarを共存させる方法が見つからなかったので、自力でとりあえず動いた方法を下記にメモします。
余力があればgithubにあげたいと思います。

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    _window= [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    _tabBarController = [[UITabBarController alloc] init];  //tabbarコントローラ初期化

    // TabBarControllerに加える3つのViewController
    UIViewController *firstViewController = [[FirstViewController alloc] init];
    UIViewController *secondViewController = [[SecondViewController alloc] init];
    UIViewController *thirdViewController = [[ThirdViewController alloc] init];

    //first用UINavigationController のルート画面 
    UINavigationController *naviFirstViewController = [[UINavigationController alloc] initWithRootViewController:scanViewController];

    //UINavigationController のルート画面 
    UINavigationController *naviSecondListController = [[UINavigationController alloc] initWithRootViewController:secondViewController];

    // tab bar controller の初期化
    self.tabBarController.viewControllers =[NSArray arrayWithObjects:naviFirstViewController, naviSecondListController, thirdViewController, nil];

    [self.window addSubview:self.tabBarController.view];
    [self.window makeKeyAndVisible];

    return YES;
}

上記は、左から2つ目までのタブはそれぞれ、ナビゲーションバーをもっていて、それを最後にタブバーにセットしています。

やっぱりコードで書いた方が、何をやっているかしっくりくるし、
IBXibもあわせてみる必要がなく大変扱いやすいです。

(iOS)objective-c 共通で使える変数 Singletonまとめ

久しぶりの投稿!

objective-cを最近さわりはじめて、どうしても共通で利用したいグローバル変数的なものがほしかったので、色々しらべて見ました!
せっかく自分でメモリ管理できるobjective-cなので、一度作ったメモリをいろんなクラスから利用できたらなということで、参考になったサイトを下記にまとめました。

http://d.hatena.ne.jp/koichirohonda/20120325

http://blog.syuhari.jp/archives/2178

http://ylb.jp/iOSDev/SingletonSample.pdf