<?xml version="1.0"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
		<channel><title>[OpenFeint Developer Support Center] Most Popular Articles</title><link>http://www.openfeint.com/ofdeveloper/index.php/rss/kb/most_popular</link><description></description><item><title>OpenFeint Basics</title><description>&lt;div&gt;
&lt;b&gt;Initializing OpenFeint&lt;/b&gt;&lt;br&gt;
OpenFeint is initialized with one function call:&lt;br&gt;
&lt;code&gt;[OpenFeint
initializeWithProductKey:andSecret:andDisplayName:andSettings:andDelegates:];&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ProductKey and Secret are strings obtained by registering your
application at &lt;a href=
"https://api.openfeint.com"&gt;https://api.openfeint.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;DisplayName is the string name we will use to refer to your
application throughout OpenFeint.&lt;/li&gt;
&lt;li&gt;Settings is dictionary of settings (detailed below) that allow
you to customize OpenFeint.&lt;/li&gt;
&lt;li&gt;Delegates is a container object that allows you to provide
desired delegate objects pertaining to specific OpenFeint
features.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Shutting down OpenFeint&lt;/b&gt;&lt;br&gt;
OpenFeint shutdown is accomplished with one function call:&lt;br&gt;
&lt;code&gt;[OpenFeint shutdown];&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Additional required functions&lt;/b&gt;&lt;br&gt;
Developers are required to notify OpenFeint of device lock / unlock
events in order to reduce processing and save battery.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;[OpenFeint applicationDidBecomeActive];&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This method should be invoked from the UIApplicationDelegate
object's applicationDidBecomeActive: method.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;[OpenFeint applicationWillResignActive];&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This method should be invoked from the UIApplicationDelegate
object's applicationWillResignActive: method.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;OpenFeint configuration settings&lt;/b&gt;&lt;br&gt;
Settings are provided to OpenFeint as an NSDictionary. Here is an
example of creating a settings dictionary for use with the
initialize method:&lt;/p&gt;
&lt;pre&gt;
&lt;code&gt;NSDictionary* settings = [NSDictionary dictionaryWithObjectsAndKeys:
    [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft], OpenFeintSettingDashboardOrientation,
    @"ShortName", OpenFeintSettingShortDisplayName, 
    NSNumber numberWithBool:YES], OpenFeintSettingEnablePushNotifications,
    [NSNumber numberWithBool:NO], OpenFeintSettingDisableChat,
    nil
];&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;More detail for each of these settings can be found below. These
settings are also described in OpenFeintSettings.h.&lt;br&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenFeintSettingRequireAuthorization - &lt;em&gt;deprecated&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;OpenFeintSettingDashboardOrientation - Specifies which
orientation the OpenFeint dashboard will appear in&lt;/li&gt;
&lt;li&gt;OpenFeintSettingShortDisplayName - In certain areas where the
application display name can be too long we will use this more
compact version of your application's display name. One example is
for the title of the current game tab in the OpenFeint
dashboard.&lt;/li&gt;

&lt;li&gt;OpenFeintSettingEnablePushNotifications - This controls whether
or not your application will be enabling Push Notifications (for
Social Challenges, currently)&lt;/li&gt;
&lt;li&gt;OpenFeintSettingDisableChat - Allows a developer to disable
chat for their entire application.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;What is OFDelegatesContainer? Where is
OpenFeintDelegate?&lt;/b&gt;&lt;br&gt;
OFDelegatesContainer is new as of version 2.1 and provides
developers a way to specify all of the various delegates that
OpenFeint features may require.&lt;/p&gt;
&lt;p&gt;If you are only using an OpenFeintDelegate then you may use the
simple convenience constructor:&lt;br&gt;
&lt;code&gt;[OFDelegatesContainer
containerWithOpenFeintDelegate:];&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;What is OpenFeintDelegate for?&lt;/b&gt;&lt;br&gt;
This is the bread-and-butter OpenFeint delegate.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;- (void)dashboardWillAppear;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This method is invoked whenever the dashboard is about to
appear. We suggest that application developers use this opportunity
to pause any logic / drawing while OpenFeint is displaying.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;- (void)dashboardDidAppear;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This method is invoked when the dashboard has finished it's
animated transition and is now fully visible.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;- (void)dashboardWillDisappear;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This method is invoked when the dashboard is about to animate
off the screen. We suggest that applications that do not use OpenGL
resume drawing in this method.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;- (void)dashboardDidDisappear;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This method is invoked when the dashboard is completed off the
screen. We suggest that OpenGL applications resume drawing here,
and all applications resume any paused logic / gameplay here.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;- (void)userLoggedIn:(NSString*)userId;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This method is invoked whenever an application successfully
connects to OpenFeint with a logged in user. The single parameter
is the OpenFeint user id of the logged in user.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;- (BOOL)showCustomOpenFeintApprovalScreen;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This method is invoked when OpenFeint is about to show the
welcome / approval screen that asks a user if they would like to
use OpenFeint. You can learn more about &lt;a href=
"http://help.openfeint.com/faqs/guides-2/approval-screen"&gt;customizing
the approval screen here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;OFNotificationDelegate&lt;/b&gt;&lt;br&gt;
This delegate deals with the in-game notification pop-ups that
OpenFeint displays in response to certain events including high
score submission, achievement unlocks, and social challenges. You
can find more details by referencing the &lt;a href=
"http://help.openfeint.com/faqs/api-features/notification-pop-ups"&gt;API
feature article on notification pop-ups&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;OFChallengeDelegate&lt;/b&gt;&lt;br&gt;
This delegate deals with the Social Challenges API feature. You can
find more details by referencing the &lt;a href=
"http://www.openfeint.com/ofdeveloper/index.php/kb/article/000027"&gt;Social
Challenges feature article&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Launching the OpenFeint dashboard&lt;/b&gt;&lt;br&gt;
The most basic launch of the OpenFeint dashboard is accomplished
with a single function call:&lt;br&gt;
&lt;code&gt;[OpenFeint launchDashboard];&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You can also launch the dashboard with a specific
OpenFeintDelegate for use only during this launch using:&lt;br&gt;
&lt;code&gt;[OpenFeint launchDashboardWithDelegate:];&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;In addition, OpenFeint provides a suite of methods for launching
the dashboard to a pre-defined tab or page. These are documented in
the header file OpenFeint+Dashboard.h.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;+
(void)launchDashboardWithListLeaderboardsPage;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Invoke this method to launch the OpenFeint dashboard to the
leaderboard list page for your application.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;+
(void)launchDashboardWithHighscorePage:(NSString*)leaderboardId;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Invoke this method to launch the OpenFeint dashboard to a
specific leaderboard page. You must pass in a string representing
the unique ID of the leaderboard you wish to view which can be
obtained from the Developer Dashboard.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;+ (void)launchDashboardWithAchievementsPage;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Invoke this method to launch the OpenFeint dashboard to the
achievements list page for your application.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;+ (void)launchDashboardWithChallengesPage;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Invoke this method to launch the OpenFeint dashboard to the
challenge list page for your application.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;+ (void)launchDashboardWithFindFriendsPage;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Invoke this method to launch the OpenFeint dashboard to the
'find friends' page, which prompts the user to use twitter,
facebook, or a username search to locate friends in OpenFeint.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;+ (void)launchDashboardWithWhosPlayingPage;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Invoke this method to launch the OpenFeint dashboard to a page
which lists OpenFeint friends who are also playing your
application.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Orientation and View Controller information&lt;/b&gt;&lt;br&gt;
The OpenFeint dashboard supports being displayed in &lt;em&gt;any&lt;/em&gt;
orientation you desire. It &lt;em&gt;will not&lt;/em&gt;, however, change
orientations while it is being displayed.&lt;/p&gt;
&lt;p&gt;Developers use the OpenFeintSettingDashboardOrientation to
control the initial orientation. If you wish to change the
orientation over the course of the application you may invoke:&lt;br&gt;
&lt;code&gt;[OpenFeint setDashboardOrientation:];&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Generally this is done by applications which want to support
multiple orientations in the UIViewController method
didRotateFromInterfaceOrientation:.&lt;/p&gt;
&lt;p&gt;If your application is using a view controller with a
non-portrait layout then you are required to invoke and return the
following method in your UIViewController's
shouldAutorotateToInterfaceOrientation method.&lt;br&gt;

&lt;code&gt;[OpenFeint
shouldAutorotateToInterfaceOrientation:withSupportedOrientations:andCount:];&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Here is an example implementation of
shouldAutorotateToInterfaceOrientation:&lt;br&gt;&lt;/p&gt;
&lt;pre&gt;
&lt;code&gt;- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    const unsigned int numOrientations = 4;
    UIInterfaceOrientation myOrientations[numOrientations] = 
    { 
        UIInterfaceOrientationPortrait, UIInterfaceOrientationLandscapeLeft, 
        UIInterfaceOrientationLandscapeRight, UIInterfaceOrientationPortraitUpsideDown
    };

    return [OpenFeint 
        shouldAutorotateToInterfaceOrientation:interfaceOrientation 
        withSupportedOrientations:myOrientations 
        andCount:numOrientations];
}&lt;/code&gt;
&lt;/pre&gt;&lt;/div&gt;</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/22</link><pubDate>Wed, 28 Apr 2010 21:55:21 GMT</pubDate><guid isPermaLink="false">0247bb311e08b7dd56fc7bebf6045b67</guid></item><item><title>Integrate OpenFeint in 19 minutes</title><description>Check out this screencast made by Alan Taylor. He shows you how to setup a simple application with OpenFeint and Achievements in 19 minutes flat! Thanks to Alan for making this screencast!
&lt;p&gt;
&lt;object width="600" height="345"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=5633994&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=5633994&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="230"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/5633994"&gt;creating an OpenFeint iPhone app from scratch&lt;/a&gt; from &lt;a href="http://vimeo.com/user2046336"&gt;Alan Taylor&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/20</link><pubDate>Thu, 05 Nov 2009 21:29:20 GMT</pubDate><guid isPermaLink="false">9b81a27984ad52fddbb1595ed10f6feb</guid></item><item><title>OpenFeint Developer FAQ</title><description> &lt;b&gt;Q:
How much does it cost to use OpenFeint?&lt;/b&gt;&lt;br&gt;
A: All of OpenFeint&amp;rsquo;s core features, Leaderboards,
Achievements, Challenges, and Social Notifications, are free to use.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;b&gt;Q: Where can I read the
OpenFeint License Agreement?&lt;/b&gt;&lt;br&gt;
A: The license agreement appears when you submit a game for approval
and is also available in the help center &lt;a href="http://www.openfeint.com/ofdeveloper/index.php/kb/article/000070"&gt;here&lt;/a&gt;.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;b&gt;Q: When should I submit my game
for OpenFeint approval?&amp;nbsp; How
long does it take?&lt;/b&gt;&lt;br&gt;
A: As soon as you are ready to submit your game for Apple approval or
have completed OpenFeint integration.&amp;nbsp; Approvals generally
take 2-3 days.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;b&gt;Q: Where can I download art
assets?&lt;/b&gt;&lt;br&gt;
A: OpenFeint icons and art assets are located within the Developer
Dashboard under &amp;ldquo;OF Icon&amp;rdquo; along the left hand
navigation.&amp;nbsp; Scroll to the bottom of the page to download the
.zip file.&amp;nbsp; Also be sure to check out our branding guidelines.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;b&gt;Q: Is it possible to access the
leaderboards and display them on our
web site?&lt;/b&gt;&lt;br&gt;
A: Leaderboards are not accessible via the web right now. We are in the
process of planning how we're going to expose our APIs for use via
other web pages.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;b&gt;Q: How do I change the name of my company in the developer dashboard?&lt;/b&gt;&lt;br&gt;
A: We're adding this into an update of the developer dashboard, but in the meantime email us at devsupport@openfeint.com and we can take care of it for you.&lt;/br&gt;
&amp;nbsp;&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;b&gt;Integration Questions:&lt;/b&gt;&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;b&gt;Q: Is there a forum where I
can discuss integration issues?&lt;/b&gt;&lt;br&gt;
A: YES!&amp;nbsp; Please visit the &lt;a
 href="http://openfeint.com/developers/forum/"&gt;OpenFeint
Developer Forum&lt;/a&gt;.&amp;nbsp;
Note that for the fastest response, it&amp;rsquo;s best to contact us
via the form located at the top of this page.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;b&gt;Q: Can I have my free game
and paid game share a leaderboard?&lt;/b&gt;&lt;br&gt;
A: Yes, you can.&amp;nbsp; Check out this article: &lt;a
 href="http://openfeint.com/ofdeveloper/index.php/kb/article/000052"&gt;Using
OpenFeint to
upsell from free to paid&lt;/a&gt;.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;b&gt;Q: I&amp;rsquo;m having trouble
decompressing the Unity support package.&lt;/b&gt;&lt;br&gt;
A: We&amp;rsquo;re aware of an issue with developers still using the
Leopard OS.&amp;nbsp; Download a Leopard-friendly version of the
package &lt;a
 href="http://openfeint.com/UnitySupport-RecompressedForCompatibility.zip"&gt;here&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Q: How do I get notifications
to come from the top of the screen?&lt;/b&gt;&lt;br&gt;
A: Set OpenFeintSettingInvertNotifications to true when initializing
OpenFeint to show notifications from top. &lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;b&gt;Q: I&amp;rsquo;m running into a
lot of build errors.&amp;nbsp;
What&amp;rsquo;s wrong?&lt;/b&gt;&lt;br&gt;
A: Check out the &lt;a
 href="http://www.openfeint.com/ofdeveloper/index.php/kb/article/000069"&gt;Build
Error FAQ&lt;/a&gt; for some possible
solutions to common
build errors.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;b&gt;Q: Is there an API call I can
use to tell if the user has opted-in or
out from using OpenFeint?&lt;/b&gt;&lt;br&gt;
A: [OpenFeint hasUserApprovedFeint]&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Q: Is there a notification for when the OpenFeint dashboard closes so
that I know when to stop running animations and when to start?&lt;/b&gt;&lt;br&gt;
A: You'll want to have a look in OpenFeintDelegate.h. When you
initialize OpenFeint you should be providing a delegate which adopts
this protocol.&lt;br&gt;
You should stop the animations in this delegate method:&lt;br&gt;
(void)dashboardWillAppear;&lt;br&gt;
for cocoa games you should resume then in:&lt;br&gt;
and for OpenGL games you should resume them in:&lt;br&gt;
(void)dashboardDidDisappear;&lt;br&gt;
You are free to create your own notification and post it within these
delegate methods if you need to get these events passed along to other
objects.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;b&gt;Q: What happens to a high score
when a player is offline?&lt;/b&gt;&lt;br&gt;
A: As of OpenFeint 2.1 high scores are queued for submission when the
player is offline and submitted when next he's online again.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Q: Does OpenFeint use
encryption?&lt;/b&gt;&lt;br&gt;
A: OpenFeint uses HTTPS for all communication between the client and
our servers.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;b&gt;Promotions:&lt;/b&gt;&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;b&gt;Q: I&amp;rsquo;m approved and
my game is available in the App Store,
why isn&amp;rsquo;t it showing up in the game catalog?&lt;/b&gt;&lt;br&gt;
A: The OpenFeint game catalog usually updates within 3 days.&amp;nbsp;
If it&amp;rsquo;s been longer than 7 please contact us so that we can
investigate.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;b&gt;Q: What is the criteria for
becoming an OpenFeint Gold Game?&amp;nbsp;
How can I apply?&lt;/b&gt;&lt;br&gt;
A:&amp;nbsp; OpenFeint Gold requirements are outlined in &lt;a
 href="http://openfeint.com/ofdeveloper/index.php/kb/article/000058"&gt;this
support
article&lt;/a&gt;.&amp;nbsp; To apply for
Gold, or any of our other promotional
opportunities, please check out the OpenFeint Gold section of the
developer dashboard.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Q: How do I apply for Free Game
Of The Day?&lt;/b&gt;&lt;br&gt;
A:&amp;nbsp; Apply for Free Game Of The Day here:&amp;nbsp; &lt;a
 href="http://www.freegameoftheday.com/faq"&gt;Free Game
Of The Day FAQ&lt;/a&gt;
&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;
</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/23</link><pubDate>Fri, 28 May 2010 23:35:25 GMT</pubDate><guid isPermaLink="false">aac4abbf55240d60de3d196e2d3259de</guid></item><item><title>Leaderboards</title><description>  &lt;div&gt;&lt;p&gt;&lt;b&gt;Overview&lt;/b&gt;
&lt;P&gt;
OpenFeint leaderboards are a powerful yet simple way of encouraging
social competition in your game. Leaderboards in OpenFeint have the
following behaviors:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;High Scores can either be ranked globally or filtered by a
player&amp;#8217;s friends.&lt;/li&gt; 
&lt;li&gt;High Scores can be sorted in ascending or descending
order.&lt;/li&gt; 
&lt;li&gt;Each player can have one ranked score per leaderboard.&lt;/li&gt; 
&lt;li&gt;A game can have an unlimited number of leaderboards.&lt;/li&gt; 
&lt;li&gt;Leaderboards can be named whatever you&amp;#8217;d like.&lt;/li&gt; 
&lt;li&gt;Leaderboards are not shared across games.&lt;/li&gt; 
&lt;li&gt;You can restrict leaderboards by your game&amp;#8217;s bundle
version.&lt;/li&gt; 
&lt;li&gt;Score submitted when offline will be sent to the server the
next time they are playing online&lt;/li&gt; 
&lt;li&gt;If displayText is passed when submitting that is shown in the
high score list instead of the score&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;b&gt;What is an aggregate leaderboard?&lt;/b&gt;&lt;p&gt;
OpenFeint supports aggregate leaderboards that allow you to
summarize any number of other leaderboards. These are useful when
you want to have a set of leaderboards all contribute to another
leaderboard.&lt;/p&gt; 
&lt;p&gt;&lt;b&gt;Quick Start&lt;/b&gt;&lt;P&gt; 
&lt;ol&gt; 
&lt;li&gt;Add a leaderboard to your application from the &lt;a href=
"https://api.openfeint.com/"&gt;Developer Portal&lt;/a&gt;.&lt;br&gt;&lt;/li&gt; 
&lt;li&gt;Note the Unique Identifier of your new leaderboard.&lt;br&gt;&lt;/li&gt; 
&lt;li&gt; 
&lt;p&gt;In your application, submit the player&amp;#8217;s score like
this&lt;/p&gt; 
&lt;p&gt;[OFHighScoreService setHighScore: scoreGoesHere
forLeaderboard:@"leaderboard_id_string" onSuccess:OFDelegate()
onFailure:OFDelegate()];&lt;/p&gt; 
&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;b&gt;Downloading leaderboard data for custom display&lt;/b&gt;&lt;P&gt; 
If you wish to download leaderboard data to display inside your
game please have a look at OFHighScoreService.h. The scores are
"paginated", meaning you can only request a certain number of
records at a time&lt;/p&gt; 
&lt;pre&gt; 
&lt;code&gt;[OFHighScoreService getPage:1 forLeaderboard:@"leaderboard_id_string" friendsOnly:NO silently:YES onSuccess:OFDelegate(self, @selector(_scoresDownloaded:)) onFailure:OFDelegate(self, @selector(_failedDownloadingScores))];
 
- (void)_scoresDownloaded:(OFPaginatedSeries*)page
{
    NSMutableArray* highscores = nil;
 
    if ([page count] &amp;gt; 0)
    {
        if ([[page objectAtIndex:0] isKindOfClass:[OFTableSectionDescription class]])
        {
            // NOTE: In the following line, we access "[page objectAtIndex:1]" to retrieve high scores from
            // the global leaderboard.  Using "[page objectAtIndex:0]" would retrieve scores just for the local player.
            // Older versions of OpenFeint did not break this out into 2 sections.
            highscores = [(OFTableSectionDescription*)[page objectAtIndex:1] page].objects;
        }
        else
        {
            highscores = page.objects;
        }
    }
 
    for (OFHighScore* score in highscores)
    {
        // ...
    }
}
- (BOOL)canReceiveCallbacksNow
{
    return YES;
}&lt;/code&gt; 
&lt;/pre&gt; 
&lt;p&gt;You'll end up with a 'highscores' NSMutableArray that contains a
number of OFHighScore objects which describe the user who submitted
the high score, their rank, and their score.&lt;/p&gt; 
&lt;p&gt;&lt;b&gt;Header Files&lt;/b&gt;&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;OFLeaderboardService.h&lt;/li&gt; 
&lt;li&gt;OFLeaderboard.h&lt;/li&gt; 
&lt;li&gt;OFHighScoreService.h&lt;/li&gt; 
&lt;li&gt;OFHighScore.h&lt;/li&gt; 
&lt;/ul&gt;&lt;/div&gt; </description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/28</link><pubDate>Fri, 15 Jan 2010 21:55:34 GMT</pubDate><guid isPermaLink="false">6fc8d6fe5344501f01f4d1e71fe0e684</guid></item><item><title>Integrating the OpenFeint SDK</title><description>  &lt;div&gt;&lt;p&gt;&lt;b&gt;OpenFeint is written in Objective-C++! This means that
&lt;em&gt;any&lt;/em&gt; and &lt;em&gt;all&lt;/em&gt; files which invoke OpenFeint methods
&lt;em&gt;must&lt;/em&gt; be compiled with Objective-C++. The simplest way to
compile with Objective-C++ is to change your file extension to
.mm&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Compiling and Linking the OpenFeint SDK&lt;/b&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Make sure you have the current version of OpenFeint. Unzip the
file.&lt;br&gt;&lt;/li&gt;
&lt;li&gt;If you have previously used OpenFeint, delete the existing
group reference from your project&lt;br&gt;&lt;/li&gt;
&lt;li&gt;Drag and drop the unzipped folder titled OpenFeint onto your
project in XCode. Make sure it&amp;#8217;s included as a group and not
a folder reference.&lt;br&gt;&lt;/li&gt;
&lt;li&gt;If your game is landscape only or portrait only, remove the
Resources/Landscape or Resources/Portrait folder from your project,
whichever you don't need. This is not a necessary step but helps
cut down the application size. You need to do this every time you
download a new OpenFeint project.&lt;br&gt;&lt;/li&gt;
&lt;li&gt;Right click on your project icon in the Groups &amp;amp; Files
pane. Select Get Info.&lt;br&gt;
&lt;ul&gt;

&lt;li&gt;Select the Build tab. Make sure you have Configuration set to
All Configurations&lt;/li&gt;
&lt;li&gt;Add to Other Linker Flags the value -ObjC&lt;/li&gt;
&lt;li&gt;Ensure 'Call C++ Default Ctors/Dtors in Objective-C' is checked
under the 'GCC 4.2 - Code Generation' section&lt;/li&gt;
&lt;li&gt;NOTE: Older Xcode projects may have to add this as a user
defined setting GCC_OBJC_CALL_CXX_CDTORS set to YES&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;&lt;/li&gt;
&lt;li&gt;Ensure the following frameworks are included in your link
step:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Foundation&lt;/li&gt;
&lt;li&gt;UIKit&lt;/li&gt;

&lt;li&gt;CoreGraphics&lt;/li&gt;
&lt;li&gt;QuartzCore&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;SystemConfiguration&lt;/li&gt;
&lt;li&gt;libsql3.0.dylib&lt;/li&gt;
&lt;li&gt;libz.1.2.3.dylib (unless using OF_EXCLUDE_ZLIB as described below)&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;&lt;/li&gt;
&lt;li&gt;You must have a prefix header. It must have the following line:
#import &amp;#8220;OpenFeintPrefix.pch&amp;#8221;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;Cool, it compiles now but I get a lot of build output spam
related to XIB files&lt;/b&gt;&lt;br&gt;

We are working to reduce and eliminate these notices. They annoy us
too! You can disable these notices from appearing if you find that
you are missing valid warnings and errors among the spam by
following these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open the Project Settings in Xcode and go to the Build
tab.&lt;br&gt;&lt;/li&gt;
&lt;li&gt;Look for the 'Show Notices' setting under the heading
'Interface Builder Compiler'&lt;br&gt;&lt;/li&gt;
&lt;li&gt;Make sure this setting is disabled / unchecked.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Note: If you are unable to find the 'Show Notices' setting you
may add a User-Defined Setting named 'IBC_NOTICES' and set it to
'NO'.&lt;/p&gt;
&lt;p&gt;
Changes from 2.4 to 2.4.5 are listed below:
&lt;ul&gt;
&lt;li&gt;High Score blobs use zlib for compression. &lt;/li&gt;
  &lt;ul&gt;
  &lt;li&gt;If you don't want to include the zlib framework then add OF_EXCLUDE_ZLIB to your preprocessor definitions. This will disable compression&lt;/li&gt;
  &lt;li&gt;If you want to use compression then include the libz.1.2.3.dylib framework&lt;/li&gt;
  &lt;/ul&gt;
&lt;li&gt;There is now a setHighScore function in OFHighScoreService that takes in a NSData* parameter for the blob&lt;/li&gt;
&lt;li&gt;There is a new setting called OpenFeintSettingDisableCloudStorageCompression. Set it to true to disable compression. This is global for all high score blobs.&lt;/li&gt;
&lt;li&gt;There is a new setting called OpenFeintSettingOutputCloudStorageCompressionRatio. When set to true it will print the compression ratio to the console whenever compressing a blob.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;For information about basic OpenFeint usage, settings, and
initialization continue to &lt;a href=
"http://www.openfeint.com/developers/support/index.php/kb/article/000022"&gt;OpenFeint
Basics&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;/div&gt;
</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/55</link><pubDate>Wed, 07 Apr 2010 21:40:15 GMT</pubDate><guid isPermaLink="false">b6756396344d8ef1010289f6b384498d</guid></item><item><title>Challenges</title><description>&lt;div&gt;&lt;b&gt;Overview&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;OpenFeint Challenges add replay value and depth to your game and
are also very viral. The high concept is that a user plays a game
session of some sort, game data is recorded and stored on the
OpenFeint servers, and a challenge is sent out to one or more of
the players friends. Challenges are received as push notifications
as well as in-game notifications. When a user receives a challenge
he may decide to accept it after which he plays a similar game
session trying to beat the challenge. There is much flexibility in
the implementation however and a developer may use challenges in
many different ways.&lt;/p&gt;
&lt;p&gt;All challenges may be split into two categories.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;One Shot Challenges&lt;/b&gt; allow the recipient a single try to
beat the challenge. This always results in a win, lose or tie. This
is a heads on competition in the sense that either player can win,
it fits casual gaming and can be used in many different
scenarios.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Multiple Attempt Challenges&lt;/b&gt; allow the recipient
unlimited attempts at beating the challenge. The challenge is not
considered completed until beaten so the only things recorded are
the number of attempts and whether or not it's completed. Once a
user completes a challenge he may challenge back to the person who
sent the challenge with the result of the session he just played.
This builds a dynamic where two players may keep sending each other
harder and harder challenges.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Challenges are only loosely defined by the API. Depending on the
implementation the experience and scope may vary greatly. Here are
some possible scenarios but this list is by no means
exhaustive.&lt;br&gt;&lt;/p&gt;
&lt;ol&gt;

&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;User selects to create a challenge through in game menus.&lt;/li&gt;
&lt;li&gt;User plays a short game session.&lt;/li&gt;
&lt;li&gt;User is presented with a list of friends he may send the
challenge to.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;User selects a friend to challenge from in game menus.&lt;/li&gt;
&lt;li&gt;User plays a short game session.&lt;/li&gt;
&lt;li&gt;The challenge is automatically sent to the recipient the user
picked before starting the game session.&lt;/li&gt;

&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;User plays a level through regular game play.&lt;/li&gt;
&lt;li&gt;User is given the option to send the level results as a
challenge through in game menu.&lt;/li&gt;
&lt;li&gt;User is presented with an OpenFeint screen where he may select
friends to send the challenge to.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The nature of a challenge is also up to the developer. A
challenge may contain any data so it could be used for something as
complicated as recording the path of a car in a racing game and
then allowing another user to race that car in a challenge as a
ghost race. It can also be a simple as trying to beat a specific
score in a specific level.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Resources&lt;/b&gt;&lt;br&gt;

To get the id of a resource access it's resourceId property.
Whenever OpenFeint expects a challengeToUserId parameter that means
the resourceId of a OFChallengeToUser etc.&lt;br&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li style="list-style: none"&gt;&lt;br&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;OFChallengeDefinition&lt;/b&gt; defines a type of challenge.
Title, icon, etc. These are created in the developer dash board and
referenced by a unique ID.&lt;/li&gt;
&lt;li style="list-style: none"&gt;&lt;br&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;OFChallenge&lt;/b&gt; is a challenge created by a user. It
contains the challenger and all the information about the actual
challenge but it does not contain any recipients. Think of it as a
free floating challenge that's not aimed at anyone in particular.
Each challenge may be the "parent" of many OFChallengeToUsers who
contain the recipients.&lt;/li&gt;
&lt;li style="list-style: none"&gt;&lt;br&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;OFChallengeToUser&lt;/b&gt; is a challenge sent to a specific
user. On challenge may map to many OFChallengeToUsers. It contains
the challenge, the recipient and the status of the challenge
(completed, result, etc).&lt;/li&gt;

&lt;li style="list-style: none"&gt;&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Quick Start&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;It is recommended to set up push notifications to get the most
out of challenges. Instructions can be found at &lt;a href=
"http://help.openfeint.com/faqs/api-features/pushnotifications"&gt;http://help.openfeint.com/faqs/api-features/pushnotifications&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This describes the implementation of the first scenario listed
above which is likely the most common one. The basic functionality
is the same for all scenarios and it should be easy to modify this
example to fit your needs.&lt;/p&gt;
&lt;p&gt;Create your Challenge Definitions on the OpenFeint developer
dashboard. The icon should be of size 44x44.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Creating a challenge&lt;/b&gt;&lt;br&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;To create a challenge the user must have approved OpenFeint.
You may find this out by calling [OpenFeint hasUserApprovedFeint].
If the user has not approved OpenFeint , call [OpenFeint
presentUserFeintApprovalModal] and only proceed to the next step if
the approved delegate gets called.&lt;/li&gt;

&lt;li&gt;To send out a challenge the user needs to be online. Find this
out by calling [OpenFeint isOnline]. If the user is not online you
may deny him creating the challenge or still allow him to create it
after notifying him that it may not be sent.&lt;/li&gt;
&lt;li&gt;To send out a challenge the user needs friends to send it to.
Find this out by calling [OFFriendsService
isLocalUserFollowingAnyone]. If the user is not following anyone
it's recommended you let him find friends in the dashboard. You may
launch the dashboard with the find friends page by calling
[OpenFeint launchDashboardWithFindFriendsPage]. You may also let
the user start the challenge after first notifying him that he will
not be able to send it to anyone.&lt;/li&gt;
&lt;li&gt;Have your app delegate (or some other appropriate object)
conform to OFChallengeDelegate and pass it in when initializing
OpenFeint.&lt;/li&gt;
&lt;li&gt;In your in-game menu, add an option for the user to create a
challenge. Optionally you may use OFChallengeDefinitionService to
download challenge titles and icons to use in your menu but this is
not a requirement.&lt;/li&gt;
&lt;li&gt;Allow the user to play a game session while recording the
necessary data, The data recorded may be xml, binary data or
anything else you'd like. It will be stored on the OpenFeint
servers as a binary chunk.&lt;/li&gt;
&lt;li&gt;Call [OFChallengeService displaySendChallengeModal]. This will
allow the user to pick friends and send out the challenge.&lt;/li&gt;
&lt;li&gt;If you wish to give the user an option to create a stronger
challenge for multi attempt challenges instead of sending out the
one he just created, implement userRestartedCreateChallenge in your
challenge delegate.&lt;/li&gt;
&lt;li&gt;Implement sendChallengeScreenClosed in your challenge delegate
and return the user to your challenge selection menu or some other
appropriate screen in it.&lt;br&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;b&gt;Playing a challenge&lt;/b&gt;&lt;br&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Implement userLaunchedChallenge in your challenge delegate.
When this gets called you need to launch the appropriate game type
based on the challenge definition in the passed in
OFChallengeToUser (accessed through the contained challenge) and
the challenge data. You must retain the OFChallengeToUser and
challenge data somewhere so it may be serialized to disk if the
user turns of the game. For multi attempt challenges the user may
also decide to retry the challenge in which case you must have this
handy.&lt;/li&gt;
&lt;li&gt;If the user closes the game during the challenge serialize the
challenge data along with any other game data. The
OFChallengeToUser may be serialized by calling [OFChallengeService
writeChallengeToUserToFile].&lt;/li&gt;
&lt;li&gt;Implement userRestartedChallenge in your challenge delegate.
For one shot challenges you may leave it empty. For multi attempt
challenges you should start the game session over using the
OFChallengeToUser and challenge data you received when the
challenge was first started.&lt;/li&gt;
&lt;li&gt;Once the game session is over call [OFChallengeService
submitChallengeResult]. This should always be called, regardless of
the result and what kind of challenge it is.&lt;/li&gt;
&lt;li&gt;Call [OFChallengeService displayChallengeCompletedModal]. This
will show the result of the challenge and in the case of multi
attempt challenges allow the user to re-challenge (if the challenge
was beaten).&lt;/li&gt;
&lt;li&gt;Implement completedChallengeScreenClosed in your challenge
delegate. Either return the user to the main menu or some other
appropriate screen.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;Header Files&lt;/b&gt;&lt;br&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenFeint.h&lt;/li&gt;
&lt;li style="list-style: none"&gt;&lt;br&gt;&lt;/li&gt;
&lt;li&gt;OpenFeint+Dashboard.h&lt;/li&gt;
&lt;li style="list-style: none"&gt;&lt;br&gt;&lt;/li&gt;
&lt;li&gt;OFChallengeService.h&lt;/li&gt;
&lt;li style="list-style: none"&gt;&lt;br&gt;&lt;/li&gt;
&lt;li&gt;OFChallengeDefinitionService.h&lt;/li&gt;
&lt;li style="list-style: none"&gt;&lt;br&gt;&lt;/li&gt;
&lt;li&gt;OFChallenge.h&lt;/li&gt;
&lt;li style="list-style: none"&gt;&lt;br&gt;&lt;/li&gt;
&lt;li&gt;OFChallengeDefinition.h&lt;/li&gt;

&lt;li style="list-style: none"&gt;&lt;br&gt;&lt;/li&gt;
&lt;li&gt;OFChallengeToUser.h&lt;/li&gt;
&lt;li style="list-style: none"&gt;&lt;br&gt;&lt;/li&gt;
&lt;li&gt;OFChallengeDelegate.h&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/27</link><pubDate>Fri, 06 Nov 2009 00:03:53 GMT</pubDate><guid isPermaLink="false">13d01dc2ab13c0d18ff03bc76055d3b2</guid></item><item><title>Achievements</title><description>&lt;div&gt;&lt;p&gt;&lt;b&gt;Overview&lt;/b&gt;&lt;br&gt;

OpenFeint Achievements allow you to provide incentive to your
players for completing alternative goals. For example, in a Hockey
game, you might have an achievement for making a hat trick or
winning a fight without taking any hits. When designing
achievements for your title, think about what alternative
objectives a player could have that require skill or effort.
Achievements in OpenFeint have the following features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An achievement is initially locked but can be unlocked one time
by each player.&lt;/li&gt;
&lt;li&gt;Each achievement awards a player with a set number of Feint
points.&lt;/li&gt;
&lt;li&gt;Each player has a Feint Score. It&amp;#8217;s the sum of all her
unlocked achievements.&lt;/li&gt;
&lt;li&gt;A player&amp;#8217;s Feint score is prominently displayed on her
profile.&lt;/li&gt;
&lt;li&gt;You can optionally customize the icon, name, description and
score for every achievement in your game. We also provide a default
icon for your achievements. Customized icons should be of size
50 x 50 pixels.&lt;/li&gt;
&lt;li&gt;An achievement can be marked as &amp;#8220;secret.&amp;#8221; A secret
achievement&amp;#8217;s description and icon will be hidden from a
player until he unlocks it.&lt;/li&gt;

&lt;li&gt;Each title can have up to 100 achievements worth up to 1000
Feint score.&lt;/li&gt;
&lt;li&gt;Achievements can be unlocked even when a player is
offline.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Quick Start&lt;/b&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create an achievement in the &lt;a href=
"https://api.openfeint.com/"&gt;Developer Dashboard&lt;/a&gt;.&lt;br&gt;&lt;/li&gt;
&lt;li&gt;Note its Unique Identifier.&lt;br&gt;&lt;/li&gt;
&lt;li&gt;In your application, unlock the achievement using
[OFAchievementService unlockAchievement:];&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Note: that you may call this unlock function more than once.
It will only have an affect the first time it is unlocked for a
player.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Header Files&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OFAchievementService.h&lt;/li&gt;
&lt;li&gt;OFAchievement.h&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;p&gt;
&lt;b&gt;Achievements Policy&lt;/b&gt;
&lt;p&gt;Developers cannot create applications designed solely for the purpose of generating achievement points. OpenFeint reserves the right to disable achievements for applications that fall under this category.  For additional information or clarification please contact developer support.&lt;/p&gt;</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/26</link><pubDate>Wed, 25 Aug 2010 20:59:37 GMT</pubDate><guid isPermaLink="false">4a4c06a791e8b79b834cc20028774c51</guid></item><item><title>OpenFeint Art Assets and Branding Guidelines</title><description>  &lt;div&gt;&lt;b&gt;I. Introduction&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;As the premier social network for iPhone games, it&amp;rsquo;s
important that players have a consistent experience using OpenFeint
across games. This document lays out our preferred presentation of
how OpenFeint is made accessible and presented to players within
games. We&amp;rsquo;ve thought long and hard about these guidelines and
know you&amp;rsquo;ll get the most out of OpenFeint by following
them.&lt;/p&gt;
&lt;p&gt;We have provided a complete asset pack in the appendix of this
document with our logos for you to use. Be sure to download it and
take a look.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;II. Attribution&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;This is pretty simple, your app must conspicuously display a
graphic that indicates you have services provided by OpenFeint.
This can be a splash screen at the launch of the app, a small
notification, or our pre-made &amp;ldquo;OpenFeint Enabled&amp;rdquo;
graphic.&lt;/p&gt;

&lt;p&gt;
&lt;p&gt;&lt;b&gt;III. Branding&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;There are a few places which we need you to display the
inclusion of OpenFeint in your game. Properly displaying our brand
will help ensure that your customers are exposed to the social
opportunities that await them.&lt;/p&gt;
&lt;p&gt;App Store Branding:&lt;br&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The logo may be displayed as a watermark on the application
icon. We highly encourage this!&lt;/li&gt;
&lt;li style="list-style: none"&gt;&lt;br&gt;&lt;/li&gt;
&lt;li&gt;The following text must be displayed in your app description on
the iTunes app store, &amp;ldquo;[App Name] is OpenFeint
Enabled.&amp;rdquo; Oh, and please be sure to change [App Name] to the
name of your app.&lt;/li&gt;

&lt;/ul&gt;
&lt;p&gt;In-App Branding:&lt;br&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The logo may be displayed on the application
&amp;ldquo;default&amp;rdquo; screen.&lt;/li&gt;
&lt;li style="list-style: none"&gt;&lt;br&gt;&lt;/li&gt;
&lt;li&gt;If your game has a main menu, the OpenFeint logo must be
displayed and look like a button. The OpenFeint dashboard must be
accessible by touching it.&lt;/li&gt;
&lt;li style="list-style: none"&gt;&lt;br&gt;&lt;/li&gt;
&lt;li&gt;While someone is using your app, OpenFeint must be accessible
at any time, even in the middle of a game session, this may be from
a pause screen.&lt;/li&gt;
&lt;li style="list-style: none"&gt;&lt;br&gt;&lt;/li&gt;
&lt;li&gt;If your game has a pause screen, the OpenFeint leaf button must
be visible on it.&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;IV. Don&amp;rsquo;ts&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve provided a library of acceptable OpenFeint logos,
which can be found in the Appendix. You may not alter the colors of
these graphics in any way. Any graphics which are provided on a
transparent background may be placed on a background of your
choosing, although the logo must be clearly visible (i.e. do not
use the white logo on a white background).&lt;/p&gt;
&lt;p&gt;&lt;b&gt;V. Appendix&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;We have provided pre-made image files for your use, which you
can find &lt;a href=
"http://www.openfeint.com/developers/support/images/DeveloperAssets.zip"&gt;here.&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/32</link><pubDate>Thu, 19 Aug 2010 20:48:01 GMT</pubDate><guid isPermaLink="false">8d884a918c78fd4873c09828ba3f618a</guid></item><item><title>iPurchase Setup</title><description>&lt;h1&gt;Overview&lt;/h1&gt;
OpenFeint&amp;rsquo;s iPurchase program allows you as a developer to
participate in our powerful promotion and discovery programs.
Information provided within the iPurchase dashboard is featured
prominently within the OpenFeint client and the new OpenFeint.com
player&amp;rsquo;s site. If you don&amp;rsquo;t set up your iPurchase
page, you won&amp;rsquo;t be able to take advantage off all the
cross-promotional opportunities.&lt;br&gt;
&lt;br&gt;
&lt;h1&gt;Where does this information
show up?&lt;/h1&gt;
At OpenFeint we are constantly looking for ways to increase game
awareness and discovery. The details you provide in iPurchase currently
show up in the following places. Any new additions will be added to
this list.&lt;br&gt;
&lt;br&gt;
&lt;h2&gt;The OpenFeint Client&lt;/h2&gt;
&lt;span style="font-weight: bold;"&gt;OpenFeint
Client Dashboard&lt;/span&gt; &amp;ndash;
Players who click on the OpenFeint icon within the OpenFeint 2.4 client
are greeted with a number of discovery options.&lt;br&gt;
&lt;br&gt;
&lt;table style="text-align: left; width: 100%;"
 border="0" cellpadding="2" cellspacing="2"&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;
      &lt;span style="font-weight: bold;"&gt;Featured
Banner (Landscape
and Portrait Modes)&lt;/span&gt;
&amp;ndash; Displayed at the top of the Game Page and Discovery Page. &lt;br&gt;
      &lt;span style="font-weight: bold;"&gt;Featured
Preview
(Landscape and Portrait Modes)&lt;/span&gt;
&amp;ndash; Shown if your game is contained within one of the featured
lists for the player.
      &lt;ul&gt;
      &lt;/ul&gt;
      &lt;/td&gt;
      &lt;td&gt;&lt;img
 src="http://www.openfeint.com/developers/support/images/OpenFeint_24_Discovery.png"
 alt=""&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;br&gt;
&lt;table style="text-align: left; width: 100%;"
 border="0" cellpadding="2" cellspacing="2"&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;span
 style="font-weight: bold;"&gt;Friends Lists&lt;/span&gt;
&amp;ndash; If a friend of a player owns your game, your icon will
show up in the list of Games Played and link directly to your iPurchase
page.&lt;/td&gt;
      &lt;td&gt;&lt;img
 src="http://www.openfeint.com/developers/support/images/Friends_List_24.png"
 alt=""&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;br&gt;
&lt;table style="text-align: left; width: 100%;"
 border="0" cellpadding="2" cellspacing="2"&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;span
 style="font-weight: bold;"&gt;iPurchase Page&lt;/span&gt;
&amp;ndash; Your opportunity to speak directly to the potential player.
Summarize your game, show the player screenshots, and detailed
information on why they should download. This page contains a direct
link to the App Store and allows the player to purchase right from
their device.&amp;nbsp;&lt;/td&gt;
      &lt;td&gt;&lt;img
 src="http://www.openfeint.com/developers/support/images/iPurchase_24.png"
 alt=""&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;br&gt;
&lt;h2&gt;&lt;span
 style="font-weight: bold;"&gt;OpenFeint.com&lt;/span&gt;&amp;nbsp;&lt;/h2&gt;
We&amp;rsquo;ve recently relaunched OpenFeint.com with new
features that highlight games in our system.&amp;nbsp; Adding your
game&amp;rsquo;s information to the iPurchase page makes it eligible
for display within the OpenFeint spotlight, Feint 5, and Game
Information pages.&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;h1&gt;OpenFeint iPurchase Setup Page
Help&lt;/h1&gt;
The OpenFeint iPurchase setup page within the developer dashboard is
your gateway to manage the information displayed to players. The
iPurchase setup is located within the Basic Features section of your
Application Home. All of the information can be updated at any time,
just make sure you click on submit after making changes.&lt;br&gt;
&lt;br&gt;
&lt;table style="text-align: left; width: 100%;"
 border="0" cellpadding="2" cellspacing="2"&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;span
 style="font-weight: bold;"&gt;Icon&lt;/span&gt;
&amp;ndash; 100 x 100 icon with a maximum file size of 150kb.
It&amp;rsquo;s recommended that you use the same icon that you are
using in the App Store. The icon is used when displaying lists of
friend&amp;rsquo;s games, within the Discovery pages, and in your
iPurchase page.&lt;br&gt;
      &lt;br&gt;
      &lt;span style="font-weight: bold;"&gt;USD
Price&lt;/span&gt; &amp;ndash; Entered as
0.99 for a 99 cent game (no dollar sign necessary).&amp;nbsp; For free
apps, just put in FREE and we&amp;rsquo;ll take care of the rest.
Changing your price for a week? No problem, just update this field.
Information stored here will be displayed within your game&amp;rsquo;s
iPurchase page and on OpenFeint.com.&lt;/td&gt;
      &lt;td&gt;&lt;img
 src="http://www.openfeint.com/developers/support/images/iPurchase_24.png"
 alt=""&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;iTunes
ID&lt;/span&gt; &amp;ndash; The iTunes ID
for your game. Don&amp;rsquo;t have one yet because your app
isn&amp;rsquo;t approved, don&amp;rsquo;t worry, just enter 1 and
update it once you&amp;rsquo;ve received Apple&amp;rsquo;s approval.
It&amp;rsquo;s important that this information is correct as we use it
to provide players with game information on OpenFeint.com&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Category&lt;/span&gt;
&amp;ndash; This should match your category within the App Store and
can be used by OpenFeint to better target which games are displayed to
players.&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Release
Date &lt;/span&gt;&amp;ndash; Enter as a
date string Month, Day Year.&amp;nbsp; Example: December 20th,
2009.&amp;nbsp; &lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Current
Version Number &lt;/span&gt;&amp;ndash;
The version number of the application that is currently (or will be)
live in the App Store. Remember to update this field when releasing new
versions!&lt;br&gt;
&lt;br&gt;
&lt;table style="text-align: left; width: 100%;"
 border="0" cellpadding="2" cellspacing="2"&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;span
 style="font-weight: bold;"&gt;Summary or Tagline&lt;/span&gt;
&amp;ndash; A short 128-character tagline to grab a player&amp;rsquo;s
attention. Used within the iPurchase page of your game and on
OpenFeint.com. We suggest 2 sentences max.&lt;/td&gt;
      &lt;td&gt;&lt;img
 src="http://www.openfeint.com/developers/support/images/iPurchase_Summary_24.png"
 alt=""&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;br&gt;
&lt;table style="text-align: left; width: 100%;"
 border="0" cellpadding="2" cellspacing="2"&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;span
 style="font-weight: bold;"&gt;Extended Description&lt;/span&gt;
&amp;ndash; Your chance to really shine. Provide players with a
detailed description of your game after scrolling past the Summary and
Screenshots. This field supports HTML formatting, but note that links
are disabled.&lt;/td&gt;
      &lt;td&gt;&lt;img
 src="http://www.openfeint.com/developers/support/images/iPurchase_Extended_Description_24.png"
 alt=""&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;br&gt;
&lt;table style="text-align: left; width: 100%;"
 border="0" cellpadding="2" cellspacing="2"&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;span
 style="font-weight: bold;"&gt;Primary Screenshot &lt;/span&gt;&amp;ndash;
A 320 x 480 screenshot of your game. For games in landscape mode, it
still needs to be a 320 x 480 image, with the &amp;lsquo;top&amp;rsquo;
of your image facing right as the image will be rotated
counter-clockwise when displayed in landscape mode.&lt;/td&gt;
      &lt;td&gt;&lt;img
 src="http://www.openfeint.com/developers/support/images/iPurchase_Screenshot_Landscape_24.jpg"
 alt=""&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;br&gt;
&lt;table style="text-align: left; width: 100%;"
 border="0" cellpadding="2" cellspacing="2"&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;span
 style="font-weight: bold;"&gt;Featured Banner Landscape
(OpenFeint 2.4)&lt;/span&gt; &amp;ndash;
464 x 42 image. The banner we&amp;rsquo;ll use for your game page and
potentially at the very top of the OpenFeint client Discovery page. &lt;br&gt;
      &lt;br&gt;
      &lt;span style="font-weight: bold;"&gt;Featured
Preview Landscape (OpenFeint 2.4)&lt;/span&gt;
&amp;ndash; 150 x 49 image. We&amp;rsquo;ll use this image if your game
is contained within one of the lists for the player on the Discovery
page. Also, if another developer adds you to their featured app
section, we&amp;rsquo;ll use this asset.&lt;/td&gt;
      &lt;td&gt;&lt;img
 src="http://www.openfeint.com/developers/support/images/iPurchase_Discovery_Preview_24.png"
 alt=""&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Featured
Banner Portrait (OpenFeint 2.4)&lt;/span&gt;
&amp;ndash; 304 x 42 image. This is the image we&amp;rsquo;ll pull for
your game for the top of the Discovery page if the user is in Portrait
mode. &lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Featured
Preview Portrait (OpenFeint 2.4)&lt;/span&gt;
&amp;ndash; 104 x 49 image. Same as above but for players in Portrait
mode.&lt;br&gt;
&lt;br&gt;
&lt;h1&gt;Conclusion&lt;/h1&gt;
We hope that this has given you a solid understanding of the iPurchase
setup and why you should keep it updated for all of your OpenFeint
enabled games. If you have any additional questions, please contact us
and we&amp;rsquo;ll be happy to help.&lt;br&gt;
</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/46</link><pubDate>Tue, 26 Jan 2010 23:23:44 GMT</pubDate><guid isPermaLink="false">27c31be984efafbe7228b644b4e6a411</guid></item><item><title>OpenFeint API Organization</title><description>  &lt;div&gt;&lt;b&gt;Resources and Services&lt;/b&gt;

&lt;p&gt;OpenFeint&amp;#8217;s APIs are organized by resource. A resource is
a single object that is interesting to a user or developer.
Examples of resources in the OpenFeint SDK are achievement, high
score, leaderboard, and user.&lt;/p&gt;
&lt;p&gt;Almost every resource has a corresponding service that allows
you to create, read, and update that resource or a list of that
resource.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Resource Naming Conventions&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;All Objective-C definitions related to a resource are named
after it. You can use this simple pattern for finding header files
and class names for a resource:&lt;/p&gt;
&lt;p&gt;OFResourceName and OFResourceNameService&lt;/p&gt;
&lt;p&gt;Simply Replace ResourceName with the name of the resource
you&amp;#8217;re looking for.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Resource Example: Achievement&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Using the pattern described above, it&amp;#8217;s easy to intuit the
header files and interface names for the Achievement resource:&lt;br&gt;

Resource interface name: OFAchievement&lt;br&gt;
Resource interface header file: OFAchievement.h&lt;br&gt;
Resource service interface name: OFAchievementService&lt;br&gt;
Resource service interfface header file: OFAchievementService.h&lt;/p&gt;&lt;/div&gt;
</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/41</link><pubDate>Fri, 06 Nov 2009 00:38:20 GMT</pubDate><guid isPermaLink="false">59d6b1e9ce5e584dd31b532ed469a7d0</guid></item><item><title>OpenFeint Unity-iPhone Support</title><description>Note, for developers experiencing issues with Unity and iOS4, please refer to this forum thread:
&lt;br&gt;
&lt;a href="http://openfeint.com/developers/forum/showthread.php?1284-unable-to-compile-with-OS4"&gt;OpenFeint Developer Support Forum - Unity &amp; iOS4&lt;/a&gt;
&lt;P&gt;
OpenFeint Unity support&lt;br&gt;
version 2.0&lt;br&gt;
build 1.15.2010&lt;br&gt;
&lt;br&gt;
Release Notes&lt;br&gt;
Copyright (c) 2009-2010 Aurora Feint Inc. All Rights Reserved.&lt;br&gt;
&lt;br&gt;
What's new? 1.15.2010 version 2.0 - Completely rewritten Unity plugin
for much easier integration and more features&lt;br&gt;
&lt;br&gt;
This document explains how to integrate the OpenFeint-UnityiPhone
package.&lt;br&gt;
&lt;br&gt;
Below is a step by step explanation for the integration process.&lt;br&gt;
&lt;br&gt;
1. If this is a new Unity project, make sure to set up your Player
settings first (Edit-&amp;gt;Project Settings-&amp;gt;Player). This is
required for the automation process to work properly.&lt;br&gt;
2. In Unity, go to "Assets-&amp;gt;Import Package..." and import the
attached Unity package.&lt;br&gt;
3. Note the new "OpenFeint" menu item in the menu bar. Click on this
and go to "Set Application Initialization Settings...". In this dialog,
set up all of the OpenFeint initialization settings and click Apply.
This step only needs to be done once for each application. It is
recommended that you turn "Allow Notifications" on.&lt;br&gt;
4. If desired, copy your "openfeint_offline_config.xml" into the
"Editor/OpenFeint/Offline Config File Goes Here" folder. You will need
to do this every time you make a change to achievements or leaderboards
through the developer dashboard.&lt;br&gt;
6. For your first build with OF support (and anytime you need to do
anything other than an "Append" build in Unity), make sure that the
Xcode project isn't open as it causes problems. We're looking for a
solution for this.&lt;br&gt;
7. Go to Unity "Build Settings" (File-&amp;gt;Build Settings...) and
"Build" the project (not "Build &amp;amp; Run" for the first build;
subsequent builds of the project can use Build &amp;amp; Run though).&lt;br&gt;
8. Follow the instructions in the OpenFeint readme.txt file. These are
steps for adding OpenFeint to your xcode project. You only need to do
this once.&lt;br&gt;
9. Hit "Build &amp;amp; Run". Your application will launch on your
iPhone and the OpenFeint welcome screen will appear on your first run.&lt;br&gt;
10. Use the handy methods, events, and properties located in
"Plugins/OpenFeint.cs" to hook up achievements, leaderboards etc.&lt;br&gt;
&lt;br&gt;
NOTE: If you want to build for an iPhone OS prior to 3.0 it is
important that you follow the instructions in the OpenFeint readme.txt
file for weak linking your libraries.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Changelog&lt;br&gt;
&lt;br&gt;
--- 10.28.2009 - version 1.0 Improved documentation and official release&lt;br&gt;
&lt;br&gt;
--- 9.14.2009 - version 0.9 (pre-release) Added support for achievement
delegate events&lt;br&gt;
&lt;br&gt;
--- 9.04.2009 - version 0.8 (pre-release) Initial support for showing
the dashboard, submitting high scores, and unlocking achievements&lt;br&gt;
&lt;br&gt;
The files&lt;br&gt;
&lt;br&gt;
OpenFeint-Unity-README.txt&lt;br&gt;
&lt;br&gt;
OpenFeint-UnityiPhone.unityPackage
</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/25</link><pubDate>Thu, 08 Jul 2010 01:23:31 GMT</pubDate><guid isPermaLink="false">02563eb1c88127244d1210143da6cc3e</guid></item><item><title>Social Notifications</title><description>&lt;div&gt;&lt;b&gt;Overview&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;OpenFeint social notifications allow you to announce to a
player&amp;#8217;s friends what he is doing in your game. Social
Notifications have the following features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sent to a player&amp;#8217;s Facebook and/or Twitter Stream.&lt;/li&gt;
&lt;li&gt;Must be no greater than 125 characters in length.&lt;/li&gt;
&lt;li&gt;Are always prefixed with I or My Name.&lt;/li&gt;
&lt;li&gt;Have an optional pre-uploaded image associated with it&lt;/li&gt;
&lt;li&gt;Are automatically sent out when a player unlocks an
achievement.&lt;/li&gt;
&lt;li&gt;Always request permission from the player before sending.&lt;/li&gt;

&lt;li&gt;Are referred to as &amp;#8220;Published Game Events&amp;#8221; in the
OpenFeint Dashboard screens.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Quick Start&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Simply send a notification from your application through either of the following APIs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[OFSocialNotificationApi sendWithText:@"just gained a level", nil];  // high level api
&lt;li&gt;[OFSocialNotificationService sendWithText:@"just gained a level"];  // low level api
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Header Files&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OFSocialNotificationApi.h (high level api, preferred)&lt;/li&gt;
&lt;li&gt;OFSocialNotificationService.h (low level api)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;These notifications keep popping up during gameplay and
interrupting the player! What gives?&lt;/b&gt;&lt;br&gt;

Since we automatically prompt the user to post a notification after
an achievement is unlocked this is often the case. We are actively
working on a solution to this issue (which will probably end up
similar to the OFNotificationDelegate which handles the small
pop-up notifications).&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Sending a Text and Image Notification&lt;/b&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Upload an image to the Facebook Notification Images section the
Developer Portal.&lt;br&gt;&lt;/li&gt;
&lt;li&gt;In your application, send the notification with
[OFSocialNotificationService sendWithText:@"shared the space ship
with the world" imageNamed:@"ImageIdentifierName"];&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;What exactly will a notification say?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;All social notifications are prefixed with a proper noun
referring to the player. Here are some example notification texts
and their final appearance on social networks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Submitted Text: just gained a level&lt;/li&gt;

&lt;li&gt;On Facebook: Jason just gained a level&lt;/li&gt;
&lt;li&gt;On Twitter: I Just gained a level&lt;/li&gt;
&lt;li&gt;Submitted Text: wandered into an open forest.&lt;/li&gt;
&lt;li&gt;On Facebook: Jason wandered into an open forest.&lt;/li&gt;
&lt;li&gt;On Twitter: I wandered into an open forest.&lt;/li&gt;
&lt;li&gt;Submitted Text: saved the forest ten times today.&lt;/li&gt;
&lt;li&gt;On Facebook: Jason saved the forest ten times today.&lt;/li&gt;
&lt;li&gt;On Twitter: I saved the forest ten times today.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Social Notifications and Privacy&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Depending upon the social network, OpenFeint uses a one or
two-stage authentication process before sending a social
notification on behalf of a player.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Requests extended permissions if necessary. This may require a
user enter their social network username and password
again.&lt;br&gt;&lt;/li&gt;
&lt;li&gt;Display the notification to the user and ask for permission to
publish the notification. Users may opt to remember their
selection. By default, remember is OFF.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;App Approval Required For Testing&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Currently OpenFeint requires that an application has requested
approval and been approved before posting to social networks. See
the big green "Prepare for Submission" button on the OF dev dashboard.
We do this so that you don't accidentally broadcast that you are adding
OpenFeint to your game before you're ready.&lt;/p&gt;&lt;/div&gt;
</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/34</link><pubDate>Thu, 02 Sep 2010 22:47:06 GMT</pubDate><guid isPermaLink="false">49db8a4404d571668fbe3ae5bee3a70c</guid></item><item><title>Using OpenFeint to upsell from Free to Paid</title><description>&lt;div&gt; &lt;span
 style="font-family: arial,sans-serif;"&gt;
&lt;div&gt; &lt;b&gt;&lt;font
 size="4"&gt;Overview&lt;/font&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt; The following document shows
how to improve conversion from free to paid version of games, by
integrating OpenFeint in both the free and paid version of the app. It
discusses how to limit the free version to a subset of the full
leaderboards, achievements and challenges in the paid version. The same
technique can be used to enable specific social gaming features only
for users that have bought In-App Purchase packs. &lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;h2&gt; &lt;font
 size="4"&gt;Taking the Plunge : Registering your Game in
the Dev Dashboard&lt;/font&gt; &lt;/h2&gt;
&lt;br&gt;
&lt;div&gt;
&lt;div&gt; The OpenFeint development
dashboard is where you register your game and obtain a unique product
key and secret key to initialize the OpenFeint libraries. You should
only register one game with OpenFeint, even though you will have two
versions of it: one free and one paid. Using the same OF registration
for both the free and paid version of your game means that users will
be able to start playing the free version, earning achievements,
submitting high scores, while still having a clear migration path to
the paid version. &lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id="ejrr"
 style="text-align: left;"&gt; &lt;img
 src="http://www.openfeint.com/developers/support/images/free_upsell/dc4x73pc_3crm888fc_b.png"
 style="width: 354px; height: 449px;"&gt; &lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt; By using the same product
and secret keys from the dev dashboard in both versions, the paid-only
leaderboards and achievements will be listed in the free version, and
will help show there is added value in the paid version. Paid and free
version owners will be able to chat and engage in forums with each
other, where the paid version owners can help promote your game to
those using the free version. Free and paid version owners will also be
able to compare scores and achievements, highlighting the fact that
paid owners will have scores submitted to leaderboards and earned
achievements the free version owners can't have without upgrading. &lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt; Another benefit of using a
single registered OpenFeint game for both the free and paid version is
the in-dashboard promotion of games available with OpenFeint. By
filling the iPurchase info for their paid game in the dev dashboard,
both free players and paid players will be helping promote the game to
their friends through the developer dashboard and taking prospective
buyers to the paid version of the game in iTunes. The developer should
also create Featured banners and icons for the new in-dashboard
promotional tools in OpenFeint 2.4. These banners should target free
version players, enticing them to upgrade. &lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id="phfd"
 style="text-align: left;"&gt; &lt;img
 src="http://www.openfeint.com/developers/support/images/free_upsell/dc4x73pc_4f5whrpcn_b.png"
 style="width: 625px; height: 664px;"&gt; &lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt; &lt;font
 size="4"&gt;The Key is Careful Design&lt;/font&gt;
&lt;/h2&gt;
&lt;br&gt;
&lt;div&gt; During design of your game,
you should carefully decide which features of your game are going to be
unique to the full paid version, and which features will be made
available in the free version.&amp;nbsp; &lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt; For example, you could
release the paid version with 15 to 20 or more levels, and restrict
your free version to between 5 and 8 levels. Adjust this depending on
how many levels your paid game has. A puzzle game with a hundred levels
in the paid version could release a free version with 20 levels.
Splitting your levels like this means that when creating leaderboards
in the dev dashboard, those leaderboards that are only available in the
paid version should indicate so in their titles. If you are using
In-App Purchase in your game, you should also indicate which
leaderboards are only available to players that have bought your In-App
Purchase packs. &lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt; You should also think of how
you are going to distribute achievements throughout your game. The name
and description for the achievement should explicitly indicate if they
are available in the paid version only. &lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; Careful naming of
leaderboards and achievements to indicate which are available only in
the paid version will help drive sales among free users. When
navigating the OpenFeint dashboard for your game, the paid-only
leaderboards and achievements will be listed in the free version, and
will help show there is added value in the paid version. &lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt; An example of how this is
handled is the game Gravity Sling by Riptide Games. The free game comes
with 19 levels, and has several In-App Purchase packs with 30 extra
levels each. The free version shows leaderboards and achievements for
each level in the In-App Purchase Packs in the OpenFeint Dashboard.
This shows players how much value there is in the In-App Purchase
packs, and is a great upsell incentive. &lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id="p._4"
 style="text-align: left;"&gt; &lt;img
 src="http://www.openfeint.com/developers/support/images/free_upsell/dc4x73pc_5rxzd69hm_b.jpg"
 style="width: 480px; height: 320px;"&gt; &lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: arial,sans-serif;"&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;h2&gt; Coding Best Practices for
Easy Free to Paid Upgrades
&lt;/h2&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="Verdana, sans-serif"&gt;&lt;font
 class="Apple-style-span" face="arial, sans-serif"&gt;After
you have designed your game and how you are going to divide levels,
leaderboards, achievements, etc. between your free and paid versions,
then comes the job of coding your game. Here are some practices for
organizing your code so that you can limit the free version to a subset
of all of your game's features.&lt;/font&gt;&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;h3&gt; Use Conditional Compilation
in Free to Paid Games
&lt;/h3&gt;
&lt;div&gt; With conditional
compilation, you as developer set up portions of your code that only
run if a flag is passed to the compiler. If the flag is not set, that
segment of code will not be compiled into your game. You can use this
to limit game progression in the free version, by locking out levels,
leaderboards and achievements.
&lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt; One way to set up
conditional compilation in your XCode project, is to create build
settings for each version of your app. Open your project in XCode, then
either right-click on the project icon (the blue icon at the top of the
"Groups and Files" pane) and select "Get Info" or click on the
"Project" menu and select the "Edit Project Settings" option.
&lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id="nkle"
 style="text-align: left;"&gt; &lt;img
 src="http://www.openfeint.com/developers/support/images/free_upsell/dc4x73pc_6fc7qb8gh_b.png"
 style="width: 279px; height: 272px;"&gt; &lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt; This will open the Build
settings window. Select the "Configurations" tab. Every project in
XCode comes with "Debug", "Release" and "Distribution" configurations
set with some useful default values.
&lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id="kbl_"
 style="text-align: left;"&gt; &lt;img
 src="http://www.openfeint.com/developers/support/images/free_upsell/dc4x73pc_8fk4f4hhc_b.png"
 style="width: 603px; height: 206px;"&gt; &lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt; By selecting a configuration
name and clicking on the "Duplicate" button, you create a new
configuration that is a replica all the settings of the selected
configuration. For example, selecting the "Debug" configuration and
clicking on "Duplicate" creates a new configuration called "Debug
copy". This "Debug copy" has the same settings as configuration
"Debug". By creating a copy we can change the settings in the copy
without affecting the settings of the original.
&lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id="iezh"
 style="text-align: left;"&gt; &lt;img
 src="http://www.openfeint.com/developers/support/images/free_upsell/dc4x73pc_92qzjmjd9_b.png"
 style="width: 405px; height: 140px;"&gt; &lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt; Rename "Debug copy" to
"Debug Free". Duplicate the "Release" and "Distribution" configurations
and rename them, so that in the end you have "Release Free" and
"Distribution Free" configurations created.
&lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id="b6o1"
 style="text-align: left;"&gt; &lt;img
 src="http://www.openfeint.com/developers/support/images/free_upsell/dc4x73pc_10g4fgjnf2_b.png"
 style="width: 614px; height: 199px;"&gt; &lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div&gt; Once you have created "Debug
Free", "Release Free" and "Distribution Free" configurations, click on
the "Build" tab and select "Debug Free" in the "Configuration:"
drop-down list. Type "preprocessor" in the search field next to the
"Configuration:" drop-down list, then look for "Preprocessor Macros" or
"GCC_PREPROCESSOR_DEFINITIONS" in the settings below.
&lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id="v.xg"
 style="text-align: left;"&gt; &lt;img
 src="http://www.openfeint.com/developers/support/images/free_upsell/dc4x73pc_11d6h9pqf7_b.png"
 style="width: 474px; height: 281px;"&gt; &lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div&gt; Once you find this setting,
add "__IS_FREE_GAME__" to whatever other value you find for this
setting. That is, don't destroy any values that are set. Just add
"__IS_FREE_GAME__"at the end of the setting. In the example shown
above, the value "_DEBUG" was already set for this setting.
"__IS_FREE_GAME__" has been added at the end. Don't forget to set the
same "__IS_FREE_GAME__" value for this setting in the "Release Free"
and "Distribution Free" configurations.
&lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt; Now that we have set the
"__IS_FREE_GAME__" preprocessor definition, we can detect it in our
game's code with #ifdef __IS_FREE_GAME__
&lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt; The sample code below limits
submitting high scores in one leaderboard in the code for the paid
version only.
&lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="'Courier New', sans-serif"&gt;#ifdef
__IS_FREE_GAME__&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="'Courier New', sans-serif"&gt;&amp;nbsp;&amp;nbsp;//
do not submit a high score in leaderboard ID 12345 for free version&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="'Courier New', sans-serif"&gt;#else&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="'Courier New', sans-serif"&gt;&amp;nbsp;&amp;nbsp;[OFHighScoreService
setHighScore: score forLeaderboard: @"12345" onSuccess: OFDelegate()
onFailure: OFDelegate()];&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="'Courier New', sans-serif"&gt;#end&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt; The sample code below limits
unlocking a specific achievement.
&lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="'Courier New', sans-serif"&gt;#ifdef
__IS_FREE_GAME__&lt;/font&gt; &lt;/div&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="'Courier New', sans-serif"&gt;&amp;nbsp;&amp;nbsp;//
do not unlock achievement ID 5678 for free version&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="'Courier New', sans-serif"&gt;#else&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="'Courier New', sans-serif"&gt;&amp;nbsp;&amp;nbsp;[OFAchievementService
unlockAchievement: @"5678" onSuccess: OFDelegate() onFailure:
OFDelegate()];&lt;/font&gt; &lt;/div&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="'Courier New', sans-serif"&gt;#end&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="'Courier New', sans-serif"&gt;&lt;br&gt;
&lt;/font&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt; Check In-App Purchase
Receipts in Free In-App Purchase Games
&lt;/h2&gt;
&lt;br&gt;
&lt;div&gt; If you are using In-App
Purchase in your game, the code above is not what you should use. A
simple way to integrate In-App Purchase into your app, besides the
relevant In-App Purchase API calls, is to save a User Default in your
code for each In-App Purchase pack the user has bought. This way, you
can use simple code to check whether the user has bought an item, as
shown below.
&lt;/div&gt;
&lt;/span&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="arial, sans-serif"&gt;&lt;br&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="arial, sans-serif"&gt;&lt;font
 class="Apple-style-span" face="'Courier New', sans-serif"&gt;
&lt;div&gt; NSUserDefaults *userDefaults
= [NSUserDefaults standardUserDefaults]; &lt;/div&gt;
&lt;div&gt; BOOL feature1Purchased =
[userDefaults boolForKey: in_app_purchase_feature_1]; &lt;/div&gt;
&lt;div&gt; &lt;br&gt;
&lt;/div&gt;
&lt;div&gt; if (feature1Purchased) &lt;/div&gt;
&lt;div&gt; { &lt;/div&gt;
&lt;div&gt; &lt;span
 style="font-family: arial,sans-serif;"&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="'Courier New', sans-serif"&gt;&amp;nbsp;&amp;nbsp;[OFHighScoreService
setHighScore: score forLeaderboard: @"12345" onSuccess: OFDelegate()
onFailure: OFDelegate()];&lt;/font&gt; &lt;/div&gt;
&lt;/span&gt; &lt;/div&gt;
&lt;div&gt; } &lt;/div&gt;
&lt;div&gt; else &lt;/div&gt;
&lt;div&gt; { &lt;/div&gt;
&lt;div&gt; &amp;nbsp;&amp;nbsp;// do
not set high score for leaderboard ID 12345 for user without In-App
Purchase pack "feature 1" &lt;/div&gt;
&lt;div&gt; } &lt;/div&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;div&gt;
&lt;div&gt; &lt;span
 style="font-family: arial,sans-serif;"&gt;
&lt;p&gt; &lt;br&gt;
&lt;/p&gt;
&lt;p&gt; In the code above,
in_app_purchae_feature_1 is a constant used to identify the In-App
Purchase feature in your user defaults and other places in your code.
This could be the product identifier you use in the App Store API to
identify each separate product. In your In-App Purchase code, when the
user payment has been approved, save the key to User Defaults like
this: &lt;/p&gt;
&lt;p&gt; &lt;br&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="'Courier New'"&gt;NSUserDefaults
*userDefaults = [NSUserDefaults standardUserDefaults];&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="'Courier New'"&gt;[userDefaults
setBool: YES forKey: in_app_purchase_feature_1];&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="'Courier New', sans-serif"&gt;&lt;br&gt;
&lt;/font&gt; &lt;/div&gt;
&lt;p&gt; &lt;b&gt;Note:&lt;/b&gt;
in your In-App Purchase implementation, remember to provide a way for
users to restore previously unlocked levels when they remove and
reinstall your app, or when they upgrade to a new device. You can
either do this at game start up before you display the main menu, or
provide a button for users in your UI. The IAP SDK provides the method
- (void)restoreCompletedTransactions in the SKPaymentQueue class for
this purpose. The specifics of a proper IAP integration are beyond the
scope of this document. Refer to Apple's&amp;nbsp;&lt;a
 href="http://developer.apple.com/iphone/library/documentation/NetworkingInternet/Conceptual/StoreKitGuide/index.html"&gt;In
App Purchase Programming Guide&lt;/a&gt;&amp;nbsp;for
reference. &lt;/p&gt;
&lt;a
 href="http://developer.apple.com/iphone/library/documentation/NetworkingInternet/Conceptual/StoreKitGuide/index.html"&gt;&lt;br&gt;
&lt;/a&gt;&lt;/span&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2&gt; Upselling the Paid Version in
the Free Version &lt;/h2&gt;
&lt;br&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="Arial"&gt;Besides
limiting high score submissions and limiting unlocking achievements in
the free version of your game, you can present the user with messaging
to upsell your paid version within your game. You could give the player
a demo of one of your paid levels and instead of submitting their high
scores at the end of the demo level, or unlocking any achievements they
may have earned, you can present them with a message informing them of
the benefits of the paid version of the game. The code is similar to
what's been presented above, but instead of doing nothing when the user
has the free version, the sample code below presents an alert view.&lt;/font&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;span style="font-family: arial,sans-serif;"&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="'Courier New', sans-serif"&gt;#ifdef
__IS_FREE_GAME__&lt;/font&gt; &lt;/div&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="'Courier New', sans-serif"&gt;&amp;nbsp;&amp;nbsp;[[[[UIAlertView
alloc] initWithTitle:@"Feature unavailable in free version"
message:@"The achievement 5678 is only available for owners of the paid
version. Please buy it. I iz poor!" delegate:nil
cancelButtonTitle:@"Ok" otherButtonTitles:nil] autorelease] show];&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="'Courier New', sans-serif"&gt;#else&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="'Courier New', sans-serif"&gt;&amp;nbsp;&amp;nbsp;[OFAchievementService
unlockAchievement: @"5678" onSuccess: OFDelegate() onFailure:
OFDelegate()];&lt;/font&gt; &lt;/div&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="'Courier New', sans-serif"&gt;#end&lt;/font&gt;
&lt;/div&gt;
&lt;/span&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;font class="Apple-style-span"
 face="Arial"&gt;You may prefer to push a whole different
screen to the user, with graphics, screenshots, and a buy button for
your app. You definitely want to come up with more effective messaging
than what is presented in the code sample.&lt;/font&gt;&lt;br&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="Arial, sans-serif"&gt;&lt;br&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;font
 class="Apple-style-span" face="Arial, sans-serif"&gt;Presenting
appropriate messaging is important specially if your paid game features
challenges. If you use the same OF client application in your free
version as your paid version, or if you use In-App Purchase, there is a
possibility a paid user could send a challenge to a friend with the
free version of the app.&lt;/font&gt;
&lt;/div&gt;
</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/52</link><pubDate>Tue, 22 Dec 2009 18:28:41 GMT</pubDate><guid isPermaLink="false">a6b2d1a6fca77ece272b05e80ac035ef</guid></item><item><title>Test Users</title><description>&lt;div&gt;&lt;b&gt;Overview&lt;/b&gt;

&lt;p&gt;The OpenFeint Developer Dashboard now contains a "Test Users"
section. "Test Users" is a development tool that lets you reset a
users achievements and high scores from within the developer
dashboard. You can also unlink a user's facebook/twitter account,
or remove a user from a device.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Quick Start&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;You can make an existing OpenFeint user a test user by going to
the test users tab and entering the email address &amp;amp; password
associated with that account (test users must have been 'secured').
Developer accounts may not be turned into test users for safety
reasons.&lt;/p&gt;
&lt;p&gt;Once you've added a test user you can reset the user's
achievements and leaderboards by clicking on the game name, then
selecting an individual high score or unlocked achievement to
delete, or clicking "delete all" to delete them all.&lt;/p&gt;
&lt;p&gt;You can also unlink a user's facebook/twitter account, or remove
a user from a device. To remove a user from a device, find the
device by it's Apple UDID in the credentials list, and click
delete. Then, remove the application from your device and reinstall
it. When you launch the application again, you will be presented
with the initial OpenFeint welcome/approval screen. Note that if
you don't remove the application from the device and simply close
and relaunch the app, a new user will automatically be created, but
you won't see the welcome/approval screen.&lt;/p&gt;
&lt;p&gt;You may find a free service such as spamgourmet.com useful
for generating additional email identities to uniquely secure each
test user account.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Known Issues&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Removing test user data from the server via the OF dev dashboard
 will not remove corresponding data from the client side offline data
cache.  To purge all client side data and prevent it from being resynchronized
with the server it is necessary to remove the app itself from the device or simulator.&lt;/p&gt;
&lt;p&gt;Developer accounts may not be turned into test users. When you
enter a developer e-mail and attempt to turn the user into a test
user, the message may incorrectly report that it succeeded.&lt;/p&gt;&lt;/div&gt;
</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/38</link><pubDate>Mon, 30 Aug 2010 23:42:07 GMT</pubDate><guid isPermaLink="false">df12ede535a2b5941ef4f36ac7122810</guid></item><item><title>OpenFeint Gold Requirements</title><description>&lt;h1&gt;What is OpenFeint Gold?&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;OpenFeint Gold is recognition given to the best combinations of fun gameplay and complete OpenFeint integration.&lt;/li&gt;
&lt;li&gt;To be considered for Gold status, your game must meet some minimum integration requirements, outlined below. If you feel your game is Gold material, you can submit it for consideration here. OpenFeint will select Gold games based on quality of gameplay, production values and depth of integration.&lt;/li&gt;
&lt;li&gt;If your game is awarded Gold status, you&#x2019;ll benefit from advertising and support aimed at pushing your work to the top of the sales charts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;

&lt;h1&gt;Requirements&lt;/h1&gt;
&lt;p&gt;
A successful OpenFeint integration enhances the fun and replay value of your games. Using OpenFeint, you can easily add modern social gaming features to your game, including Leaderboards, Achievements and Challenges.
&lt;p&gt;
OpenFeint allows deep customization. As you consider how you&#x2019;ll use OpenFeint, strive to blend each OpenFeint feature into your interface and gameplay. Ideal integrations allow the player to benefit from OpenFeint without having to leave your game.
&lt;p&gt;
&lt;h1&gt;Leaderboards&lt;/h1&gt;
&lt;p&gt;
Leaderboards provide a global means of tracking player scores. Players can see their scores on a global list or see rankings against just their friends.
&lt;p&gt;
&lt;h2&gt;Usage&lt;/h2&gt;
&lt;p&gt;
OpenFeint APIs provide you with leaderboard data which you can use to drive custom interfaces. Your high score UI should match your game&#x2019;s overall look and feel, maximizing the player&#x2019;s immersion in your game&#x2019;s experience.
&lt;p&gt;
&lt;h2&gt;Ideas&lt;/h2&gt;
&lt;p&gt;
If your game is level-based, display a leaderboard after the player completes a level. Don&#x2019;t want to show the whole leaderboard? You could also show the player&#x2019;s friend rank.
&lt;p&gt;
If your game features fast, continuous action, consider integrating the leaderboard by displaying the player&#x2019;s current global rank during gameplay along with your game&#x2019;s next-highest score. This adds challenge and excitement for players as they watch themselves soaring up (or down) the charts.
&lt;p&gt;
You can stoke your player&#x2019;s competitive fire by displaying current friend high scores on your game&#x2019;s main menu. Highlight the player&#x2019;s score and each time he launches your game, he&#x2019;s able to see the score to beat, setting gameplay goals accordingly.
&lt;p&gt;
Leaderboards can also be accessible through your main menu. Curious players will know the latest scores are only a few taps away.
&lt;p&gt;
&lt;h2&gt;Examples&lt;/h2&gt;
&lt;p&gt;
&lt;center&gt;
&lt;img src="http://openfeint.com/images/support_site/leaderboard1.png"&gt;&lt;br&gt; 
&lt;i&gt;Solitaire Tri Towers displays inline leaderboard data.&lt;/i&gt;
&lt;p&gt;

&lt;img src="http://openfeint.com/images/support_site/leaderboard2.png"&gt;&lt;br&gt; 
&lt;i&gt;Fieldrunners displays high scores in a custom view, available both through the game&#x2019;s menu and displayed after a game is completed.&lt;/i&gt;
&lt;p&gt;

&lt;img src="http://openfeint.com/images/support_site/leaderboard3.png"&gt;&lt;br&gt; 
&lt;i&gt;Hook Champ sports a heavily customized leaderboard view.&lt;/i&gt;
&lt;p&gt;
&lt;/center&gt;
&lt;h1&gt;Achievements&lt;/h1&gt;
&lt;p&gt;
Achievements provide recognition for in-game player accomplishments. Games can present a blend of achievements, ranging from the mundane (ten kills with a sniper rifle) to the nearly-impossible (finish the game with 100% health). By encouraging players to collect achievements, you improve replay value of your game.
&lt;p&gt;
&lt;h2&gt;Usage&lt;/h2&gt;
&lt;p&gt;
OpenFeint APIs provide achievement data you can display in your games. Finding ways to integrate and acknowledge these achievements without requiring the player to leave your game is important. While players enjoy the accomplishment of unlocking an achievement, they don&#x2019;t want that to come at the cost of interrupting their experience.
&lt;p&gt;
&lt;h2&gt;Ideas&lt;/h2&gt;
&lt;p&gt;
When a player unlocks an achievement, immediately display a notification that matches your game&#x2019;s look and feel while
&lt;p&gt;
For level based games, display a listing of completed achievements at the conclusion of each level.
&lt;p&gt;
Similar to leaderboards, you can allow players to access a view of their achievements through your game&#x2019;s main menu. Your game can display a list of achievements using a list interface that matches the rest of the game experience.
&lt;p&gt;
You could also entice players by displaying a progress bar on your main menu showing how close they are to 100% achievement completion.
&lt;p&gt;

&lt;h2&gt;Examples&lt;/h2&gt;
&lt;p&gt;
&lt;center&gt;
&lt;img src="http://openfeint.com/images/support_site/achievement1.png"&gt;&lt;br&gt;  
&lt;i&gt;Fieldrunners provides a view of achievements that matches the game&#x2019;s look and feel. This view is accessible through the game&#x2019;s main menu.&lt;/i&gt;
&lt;p&gt;

&lt;img src="http://openfeint.com/images/support_site/achievement2.png"&gt;&lt;br&gt;  
&lt;i&gt;Must Eat Birds breaks away from listing achievements altogether, displaying them instead like a rack of pastries, consistent with the game&#x2019;s theme.&lt;/i&gt;
&lt;p&gt;
&lt;/center&gt;
&lt;h1&gt;Player Data and Communications&lt;/h1&gt;
&lt;p&gt;
OpenFeint&#x2019;s social underpinnings provide significant, turn-key solutions for any game with social components.
&lt;p&gt;
&lt;h2&gt;Usage&lt;/h2&gt;
&lt;p&gt;
OpenFeint&#x2019;s API exposes powerful features you can use to provide both real-time and asynchronous communication among your game&#x2019;s players. You can also access profile data, using it as a starting point for getting to know the player better.
&lt;p&gt;
&lt;h2&gt;Ideas&lt;/h2&gt;
&lt;p&gt;
If having the player&#x2019;s photo will let you enhance gameplay, consider capturing their OpenFeint profile image.
&lt;p&gt;
Expose the Fan Club directly on your main menu to your players. Encourage them to opt-in for your newsletter or favorite the game so their friends can see what they&#x2019;re playing.
&lt;p&gt;
&lt;h1&gt;Challenges and Multiplayer&lt;/h1&gt;
&lt;p&gt;
Social interaction through challenges and multiplayer gaming can take your product to a new level of engagement and value. These features should be exposed in your main menu, increasing the gameplay options your players can enjoy.
&lt;p&gt;
&lt;h2&gt;Usage and Value&lt;/h2&gt;
&lt;p&gt;
Challenges are an asynchronous method to play against friends. After concluding gameplay, players can challenge their friends to beat their performance.
&lt;p&gt;
&lt;h2&gt;Examples&lt;/h2&gt;
&lt;p&gt;
&lt;center&gt;
&lt;img src="http://openfeint.com/images/support_site/challenge1.png"&gt;&lt;br&gt;  
&lt;i&gt;Arithmetic Master lets users begin a challenge once they&#x2019;ve completed some gameplay.&lt;/i&gt;
&lt;p&gt;
&lt;/center&gt;
&lt;h2&gt;Multiplayer&lt;/h2&gt;
&lt;p&gt;
Multiplayer is a feature of OpenFeint currently in private beta. Invitations to this beta are extended based on game quality. Contact us if you believe your game merits consideration.
&lt;p&gt;
&lt;h1&gt;General Integration Practices&lt;/h1&gt;
&lt;p&gt;
OpenFeint should initialize at startup. This allows your game to log players immediately into OpenFeint or prompt them to create an account, as needed. As all other elements of the OpenFeint experience, you can create a custom start screen that matches your game&#x2019;s look and feel.
&lt;p&gt;
&lt;center&gt;
&lt;img src="http://openfeint.com/images/support_site/general1.png"&gt; &lt;img src="http://openfeint.com/images/support_site/general2.png"&gt; &lt;br&gt; 
&lt;i&gt;Steampunk Hockey features a custom start screen that matches the rest of the game&#x2019;s interface.&lt;/i&gt;
&lt;p&gt;

&lt;img src="http://openfeint.com/images/support_site/icon1.png"&gt; &lt;br&gt; 
&lt;i&gt;The OpenFeint logo should appear in your game&#x2019;s icon. Players look for this logo in when expanding their library.
Piyo Blocks includes the OpenFeint logo in its icon.&lt;/i&gt;
&lt;p&gt;
&lt;/center&gt;
&lt;h2&gt;Notifications&lt;/h2&gt;
&lt;p&gt;
OpenFeint&#x2019;s drop-down notifications are customizable. The best integrations will create notification UI that keeps players in touch with their OpenFeint account while still maintaining the game&#x2019;s overall flavor.
&lt;p&gt;
&lt;h2&gt;Branding and Dashboard&lt;/h2&gt;
&lt;p&gt;
The OpenFeint dashboard should be accessible either from your game&#x2019;s main screen or pause screen using OpenFeint branding. Players expect easy access to the dashboard across all their games. Honoring this expectation provides the best possible experience for your players. Customizing the OpenFeint art to fit your game&#x2019;s interface is encouraged so long as you comply with the platform&#x2019;s branding guidelines.
&lt;p&gt;
When OpenFeint data drives integrated leaderboards, achievements or challenges, brand those elements of your interface using the leaf logo.
&lt;p&gt;
&lt;center&gt;
&lt;img src="http://openfeint.com/images/support_site/general3.png"&gt; &lt;br&gt; 
&lt;i&gt;Jet Car Stunts gives Jakob a standard OpenFeint notification that matches the rest of the game&#x2019;s menu interface. Since OpenFeint drives its challenge system, detailed on the top-right of the menu, a leaf logo is present. A button to access the OF dashboard is also prominent. The leaf logo has been styled to match the menu&#x2019;s ultra-modern look.&lt;/i&gt;
&lt;p&gt;

&lt;img src="http://openfeint.com/images/support_site/general4.png"&gt; &lt;br&gt; 
&lt;i&gt;Bird Strike integrates the OpenFeint logo with its OF-driven Leaderboards in its menu interface.&lt;/i&gt;
&lt;p&gt;
 
&lt;img src="http://openfeint.com/images/support_site/general5.png"&gt; &lt;br&gt; 
&lt;i&gt;Hook Champ displays the OpenFeint logo styled according to its 8-bit design motif, presenting easy access to the dashboard from the game&#x2019;s main menu.&lt;/i&gt;
&lt;p&gt;
&lt;/center&gt;</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/58</link><pubDate>Tue, 02 Mar 2010 19:25:27 GMT</pubDate><guid isPermaLink="false">0bd77564025fbda7c3617c205ed2a5e4</guid></item><item><title>Push Notifications</title><description>  &lt;div&gt;&lt;b&gt;Overview&lt;/b&gt;&lt;br&gt;

Challenges use push notifications to notify users when they have
been challenged. Push notifications are supported on all devices
with OS 3.0 and up. In order to support push notifications your
game must build against base SDK 3.0 or newer, but you may use a
lower deployment target allowing your game to still work on OS 2.x
devices. OpenFeint handles all the server work and communications
with apple. You only need to supply us with your certificate and
add a few lines of client code.&lt;/p&gt;
&lt;p&gt;When a user sends out a challenge he may type in a message. This
message along with the application name is what will appear in the
push notification. The default message is "Try to beat me!".&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Quick Start&lt;/b&gt;&lt;br&gt;
Setting up the certificates&lt;br&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Visit &lt;a href=
"http://developer.apple.com/iphone/"&gt;http://developer.apple.com/iphone/&lt;/a&gt;.
Log in to your account and go to the iPhone Developer Program
Portal. Select App Ids, select configure on the app you want to
enable and follow the instructions for getting a push notification
certificate. Not that you may not use wildcard provisioning
profiles with push notifications and you will need one certificate
for development and one for distribution.&lt;/li&gt;
&lt;li&gt;Once you've downloaded the certificates, install them on your
local machine. Open the Keychain Access application and export the
certificates in .p12 format. When exporting don't use your regular
password as you will need to supply it to the OpenFeint dashboard.
If you are exporting and the .p12 format is not selectable (greyed
out) then please make sure you have selected 'Certificates' in the
category window of Keychain Access.&lt;/li&gt;
&lt;li&gt;Upload the certificates to OpenFeint through the Push
Notifications tab on the dashboard.&lt;/li&gt;

&lt;li&gt;Download your provisioning profile again. They need to be
re-installed now that they support push notifications. Make sure to
remove the old version before installing the new one.&lt;br&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Add the following code to your app delegate:&lt;/p&gt;
&lt;pre&gt;
&lt;code&gt;- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    [OpenFeint applicationDidRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
    OFLog([NSString stringWithFormat:@"Failed to register for remote notifications with error: %@", [error localizedDescription]]);
    [OpenFeint applicationDidFailToRegisterForRemoteNotifications];
}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    [OpenFeint applicationDidReceiveRemoteNotification:userInfo];
}&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;You will also need to implement
application:didFinishLaunchingWithOptions and pass in the options
to OpenFeint. To keep supporting older OS versions, it's
recommended to do it like this:&lt;br&gt;&lt;/p&gt;
&lt;pre&gt;
&lt;code&gt;- (void)applicationDidFinishLaunching:(UIApplication *)application
{
    [self commonInit];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [self commonInit];
    [OpenFeint respondToApplicationLaunchOptions:launchOptions];
    return YES;
}&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;OpenFeint uses the _DISTRIBUTION define to determine whether to
use the sandbox or production environment. This is VERY important
since Apple doesn't let you use the production environment with a
debug build or sandbox environment with a distribution build (the
one you send to Apple).&lt;br&gt;

To define _DISTRIBUTION, open your project settings, select the
distribution configuration (make sure to not to this for all
configurations) go to "PreProcessor Macros" and add a line with
_DISTRIBUTION.&lt;/p&gt;
&lt;p&gt;Verify that OpenFeintSettingEnablePushNotifications is set to
[NSNumber numberWithBool:YES] when initializing OpenFeint.&lt;/p&gt;&lt;/div&gt;
</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/33</link><pubDate>Fri, 06 Nov 2009 00:18:20 GMT</pubDate><guid isPermaLink="false">8bb2fffa68d1679a4acbbb0ef0fdf065</guid></item><item><title>Network Save Card</title><description>&lt;h1&gt;About Network Save Card&lt;/h1&gt; 
&lt;p&gt;The OpenFeint Network Save Card service provides a simple API that
enables an application to save a blob of data to the server and
retrieve it later. Each blob is associated with a specific
application, a specific user, and a key name chosen by the
application. An application can only access blobs that it has
created and only those that are associated with the current user.
OpenFeint Network Save Card can be thought of as simple flat file
system that follows a user account around the network and restores
application specific data to a game even if the account shows up on
a different device.&lt;/p&gt; 
&lt;p&gt;Network Save Card is a new service available as of version 2.4 of
the OpenFeint SDK. The service is only available when OpenFeint is
in the online state. An application is allowed to consume up to
256K of cloud storage per OpenFeint user account. Warning: accounts
exceeding the limit may find that excess blocks are initially
granted then mysteriously disappear from the server a week later.
If your particular game has a good reason to consume more storage,
please send us a support request explaining your needs and we'll
see what we can do to increase your limits so that you do not
experience disappearing data.&lt;/p&gt; 
&lt;h2&gt;Use Case: Save Game State&lt;/h2&gt; 
&lt;p&gt;One typical use case for the Network Save Card is to save the current
player's game state. For games that allow a branched path through
through the game, it is possible to save multiple game states under
one OpenFeint identity provided that particular user's overall
storage limit for that game is not exceeded.&lt;/p&gt; 
&lt;h2&gt;Data Blob Access Methods&lt;/h2&gt; 
&lt;p&gt;The API consists of two simple methods: one for uploading and
one for downloading. Each blob is distinguished by a key name
unique within the context of the current application and user. The
blob of data itself is passed through the API as an NSData object
consisting of whatever binary data the application may store. The
prototypes of the two methods are:&lt;/p&gt; 
&lt;pre&gt; 
&lt;code&gt;+ (void)uploadBlob:(NSData*) blob withKey:(NSString*) keyStr
    onSuccess:(const OFDelegate&amp;amp;)onSuccess onFailure:(const OFDelegate&amp;amp;)onFailure;
+ (void)downloadBlobWithKey:(NSString*) keyStr
    onSuccess:(const OFDelegate&amp;amp;)onSuccess onFailure:(const OFDelegate&amp;amp;)onFailure;&lt;/code&gt; 
&lt;/pre&gt; 
&lt;p&gt;The key string is case sensitive alphanumeric text that must
begin with an alphabetic character. The dash and underscore
characters may also be used in this string. Key strings may be up
to 32 characters long. The result of using a longer string is
undefined. The last two parameters of each method accept
application defined OFDelegate style callbacks to be executed upon
success or failure of each API method.&lt;/p&gt; 
&lt;h2&gt;Using Network Save Card&lt;/h2&gt; 
&lt;p&gt;The sample app included with the API gives a simple
demonstration of cloud storage in use. Try running the sample app
and confirm that you can send and receive a couple of test blobs
with different key strings. Take a look at the source code for this
sample in the files "CloudStorageDemoController.mm" and
"CloudStorageDemoController.xib".&lt;/p&gt; 
&lt;p&gt;The first thing to do in your own code is to include the
appropriate header:&lt;/p&gt; 
&lt;pre&gt; 
&lt;code&gt;#import "OFCloudStorageService.h"&lt;/code&gt; 
&lt;/pre&gt; 
&lt;p&gt;Next, make sure you can send a blob of data and see that your
success delegate is called.&lt;/p&gt; 
&lt;pre&gt; 
&lt;code&gt;- (IBAction)onBlobSend:(id)sender{
    NSData      *payloadData =
        [blobPayloadTextBox.text dataUsingEncoding: NSUTF8StringEncoding];
    OFDelegate   successDelegate(self, @selector(blobSend_SuccessDelegate));
    OFDelegate   failureDelegate(self, @selector(blobSend_FailureDelegate));
 
    [OFCloudStorageService uploadBlob: payloadData
        withKey: blobNameTextBox.text
        onSuccess: successDelegate
        onFailure: failureDelegate
    ];
}&lt;/code&gt; 
&lt;/pre&gt; 
&lt;p&gt;You can define the success and failure delegates very simply to
start out. They don't have to do anything yet. You just need them
as a place to intercept a breakpoint or spit out an NSLog string to
see when they get called. Each should have a void return value and
no parameters. The blob you send can be a simple chunk of text for
now but you will be able to substitute this later with any binary
data you like.&lt;/p&gt; 
&lt;p&gt;Next, try fetching a previously submitted blob using the key
values you created them with.&lt;/p&gt; 
&lt;pre&gt; 
&lt;code&gt;- (IBAction)onBlobFetch:(id)sender{
    OFDelegate successDelegate(self, @selector(blobFetch_SuccessDelegate:));
    OFDelegate failureDelegate(self, @selector(blobFetch_FailureDelegate));
 
    [OFCloudStorageService downloadBlobWithKey: blobNameTextBox.text
        onSuccess: successDelegate
        onFailure: failureDelegate
    ];
}&lt;/code&gt; 
&lt;/pre&gt; 
&lt;p&gt;Note the colon at the end of the success delegate name in this
case. This delegate receives one parameter containing the data
fetched from the server. The failure delegate has no parameters or
return value just like the result delegates used when sending a
blob. See the following example and note that you could intercept a
breakpoint to confirm that receivedString has the content you were
expecting.&lt;/p&gt; 
&lt;pre&gt; 
&lt;code&gt;- (void)blobFetch_SuccessDelegate:(NSData*)blob{
    NSString        *receivedString = nil;
    NSUInteger   blobLen    = [blob length];
 
    if (blobLen &amp;lt;= 0){
        receivedString = @"";
    }else{
        receivedString =
            [[NSString alloc] initWithData: blob encoding: NSUTF8StringEncoding];
        [receivedString autorelease];
    }
}&lt;/code&gt; 
&lt;/pre&gt; 
&lt;p&gt;Once this sample is clear there should be no trouble
extrapolating this service to handle whatever type of data you need
to store provided that it meets the storage limitations.&lt;/p&gt;</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/50</link><pubDate>Sat, 19 Dec 2009 06:56:19 GMT</pubDate><guid isPermaLink="false">4cb042f2813501c601b776e1737be429</guid></item><item><title>Offline Support</title><description>  &lt;div&gt;OpenFeint version 2.2 has high score support for users that do
not agree to join the OpenFeint community.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Define all the leaderboards for your application.&lt;/li&gt;
&lt;li&gt;Go to the &lt;b&gt;Offline&lt;/b&gt; section in the developer dashboard,
and click &lt;b&gt;Download&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Add the downloaded file
&lt;b&gt;&lt;i&gt;openfeint_offline_config.xml&lt;/i&gt;&lt;/b&gt; into your project.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Anytime you modify your leaderboard definitions you must
download a new configuration file to get the changes.&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;If the user does agree to join the OpenFeint community, when a
score is submitted or an achievement is unlocked while offline it
is stored on their device and the next time they play online these
will be sent to the OpenFeint server automatically.&lt;/p&gt;
&lt;p&gt;When offline they can also view their achievements and/or top 10
personal high scores.&lt;br&gt;
Achievements and latest high score reached while playing on another
device are sent to current device they are playing on.&lt;/p&gt;
&lt;p&gt;Changes to leaderboard or achievement definitions are
automatically synchronized to the device.&lt;/p&gt;&lt;/div&gt;
</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/35</link><pubDate>Fri, 06 Nov 2009 00:20:56 GMT</pubDate><guid isPermaLink="false">7ae6e9f1109e990b52542d474c3e5d66</guid></item><item><title>Approval Screen Overview</title><description>  &lt;div&gt;
&lt;h2&gt;What is it?&lt;/h2&gt;
&lt;p&gt;As of OpenFeint version 1.7 we've included what we call the
'Approval' screen. This is the first screen a user sees before any
interaction with OpenFeint is possible, and asks the user if they
would like to use OpenFeint or not. If the user chooses to use
OpenFeint then a brief account creation / identification flow
begins.&lt;/p&gt;
&lt;h2&gt;Why do we have it?&lt;/h2&gt;
&lt;p&gt;Apple requires that we notify the user that we will be
submitting their score, achievement, etc... data for storage on our
servers. In general, we also want the user to know what OpenFeint
is and how it will enhance their experience!&lt;/p&gt;
&lt;h2&gt;Customization&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;Can I customize this screen?&lt;/b&gt;&lt;br&gt;
Yes. OpenFeint allows a developer to easily customize the initial
approval screen.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;What do I need to do to customize the approval
screen?&lt;/b&gt;&lt;br&gt;
Developers must provide OpenFeint with an OpenFeintDelegate during
initialization. The OpenFeintDelegate must implement the following
method:&lt;br&gt;

&lt;code&gt;- (BOOL)showCustomOpenFeintApprovalScreen;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This method should display the custom approval screen and return
YES to prevent OpenFeint from displaying the default approval
screen.&lt;/p&gt;
&lt;p&gt;In addition, when the custom approval screen is dismissed
(either with a YES or NO answer) the developer must invoke:&lt;br&gt;
&lt;code&gt;[OpenFeint userDidApproveFeint:YES/NO];&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This will flag the user as having approved/denied OpenFeint and
present the account creation / identification screen if required.
After this flow is completed the user will then be allowed to use
OpenFeint from within your application.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;How can I test this screen if it only shows up once?&lt;/b&gt;&lt;br&gt;
As of OpenFeint version 2.1 this screen will be displayed upon
every installation of the application. This means that as a
developer all you have to do is explicitly delete the application
from your device / simulator in order to view the screen again.&lt;/p&gt;&lt;/div&gt;

    &lt;/div&gt;
</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/24</link><pubDate>Thu, 05 Nov 2009 23:53:41 GMT</pubDate><guid isPermaLink="false">eacb68ae931f5d8026cc3320b07e5383</guid></item><item><title>Changelog</title><description>&lt;div&gt;&lt;h1&gt;What's New - 2.3 (10.30.2009)&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Multiple Accounts Per Device
&lt;ul&gt;
&lt;li&gt;Multiple OpenFeint accounts may be attached to a single
device.&lt;/li&gt;
&lt;li&gt;When starting a new game, user may choose which user to log in
as if there are multiple users attached to his device&lt;/li&gt;
&lt;li&gt;When user switches account from the settings tab, he will be
presented with a list of accounts tied to the device if there is
more than one&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Facebook/Twitter may be tied to more than one account
&lt;ul&gt;
&lt;li&gt;User will no longer get an error message when trying to attach
Facebook/Twitter to an account if that Facebook/Twitter account has
already been use by OpenFeint.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;

&lt;li&gt;Select Profile Picture Functionality
&lt;ul&gt;
&lt;li&gt;User may from the settings tab choose profile picture between
Facebook, Twitter and the standard OpenFeint profile picture.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Remove Account From Device
&lt;ul&gt;
&lt;li&gt;User may completely remove the account from the current device
if he wants to sell his device etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Create New User
&lt;ul&gt;
&lt;li&gt;From the OpenFeint intro flow or the Switch User screen, the
user may choose to create a new OpenFeint account.&lt;/li&gt;
&lt;/ul&gt;

&lt;/li&gt;
&lt;li&gt;Log Out
&lt;ul&gt;
&lt;li&gt;User may from the settings tab log out of OpenFeint for the
current game. When logged out OpenFeint will act as if you said no
to OpenFeint in the first place and not make any server calls.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Remove Facebook/Twitter
&lt;ul&gt;
&lt;li&gt;Option on the settings tab to disconnect facebook or twitter
from the current account&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Version History&lt;/h1&gt;
&lt;h2&gt;Version 9.29.2009 (2.2)&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Game Profile Pages accessible for any game from any game. Game
Profile Page allows you to:
&lt;ul&gt;
&lt;li&gt;View Leaderboards&lt;/li&gt;
&lt;li&gt;View Achievements&lt;/li&gt;
&lt;li&gt;View Challenges&lt;/li&gt;
&lt;li&gt;Find out which of your friends are playing&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;User Comparison. Tap 'Compare with a Friend' to see how you
stack up against your OpenFeint friends!
&lt;ul&gt;
&lt;li&gt;Browsing into a game profile page through another user's
profile will default to comparing against that user.&lt;/li&gt;

&lt;li&gt;Game Profile page comparison shows a breakdown of the results
for achievements, leaderboards and challenges&lt;/li&gt;
&lt;li&gt;Achievements page shows unlocked achievements for each
user&lt;/li&gt;
&lt;li&gt;Challenges page shows pending challenges between the two users,
number of won challenges/ties for each user and challenge history
between the two users.&lt;/li&gt;
&lt;li&gt;Leaderboards page shows the result for each user for each
leaderboard&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Unregistered user support. Now you can let OpenFeint manage all
of your high score data!
&lt;ul&gt;
&lt;li&gt;Users that opt-out of OpenFeint can still open the dashboard
and view their local high scores.&lt;/li&gt;
&lt;li&gt;When the user signs up for OpenFeint any previous scores gets
attributed to the new user.&lt;/li&gt;
&lt;li&gt;This &lt;strong&gt;REQUIRES&lt;/strong&gt; that you download an offline
configuration XML file and add it to your project. This file is
downloadable in the developer dashboard under the 'Offline'
section. See &lt;a href=
"http://help.openfeint.com/faqs/guides-2/offline"&gt;http://help.openfeint.com/faqs/guides-2/offline&lt;/a&gt;

for more information.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Improved offline support.
&lt;ul&gt;
&lt;li&gt;More obvious when a user is using OpenFeint in offline
mode.&lt;/li&gt;
&lt;li&gt;User no longer need to be online once for offline leaderboards
to work.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Improved friends list. *Friends list now shows all friends in a
alphabetical list.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Version 9.09.2009 (2.1.2)&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Fixed an issue with OpenFeint not initializing properly when
user says no to push notifications&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Version 8.28.2009 (2.1.1)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Fix compiling issues with Snow Leopard XCode 3.2&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Version 8.13.2009 (2.1)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=
"http://help.openfeint.com/faqs/api-features/pushnotifications"&gt;Social
Challenges using Push Notifications!&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Users can play a game session defined by you and challenge
their OpenFeint friends to do better!&lt;/li&gt;

&lt;li&gt;Friends will receive push notifications (for OS3.0+) as well as
notification in the dashboard&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=
"http://help.openfeint.com/faqs/advanced-topics/friends"&gt;Players
can now add/remove friends directly from within OpenFeint&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Complete UI overhaul&lt;/li&gt;
&lt;li&gt;&lt;a href=
"http://help.openfeint.com/faqs/guides-2/offline"&gt;Fleshed out
offline support&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Support for offline high-score tables&lt;/li&gt;
&lt;li&gt;Support for offline achievement unlocking&lt;/li&gt;
&lt;li&gt;Users can view their achievements and high score data while
offline&lt;/li&gt;

&lt;li&gt;Offline resources are synchronized with OpenFeint when online
services are available&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;OpenFeint now uses Apache 2.0 license&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Version 7.22.2009 (2.0e)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Added displayText option to highscores. If set this is
displayed instead of the score (score is still used for
sorting)&lt;/li&gt;
&lt;li&gt;Removed status bar in the dashboard&lt;/li&gt;
&lt;li&gt;Fixed bug with showing a few black frames when opening the
OpenFeint dashboard form an OpenGL game&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Version 7.13.2009 (2.0d)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Improved OpenFeint "Introduction flow"&lt;/li&gt;
&lt;li&gt;User may set their name when first getting an account&lt;/li&gt;
&lt;li&gt;&lt;a href=
"http://help.openfeint.com/faqs/advanced-topics/friends"&gt;User may
at any time import friends from Twitter or Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Nicer landing page in the dashboard encouraging you to import
friends until you have some&lt;/li&gt;
&lt;li&gt;Fixed compatibility issues with using the 3.0 base sdk and 2.x
deployment targets&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Version 6.29.2009 (2.0)&lt;/h2&gt;
&lt;ul&gt;

&lt;li&gt;&lt;a href=
"http://help.openfeint.com/faqs/advanced-topics/friends"&gt;Friends&lt;/a&gt;:&lt;/li&gt;
&lt;li&gt;A player can import friends from twitter and facebook:&lt;/li&gt;
&lt;li&gt;A player can see all of his or her friends in one place:&lt;/li&gt;
&lt;li&gt;Feint Library:&lt;/li&gt;
&lt;li&gt;A player can see all the games they've played in once
place&lt;/li&gt;
&lt;li&gt;Social Player Profiles:&lt;/li&gt;
&lt;li&gt;A player can see the name and avatar of the profile owner:&lt;/li&gt;
&lt;li&gt;A player can see all the games the profile owner has
played:&lt;/li&gt;

&lt;li&gt;A player can see all the friends the profile owner has:&lt;/li&gt;
&lt;li&gt;&lt;a href=
"http://help.openfeint.com/faqs/api-features/achievements"&gt;Achievements&lt;/a&gt;:&lt;/li&gt;
&lt;li&gt;A developer can add up to 100 achievements to a game:&lt;/li&gt;
&lt;li&gt;Each player has a gamerscore and earns points when unlocking
achievements:&lt;/li&gt;
&lt;li&gt;Achievements can be compared between friends for a particular
game:&lt;/li&gt;
&lt;li&gt;If you do not have any achievements to be compared, there is an
iPromote Page link with a call to action prominantly visible&lt;/li&gt;
&lt;li&gt;Achievements can be unlocked by the game client when on or
offline:&lt;/li&gt;
&lt;li&gt;Achievements unlocked offline are syncronized when next
online:&lt;/li&gt;

&lt;li&gt;&lt;a href=
"http://help.openfeint.com/faqs/api-features/leaderboards"&gt;Friend
Leaderboards&lt;/a&gt;:&lt;/li&gt;
&lt;li&gt;A leaderboard can be sorted by friends:&lt;/li&gt;
&lt;li&gt;Player avatars are visible on the leaderboard:&lt;/li&gt;
&lt;li&gt;&lt;a href=
"http://help.openfeint.com/faqs/developer-features/chat-and-moderation"&gt;
Chat Room&lt;/a&gt;:&lt;/li&gt;
&lt;li&gt;Each chat message has a player's profile avatar next to
it:&lt;/li&gt;
&lt;li&gt;Each chat message has some kind of visual representation of the
game they are using:&lt;/li&gt;
&lt;li&gt;Clicking on a person's chat message takes you to their
profile:&lt;/li&gt;

&lt;li&gt;&lt;a href=
"http://help.openfeint.com/faqs/developer-features/chat-and-moderation"&gt;
Chat Room Moderation&lt;/a&gt;:&lt;/li&gt;
&lt;li&gt;A player report can optionally include a reason:&lt;/li&gt;
&lt;li&gt;A player can click "report this user" on a player's
profile:&lt;/li&gt;
&lt;li&gt;A developer can give Moderator privileges to up to 5 users from
the dashboard:&lt;/li&gt;
&lt;li&gt;When a player has been flagged more than a certain number of
times, they are not allowed to chat for a relative amount of
time:&lt;/li&gt;
&lt;li&gt;Moderators reporting a user immediately flags them:&lt;/li&gt;
&lt;li&gt;Fixed iPhone SDK 3.0 compatibility issues&lt;/li&gt;
&lt;li&gt;Lots of bugfixes&lt;/li&gt;

&lt;li&gt;Lots of user interface changes&lt;/li&gt;
&lt;li&gt;Lots of Perforamnce improvements&lt;/li&gt;
&lt;li&gt;Fixed compatibility with iPod Music Picker&lt;/li&gt;
&lt;li&gt;Fixed glitch visual glitch in landscape when running on a 2.0
device and building with the 3.0 SDK&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Version 5.29.2009 (1.7)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Simplified account setup&lt;/li&gt;
&lt;li&gt;Users can access OpenFeint without setting up an account&lt;/li&gt;
&lt;li&gt;Login is only required once per device instead of per app&lt;/li&gt;

&lt;li&gt;3.0 compatibility fixes&lt;/li&gt;
&lt;li&gt;Various bug fixes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Version 5.22.2009 (1.7)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Simplified account setup&lt;/li&gt;
&lt;li&gt;Users can access OpenFeint without setting up an account&lt;/li&gt;
&lt;li&gt;Login is only required once per device instead of per app&lt;/li&gt;
&lt;li&gt;3.0 compatibility fixes&lt;/li&gt;
&lt;li&gt;Various bug fixes&lt;/li&gt;

&lt;/ul&gt;
&lt;h2&gt;Version 5.13.2009 (1.6b)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;OpenFeint works properly on 3.0 devices.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Version 4.29.2009 (1.6)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Dashboard now supports landscape (interface orientation is a
setting when initializing OF).&lt;/li&gt;
&lt;li&gt;OpenFeint can now be compiled against any iPhone SDK
version&lt;/li&gt;
&lt;li&gt;Various minor bug-fixes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Version 4.21.2009 (1.5)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;One Touch iPromote&lt;/li&gt;
&lt;li&gt;Keyboard can now be toggled in the chat rooms&lt;/li&gt;
&lt;li&gt;Greatly improved performance and memory usage of chat
rooms&lt;/li&gt;
&lt;li&gt;Profanity Filter is now even more clean.&lt;/li&gt;
&lt;li&gt;Massive scale improvements&lt;/li&gt;
&lt;li&gt;Improved internal analytics for tracking OF usage&lt;/li&gt;
&lt;li&gt;User conversion rate tracking (view, buy, return)&lt;/li&gt;

&lt;li&gt;Various minor bug-fixes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Version 3.26.2009 (1.0)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Users can login with their Facebook accounts (using
FBConnect)&lt;/li&gt;
&lt;li&gt;Every user now has proper account "settings"&lt;/li&gt;
&lt;li&gt;Global "publishing" permissions are now present on account
creation screens&lt;/li&gt;
&lt;li&gt;Chat scrolling now works properly in 2.0, 2.1, 2.2, and
2.2.1.&lt;/li&gt;
&lt;li&gt;DashboardDidAppear delegate implemented by request&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Version 3.20.2009&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Users can login with other account containers (twitter)&lt;/li&gt;
&lt;li&gt;Added global, developer, and game lobbies&lt;/li&gt;
&lt;li&gt;Developer and game rooms can be configured from developer
website&lt;/li&gt;
&lt;li&gt;Account error handling improved&lt;/li&gt;
&lt;li&gt;Polling system improvements: remote throttling, disabled when
device locks&lt;/li&gt;
&lt;li&gt;Improved &lt;a href=
"http://help.openfeint.com/faqs/developer-features/versioning"&gt;versioning&lt;/a&gt;
support&lt;/li&gt;

&lt;li&gt;&lt;a href=
"http://help.openfeint.com/faqs/api-features/leaderboards"&gt;Leaderboard&lt;/a&gt;
values can be 64 bit integers (requested feature!)&lt;/li&gt;
&lt;li&gt;Removed profile screens&lt;/li&gt;
&lt;li&gt;Added Settings tab with Logout button&lt;/li&gt;
&lt;li&gt;Final tab organization and art integration&lt;/li&gt;
&lt;li&gt;Lots of minor bug fixes and tweaks&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Version 3.15.2009&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Out of dashboard background notifications&lt;/li&gt;

&lt;li&gt;Multiple &lt;a href=
"http://help.openfeint.com/faqs/api-features/leaderboards"&gt;leaderboards&lt;/a&gt;
for each title (configurable via web site)&lt;/li&gt;
&lt;li&gt;Landscape keyboard issue addressed&lt;/li&gt;
&lt;li&gt;Startup time significantly reduced&lt;/li&gt;
&lt;li&gt;Multi-threaded API calls now work properly&lt;/li&gt;
&lt;li&gt;Added profanity filter to server&lt;/li&gt;
&lt;li&gt;Basic request based version tracking&lt;/li&gt;
&lt;li&gt;Now using HTTPS for all data communication&lt;/li&gt;

&lt;/ul&gt;
&lt;h2&gt;Version 3.10.2009&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Robust connectivity and server error handling&lt;/li&gt;
&lt;li&gt;Integration protocol no longer requires all callbacks&lt;/li&gt;
&lt;li&gt;Various Bugfixes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Version 3.6.2009&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Each game has a dedicated &lt;a href=
"http://help.openfeint.com/faqs/developer-features/chat-and-moderation"&gt;
chat room&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;First implementation of &lt;a href=
"http://help.openfeint.com/faqs/api-features/notification-pop-ups"&gt;background
alerts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Framework preparation for future features&lt;/li&gt;
&lt;li&gt;Framework enhancements for table views&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Version 3.3.2009&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;First pass at &lt;a href=
"http://help.openfeint.com/faqs/api-features/leaderboards"&gt;Leaderboards&lt;/a&gt;
("Global" and "Near You")&lt;/li&gt;
&lt;li&gt;Tabbed Dashboard with temporary icons&lt;/li&gt;

&lt;li&gt;OFHighScore API for setting high score&lt;/li&gt;
&lt;li&gt;OpenFeintDelegate now works&lt;/li&gt;
&lt;li&gt;OpenFeint api changed to allow a per-dashboard delegate&lt;/li&gt;
&lt;li&gt;Automatically prompt to setup account before submitting
requests&lt;/li&gt;
&lt;li&gt;Placeholder in-game alerts&lt;/li&gt;
&lt;li&gt;Better offline and error support&lt;/li&gt;
&lt;li&gt;Smaller library size (AuroraLib has been mostly removed)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Version 2.25.2009&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;First draft public API&lt;/li&gt;
&lt;li&gt;Placeholder profile&lt;/li&gt;
&lt;li&gt;Placeholder Dashboard&lt;/li&gt;
&lt;li&gt;Account create, login, and logout&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;

</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/44</link><pubDate>Fri, 06 Nov 2009 00:55:44 GMT</pubDate><guid isPermaLink="false">a02f4980c6cf14e178bdccdb89e90ce8</guid></item><item><title>OpenFeint 2.4 Integration Changes</title><description>&lt;h2&gt;OpenFeintSettingDisableChat has been removed&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Instead use OpenFeintSettingDisableUserGeneratedContent&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Some new library dependencies have been added&lt;/h2&gt;
 &lt;ul&gt;
&lt;li&gt;CFNetwork&lt;/li&gt;
&lt;li&gt;CoreLocation&lt;/li&gt;
&lt;li&gt;MapKit (if building with SDK 3.0 or newer)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Automatically posting to facebook and twitter when unlocking an achievement is turned off by default.&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Set OpenFeintSettingPromptToPostAchievementUnlock to true to enable automatic posting of social notifications.&lt;/li&gt;
&lt;/ul&gt;</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/51</link><pubDate>Sat, 19 Dec 2009 18:32:00 GMT</pubDate><guid isPermaLink="false">a05d7c2b2b003d17fb95f38bee2d6ae6</guid></item><item><title>Versioning</title><description>&lt;div&gt;&lt;b&gt;Overview&lt;/b&gt;

&lt;p&gt;OpenFeint supports the concept of versioning OpenFeint resources
based on an application&amp;#8217;s Bundle Version. You can use this to
create new resources on the server and not show them to users of
older versions of your application. This is useful when developing
an update to an already released application. You can then add new
leaderbords, etc, that aren't visible in the previously released
version but only in your new version.&lt;/p&gt;
&lt;p&gt;The following resources can be versioned:&lt;br&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Leaderboards&lt;br&gt;&lt;/li&gt;
&lt;li&gt;Achievements&lt;br&gt;&lt;/li&gt;
&lt;li&gt;Chat Rooms&lt;br&gt;&lt;/li&gt;
&lt;li&gt;Challenges&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;Quick Start&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Versions are managed through the version tab in the developer
dash board. A min version and a max version have already been
created. Min version appears in all applications, max version
appear in no applications.&lt;/p&gt;
&lt;p&gt;When developing a new release that needs to be versioned create
a new version for it in the versions tab and name it appropriately.
The version number should match the bundle version of your
release.&lt;/p&gt;
&lt;p&gt;For any new achievements etc. belonging to this release set
their start version to the version of the release and end version
to max version. Start and end version are set when creating a new
achievement, leaderboard etc. These resources will now only appear
in your new release.&lt;/p&gt;
&lt;p&gt;Always set your currently released version to be the default
version. When people look at your achievements etc. from another
game they will only see resources visible to the default version of
your application. This prevents people from seeing any of your
resources in development while exploring in OpenFeint.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Known Issues&lt;/b&gt;&lt;br&gt;
When editing an existing resource the version drop downs always say
min and max. This is a bug when initializing the drop downs.
Setting them to the correct versions before saving works and the
resource is versioned properly.&lt;/p&gt;
&lt;p&gt;We will get in a fix asap!&lt;/p&gt;&lt;/div&gt;
</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/39</link><pubDate>Fri, 06 Nov 2009 00:28:34 GMT</pubDate><guid isPermaLink="false">afbe31da544ca2051dc9d7a5003fb6e7</guid></item><item><title>Featured Apps</title><description>&lt;h1&gt;Overview&lt;/h1&gt;
OpenFeint&amp;rsquo;s Featured Apps allows you as a developer to
promote paid versions or other titles to the player. You can populate
the list with applications you&amp;rsquo;ve created yourself or
highlight those of other developers.&amp;nbsp; Featured Apps appear to
the player in the OpenFeint Discovery Page under &amp;ldquo;Featured
Games&amp;rdquo; and &amp;ldquo;More Games&amp;rdquo;.&lt;br&gt;
&lt;br&gt;
&lt;h1&gt;Setting Up Featured Apps&lt;/h1&gt;
In order to use Featured Apps, you must first have an iPurchase page
set up for each game you would like to feature. &lt;br&gt;
&lt;br&gt;
In the developer dashboard, click on &amp;ldquo;Featured
Apps&amp;rdquo; in the Promotional Tools section, then click
&amp;ldquo;Add New Featured App&amp;rdquo;.&amp;nbsp; This will take
you to a page where you can either select one of your existing games or
enter the Client Application ID if the application you&amp;rsquo;d like
to feature.&lt;br&gt;
&lt;br&gt;
&lt;h2&gt;How do I find someone's Client
Application ID?&lt;/h2&gt;
You can only get this information directly from the other developer. We
encourage developers to contact one another when featuring
applications, however to make it easier you can also disclose your
application ID publicly so that other developers can feature your game
in their lists.&lt;br&gt;
&lt;br&gt;
&lt;h2&gt;How do I find my own Client
Application ID?&lt;/h2&gt;
Make sure you&amp;rsquo;re working on the correct game and click on
&amp;ldquo;App Home&amp;rdquo; in the Developer Dashboard. In the
description you&amp;rsquo;ll see a field called &amp;ldquo;Client
Application ID&amp;rdquo;.&amp;nbsp; This is your unique identifier
within our system for that application and the number you want to share
if another developer would like to feature your game.
</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/48</link><pubDate>Fri, 18 Dec 2009 01:40:42 GMT</pubDate><guid isPermaLink="false">0ba38e327d6b1baa2509fc72411d1286</guid></item><item><title>OpenFeint 2.5 - Introduction</title><description>&lt;span style="font-weight: bold;"&gt;What&amp;rsquo;s
New&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
OpenFeint 2.5 adds a new, easier to use API for most of
OpenFeint&amp;rsquo;s features.&amp;nbsp; The old API is still there
too making it easy to upgrade without having to change how existing
apps use OpenFeint. Check out some examples of cool things you can do &lt;a href="http://www.openfeint.com/developers/openfeint25"&gt;here&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Basic
Integration&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;The basic steps to integrate
and initialize OpenFeint are unchanged.&amp;nbsp; For a quick start,
refer to the &amp;ldquo;ReadMe.txt&amp;rdquo; file included in the SDK
download package.&amp;nbsp; More information is also available in the
OpenFeint online knowledge-base.&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Getting
A Feel For The New API&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
One way to get a feel for the new API is to walk through a tutorial
that makes use of one basic feature.&amp;nbsp; The following tutorial
shows how to unlock an achievement in a game using the new API:&lt;br&gt;
&lt;br&gt;
&lt;a
 href="http://www.openfeint.com/ofdeveloper/index.php/kb/article/000073"&gt;Unlock
Achievement&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
Another great way to get familiar with the API is to build the sample
app that comes with the OpenFeint SDK, look at its source code, trace
it in the debugger, experiment with your own changes, and cut and paste
the sample code into your own game.&amp;nbsp; Note that to build the
sample app you will have to paste your own product key into the sample
code
and add your own offline config file from your developer dashboard
account.&lt;br&gt;
&lt;br&gt;
&lt;span style="font-weight: bold;"&gt;Feature
Categories&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
OpenFeint 2.5 is divided into six categories of improved
API&amp;rsquo;s and two categories of entirely new features:&lt;br&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;a
 href="http://www.openfeint.com/ofdeveloper/index.php/kb/article/000076"&gt;User
&amp;amp; App Info&lt;/a&gt; -- provides
the means for developers to get basic information about the current
user, other known users, who their friends are, the last games
they&amp;rsquo;ve played, and information about featured games
associated with the current app.&lt;/li&gt;
  &lt;li&gt;&lt;a
 href="http://www.openfeint.com/ofdeveloper/index.php/kb/article/000077"&gt;Communicating
With Users&lt;/a&gt; -- provides the means
for sending social notifications, retrieving announcements addressed to
users, and giving users an easy way to invite their friends to try a
game.&lt;/li&gt;
  &lt;li&gt;&lt;a
 href="http://www.openfeint.com/ofdeveloper/index.php/kb/article/000078"&gt;Achievements&lt;/a&gt;
-- provides the means to unlock achievements and query information
about specific achievements associated with the current app.&lt;/li&gt;
  &lt;li&gt;&lt;a
 href="http://www.openfeint.com/ofdeveloper/index.php/kb/article/000079"&gt;Leaderboards&lt;/a&gt;
-- provides the means to submit high scores to leaderboards and query
information about leaderboards associated with the current app.&lt;/li&gt;
  &lt;li&gt;&lt;a
 href="http://www.openfeint.com/ofdeveloper/index.php/kb/article/000080"&gt;Challenges&lt;/a&gt;
-- provides the means for a player to challenge a friend to a game and
compare their performances.&lt;/li&gt;
  &lt;li&gt;&lt;a
 href="http://www.openfeint.com/ofdeveloper/index.php/kb/article/000081"&gt;Cloud
Storage&lt;/a&gt; -- provides the means to
store arbitrary &amp;ldquo;save game&amp;rdquo; data on OpenFeint
servers on behalf of the current user and game.&lt;/li&gt;
  &lt;li&gt;&lt;a
 href="http://www.openfeint.com/ofdeveloper/index.php/kb/article/000074"&gt;New
Multiplayer Support&lt;/a&gt; -- provides
match-up and turn based multi-player support.&lt;/li&gt;
  &lt;li&gt;&lt;a
 href="http://www.openfeint.com/ofdeveloper/index.php/kb/article/000075"&gt;New
RESTful Web Services&lt;/a&gt; -- provides
developers with the means to post leaderboard data on their own web
sites outside of the game.&lt;/li&gt;
&lt;/ol&gt;
Click on each category for more details.&amp;nbsp; Each category of
features is implemented by one or more code modules corresponding to
individual header files.&amp;nbsp; Class methods and properties are
further documented in the header files.
</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/82</link><pubDate>Tue, 06 Jul 2010 23:31:38 GMT</pubDate><guid isPermaLink="false">cdd47be52aacfab851246644cc0d6b3f</guid></item><item><title>Chat Room Moderation</title><description>OpenFeint also allows developers to appoint chat room
moderators. From the &lt;a href="https://api.openfeint.com/"&gt;developer
dashboard&lt;/a&gt; simply log in, select your game, then click
'Moderators'!&lt;/p&gt;
&lt;p&gt;&lt;b&gt;What if I don't appoint any moderators?&lt;/b&gt;&lt;br&gt;
All users have the ability to flag other users via the 'Report
Abuse' button on any player's profile. If a player is flagged
enough times then they will be banned.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;So why have any moderators?&lt;/b&gt;&lt;br&gt;
Moderators can actively monitor your chat rooms from any game
&lt;em&gt;and&lt;/em&gt; out of game using the &lt;a href=
"https://api.openfeint.com/moderator_dashboard"&gt;OpenFeint Moderator
Dashboard&lt;/a&gt;. &lt;em&gt;note: you must be logged in to access the
link.&lt;/em&gt; In addition, moderator bans take effect instantly
whereas multiple users must flag the same user in order for a ban
to be enacted.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;What rooms can a moderator moderate in?&lt;/b&gt;&lt;br&gt;
Coming soon, sorry :)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Cool, now how long do bans last for?&lt;/b&gt;&lt;br&gt;

Coming soon, sorry :)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Are there any basic guidelines for moderators to
follow?&lt;/b&gt;&lt;br&gt;
Moderators are expected to use their best judgement. Abrasive
language, harassment, and inappropriate conduct are not permitted
withing OpenFeint chat rooms. Abuse of the moderation system will
not be tolerated.</description><link>http://www.openfeint.com/ofdeveloper/index.php/kb/article/37</link><pubDate>Fri, 06 Nov 2009 00:26:27 GMT</pubDate><guid isPermaLink="false">d768095761de1a62b4ce264200eb2316</guid></item></channel></rss>
