Game Center has a notification window that slides down and informs the
GKLocalPlayer that they've been authenticated. There is no built-in way to display achievements that the user may have earned during use of your application. The
GKAchievementNotification classes are a way to display achievements awarded to the player in the same manner as the authenticated message—similar to Xbox Live style achievement dialogs. The achievement dialogs are added to the
UIWindow view of your application:
Achievement notifications in the upcoming Cee-lo 1.1 update.
You can grab the code from github. Add the folder (.h, .m, images) to your Xcode project. The
GKAchievementHandler class handles the display of the notifications. You'll primarily use that (there'd usually be no reason to create a notification directly). When your player earns an achievement, you can notify them of this via GKAchievementHandler:
// grab an achievement description from where ever you saved them GKAchievementDescription *achievement = [[GKAchievementDescription alloc] init]; // notify the user [[GKAchievementHandler defaultHandler] notifyAchievement:achievement];
You can also use custom messages instead of a
[[GKAchievementHandler defaultHandler] notifyAchievementTitle:@"High Roller" andMessage:@"Earned 100 points online."];
Apples Guidelines state that "it is up to you to do so in a way that fits the style of your game". and Allan Schaffer of Apple stated in the forums that "[the] best way to do that would be to present a custom dialog using the look and feel of your game" (emphasis, his). This to me means you may be rejected for using Apple's artwork in a custom application. If this worries you, use the
setImage: methods to change the logo displayed in the dialog or change the gk-icon.png images in your images. You can also set the image to nil to not show any image:
[[GKAchievementHandler defaultHandler] setImage:nil];
You can also edit the gk-notification.png images to change the stretchable background.