現在GameCenterの達成項目(achievement)を実装しています。
iTunes connectでの設定を終え、コードも書いたのですが達成が反映されません。
試しにリーダーボードのコードも追加し、iTunes Connectで設定しましたがこちらも反映されませんでした。
ログには「no bundle for bundleID: (null)」がどちらの場合にも出力されていて、
GameCenter関連のコードをコメントするとエラーは出ません。
TargetのURLTypes、Bundle IDの設定欄、Info.plistのBundle IDの設定欄には正しくBundle IDが設定してあります。
なかなか解決できなくて困っています。
どのようにすれば解決できるでしょうか?
よろしくお願い致します。
Objective
1 2//.hファイルのインポート欄 3#import <GameKit/GameKit.h> 4#import <Foundation/Foundation.h> 5#import <UIKit/UIKit.h> 6 7//.mファイル 8- (void)viewDidLoad { 9 10//GAME CENTER読み込み 11 [self authenticateLocalPlayer]; 12 13 ACHIVID = [NSString stringWithFormat:@"achieve"]; 14 percent = 100.0; 15 16 [self reportAchievementIdentifier:@"achieve" percentComplete:100.0]; 17 18//リーダーボードにスコアを反映 19 if ([GKLocalPlayer localPlayer].isAuthenticated) { 20 GKScore* score = [[GKScore alloc] initWithLeaderboardIdentifier:@"achievement"]; 21 22 score.value = 100.0; 23 [GKScore reportScores:@[score] withCompletionHandler:^(NSError *error) { 24 if (error) { 25 // エラーの場合 26 } 27 }]; 28 } 29 30} 31 32 33/** 34 * GameCenterにログインしているか確認処理 35 * ログインしていなければログイン画面を表示 36 */ 37- (void)authenticateLocalPlayer 38{ 39 GKLocalPlayer* player = [GKLocalPlayer localPlayer]; 40 player.authenticateHandler = ^(UIViewController* ui, NSError* error ) 41 { 42 if( nil != ui ) 43 { 44 [self presentViewController:ui animated:YES completion:nil]; 45 } 46 47 }; 48} 49 50 51- (void)showRanking { 52 GKGameCenterViewController *gcView = [GKGameCenterViewController new]; 53 if (gcView != nil) 54 { 55 gcView.gameCenterDelegate = self; 56 gcView.viewState = GKGameCenterViewControllerStateLeaderboards; 57 [self presentViewController:gcView animated:YES completion:nil]; 58 } 59} 60 61 62- (void) reportAchievementIdentifier: (NSString*) identifier percentComplete: (float) percent { 63 GKAchievement *achievement = [[GKAchievement alloc] initWithIdentifier:identifier]; 64 if (achievement) { 65 66// achievement.percentComplete = percent; 67 [achievement reportAchievementWithCompletionHandler:^(NSError *error) 68 { 69 if (error != nil) { 70 // アチーブメントオブジェクトを保持して、後から再試行します(ここには示さない) 71 } 72 }]; 73 } 74} 75 76/** 77 * リーダーボードで完了タップ時の処理 78 * 前の画面に戻る 79 */ 80- (void)gameCenterViewControllerDidFinish:(GKGameCenterViewController *)gameCenterViewController 81{ 82 [self dismissViewControllerAnimated:YES completion:nil]; 83} 84 85
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。