Objective-Cでアチーブメント

iPhoneアプリに達成記録、Achievement(アチーブメント)を実装しようとしたが意外と情報がなかったので備忘録。

コチラiTunes Connect: Game Center の Achievement を設定する | siro:chroを参考に、itunes connectでAchievementを作ってから、

Game Centerプログラミングガイド – Apple Developer
詳解iOS5プログラミング – 沼田哲史 – Google ブックス
上記ページを参考に下記のようなコードを書いてみた。

- (void)sendAchievement{
    
    if (totalCount >= 100) {
        GKAchievement *achievement = [[GKAchievement alloc]initWithIdentifier:@"tamago100"];
        achievement.percentComplete = 100;//達成率
        achievement.showsCompletionBanner = YES;//達成した時に画面にバナー表示するか。

        [achievement reportAchievementWithCompletionHandler:^(NSError *error) {
            if (error) {
                NSLog(@"アチーブ100エラー"); //エラー表示
            } else {
                NSLog(@"アチーブ100成功");//達成項目のアップロードに成功
            }
        }];
    }
 }

すると、8行目で黄色三角がでて、
‘reportAchievementWithCompletionHandler:’ is deprecated: first deprecated in ios7.0 – Use +reportAchivements:withCompletionHandler:
と、ios7以降では推奨されない的なことを言われた。

よくわからないが、色々と調べるとこちらのサイトに行き着いた。
[self Achievements:achievement];

そしてコードを書きなおしてみた。

- (void)sendAchievement{
    
    if (totalCount >= 100) {
        GKAchievement *achievement = [[GKAchievement alloc]initWithIdentifier:@"tamago100"];
        achievement.percentComplete = 100;//達成率
        achievement.showsCompletionBanner = YES;//達成した時に画面にバナー表示するか。

        [self Achievements:achievement];
    }
}

-(void)Achievements:(GKAchievement*)achievement {
    
    NSArray *achievements = [NSArray arrayWithObjects:achievement, nil];
    [GKAchievement reportAchievements:achievements withCompletionHandler:^(NSError *error) {
        if (error != nil) {
            NSLog(@"Error in reporting achievements: %@", error);
        } else {
            NSLog(@"アチーブ成功");//達成項目のアップロードに成功
        }
    }];
}

これでエラーは消えた。

sendAchievementメソッドの中でif文を増やしていけば色々アチーブメントを追加できるとおもう。
しかし、点数の低いアチーブメントが毎回送られてしまう気がするが大丈夫なのかな?(^_^;)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です