===== Using OpenFeint with Sparrow ===== [[/users/brian/start|My Wiki Page]] \\ \\ OpenFeint is a powerful social framework for iOS games. It makes it easy to handle achievements, leaderboards, and sharing. You can even synchronize it with Game Center. This tutorial only covers a basic OpenFeint integration and not any advanced features. \\ [[http://forum.sparrow-framework.org/topic/tutorial-integrating-openfeint-with-sparrow|Tutorial Forum Post]] This tutorial starts with the Sparrow scaffold. If you are not using the scaffold, your integration might be a little different. == 1. Go to https://api.openfeint.com/dd/signup and sign up for an account. == {{http://img252.imageshack.us/img252/821/screenshot20111229at113.png?700|}} \\ If you already have an account, just create a new game from the developer dashboard. == 2. Download the latest SDK from https://api.openfeint.com/dd/downloads. == I am using the OpenFeint iOS 2.12.5 package. == 3. Find OpenFeint.framework in the SDK package and add it to your Sparrow project. == Also, add the correct configuration bundles for your project: \\ \\ If your game is iPhone landscape only, use OFResources_iPhone_Landscape.bundle. \\ If your game is iPhone portrait only, use OFResources_iPhone_Portrait.bundle. \\ If your game is iPad only, use OFResources_iPad.bundle. \\ If your game is iPhone landscape and portrait, use OFResources_iPhone_Universal.bundle. \\ All others use OFResources_Universal.bundle. \\ \\ {{http://img838.imageshack.us/img838/9762/screenshot20111229at115.png?300|}} == 4. Add the following frameworks to your project. == AddressBook \\ AddressBookUI \\ CFNetwork \\ CoreLocation \\ CoreText \\ GameKit \\ libsqlite3.0.dylib \\ MapKit \\ MobileCoreServices \\ Security \\ SystemConfiguration {{http://img851.imageshack.us/img851/9739/screenshot20111229at121.png?700|}} \\ At this point, you should be able to build and run your app with no OpenFeint related warnings or errors. == 5. Add the following code in ApplicationDelegate.h and .m. == ApplicationDelegate.h #import "OpenFeint/OpenFeint.h" // Add OpenFeintDelegate after UIApplicationDelegate @interface ApplicationDelegate : NSObject ApplicationDelegate.m // At the end of applicationDidFinishLaunching NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:UIInterfaceOrientationPortrait], OpenFeintSettingDashboardOrientation, @"OFSparrow", OpenFeintSettingShortDisplayName, #ifdef DEBUG [NSNumber numberWithInt:OFDevelopmentMode_DEVELOPMENT], OpenFeintSettingDevelopmentMode, #else [NSNumber numberWithInt:OFDevelopmentMode_RELEASE], OpenFeintSettingDevelopmentMode, #endif nil]; [OpenFeint initializeWithProductKey:@"qXprwYNXTJYdg1iT4lK9Eg" andSecret:@"xgVwRmTkhmOn5StvYiOruIDmL8dEEUyCniZgmLTn0o" andDisplayName:@"OpenFeint Sparrow" andSettings:settings andDelegates:[OFDelegatesContainer containerWithOpenFeintDelegate:self]]; // Add these methods also - (void)dashboardWillAppear { [mSparrowView stop]; } - (void)dashboardDidDisappear { [mSparrowView start]; } - (void)userLoggedIn:(NSString *)userId { NSLog(@"User %@ logged into OpenFeint", userId); } // In the dealloc method [OpenFeint shutdown]; == 6. Use these methods to open the OpenFeint dashboard. == // You may need to #import "OpenFeint/OpenFeint+Dashboard.h" [OpenFeint launchDashboard]; [OpenFeint launchDashboardWithListLeaderboardsPage]; [OpenFeint launchDashboardWithHighscorePage:@"leaderboardID"]; [OpenFeint launchDashboardWithAchievementsPage]; [OpenFeint launchDashboardWithFindFriendsPage]; [OpenFeint launchDashboardWithWhosPlayingPage]; == 7. Use these methods to submit scores and achievements. == // You may need to #import "OpenFeint/OFHighScoreService.h" and "OpenFeint/OFAchievement.h" [OFHighScoreService setHighScore:100 forLeaderboard:@"leaderboardID" onSuccessInvocation:nil onFailureInvocation:nil]; [[OFAchievement achievement:@"achievementID"] updateProgressionComplete:100.0f andShowNotification:YES]; == 8. Yay! You're done. == Here is the sample project from this tutorial. \\ [[http://cl.ly/0l3b3E1q2d3c0A2M0h29|Sample Project]]