******************************************************************************** ******************************************************************************** ******************************************************************************** ******************************************************************************** OpenFeint GameCenter Migration SDK release date 9.15.2010 Release Notes Copyright (c) 2010 Aurora Feint Inc. All Rights Reserved. ******************************************************************************** ******************************************************************************** ******************************************************************************** ******************************************************************************** ******************************************************************************** ******************************************************************************** **** How It Works ******************************************************************************** The OpenFeintMigration SDK is a separate SDK from OpenFeint. If you are planning to STOP supporting OpenFeint and use GameCenter exclusively you should completely delete (un-integrate) OpenFeint's traditional SDK from your application. After OpenFeint is no longer integrated you can include this SDK by following the instructions below. Here's what it will do: 1. Access OpenFeint's local disk storage cache of Achievements and Scores for the last logged in OpenFeint user. 2. Submit all Achievements and Scores for said user to GameCenter only upon successful GameCenter authentication. If any score/achievement fails submission to GameCenter it will be attempted again on next application launch (after GameCenter authentication.) ******************************************************************************** **** Getting Started ******************************************************************************** 1. Ensure you have XCode version 3.2.4 with the final iOS 4.1 SDK 2. Drag and drop the unzipped folder titled 'source' onto your project in XCode. Make sure it's included as a group and not a folder reference. 3. Rename 'resources/OFGameCenter.plist.template' to 'resources/OFGameCenter.plist' and add this file to your project. 4. Edit OFGameCenter.plist to define your mapping of OpenFeint Achievements and Leaderboards to their GameCenter equivalents. * Under the 'Leaderboards' key there is a series of key/value pairs where the key is the OpenFeint Leaderboard ID string and the value is the GameCenter leaderboard category name string. * Under the 'Achievements' key you will find another series of key/value pairs where the key is the OpenFeint Achievement ID string and the value is the GameCenter achievement identifier string. * Please remember to delete the default OFLeaderboardId and OFAcheivementDefinitionId key/value pairs. 5. Right click on your project icon in the Groups & Files pane. Select Get Info. * Select the Build tab. Make sure you have Configuration set to All Configurations * Ensure 'Call C++ Default Ctors/Dtors in Objective-C' is checked under the 'Code Generation' section * NOTE: Older Xcode projects may have to add this as a user defined setting GCC_OBJC_CALL_CXX_CDTORS set to YES 6. Ensure the following frameworks are included in your link step: (do this by right clicking on your project and selecting "Add->Existing Frameworks...") * Foundation * UIKit * libsqlite3.dylib 7. You must be compiling with Objective-C++ (Use a .mm file extension, rather than .m) 8. It is recommended that you initialize and shutdown OpenFeintMigration in your main application class: #import "OpenFeintMigration.h" - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { ... [OpenFeintMigration initializeMigrationForGameName:@"Your Game Name"]; return YES; } - (void)applicationWillTerminate:(UIApplication *)application { ... [OpenFeintMigration shutdownMigration]; } 9. If, for testing or any other purpose, you want to reset your migration state you can invoke: [OpenFeintMigration resetMigrationState]; This will reset OpenFeintMigration's internal state so it will attempt to re-migrate upon next application launch.