標籤:ios 遊戲 遊戲開發 熱門排行榜
對於一個遊戲的開發,我們除了完成遊戲的功能之外,還有多少東西我們需要考慮呢?
很多,也很煩!
但做過一遍之後下一次就會很簡單。
都有什麼東西我們想添加到遊戲當中呢?
(1)分享功能
(2)評分功能
(3)遊戲中心(GameCenter)
(4)廣告(iAd以及其他廣告比如Admob)
(5)在應用程式內購買
(6)。。。
這些功能並不是完全必要的,要根據情況考慮。但比如分享,評分,這些功能能提高一個遊戲的擴散速度,顯示是值得每一個遊戲都添加的功能。
下面稍微總結一下每一個功能的基本用法。
PS:這隻是一個總結帖,具體每個功能的用法,網上都有相應的Tutorial。
(1)分享功能
最簡單最直接的方法就是利用iOS內建的分享功能,使用UIActivityViewController:
NSString *initialString = @"Smash Bug! is a Great App! Have Fun with it!"; NSURL *url = [NSURL URLWithString:@"https://itunes.apple.com/us/app/air-drum-*/id901397384?ls=1&mt=8"]; //UIImage *showImage = [UIImage imageNamed:@"[email protected]"]; UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[initialString,url] applicationActivities:nil]; [self presentViewController:activityViewController animated:YES completion:nil];
至於要實現分享到朋友圈,QQ空間等,大家可以在網上找到相應的分享代碼。
(2)評分
就是點擊之後直接跳轉到App Store,這個非常簡單也非常重要:
NSString *str = @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=901397384"; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
大家在使用時把id改成自己應用的id就ok了。
(3)GameCenter
這個國內可能用得比較少,更喜歡之類,但在國外恐怕還是比較重要的一個方式。
這個大家得在iTunesConnect上啟用GameCenter,並建立相應的LeaderShip和Achievement。
Raywenderlich上有相應的Tutorial。
而對於使用其實就兩個流程:
(1)驗證本地玩家,如果沒登陸,快顯視窗登陸。
- (void)authenticateLocalPlayer{ GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer]; localPlayer.authenticateHandler = ^(UIViewController *viewController,NSError *error) { //3 [self setLastError:error]; if (viewController != nil) { [self setAuthenticationViewController:viewController]; } else if ([GKLocalPlayer localPlayer].isAuthenticated) { _enableGameCenter = YES; } else { _enableGameCenter = NO; } };}
- (void)setAuthenticationViewController:(UIViewController *)authenticationViewController{ if (authenticationViewController != nil) { _authenticationViewController = authenticationViewController; [[NSNotificationCenter defaultCenter] postNotificationName:PresentAuthenticationViewController object:self]; }}
(2)即時發送分數等資料到GameCenter
2.1發送Achievement
建立Achievement成就的方法:
+ (GKAchievement *)reach10Achievement:(NSUInteger)numberOfReach{ CGFloat percent = numberOfReach/10 * 100.0; GKAchievement *reachAchievement = [[GKAchievement alloc] initWithIdentifier:kSmashBugReach10AchievementId]; reachAchievement.percentComplete = percent; reachAchievement.showsCompletionBanner = YES; return reachAchievement; }
發送成就
- (void)reportAchievements:(NSArray *)achievements{ if (!_enableGameCenter) { NSLog(@"Local play is not authenticated"); } [GKAchievement reportAchievements:achievements withCompletionHandler:^(NSError *error) { [self setLastError:error]; }];}
2.2 發送得分等到LeaderShip(熱門排行榜)
- (void)reportScore:(int64_t)score forLeaderboardID:(NSString *)leaderboardID{ if (!_enableGameCenter) { NSLog(@"Local Play is not authenticated"); } GKScore *scoreRep除此之外,我們還想點擊GameCenter按鈕之類顯示GameCenter的介面:
orter = [[GKScore alloc] initWithLeaderboardIdentifier:leaderboardID]; scoreReporter.value = score; scoreReporter.context = 0; NSArray *scores = @[scoreReporter]; [GKScore reportScores:scores withCompletionHandler:^(NSError *error) { [self setLastError:error]; }];}
除此之外,我們還想點擊GameCenter按鈕之類顯示GameCenter的介面:
- (void)showGKGameCenterViewController:(UIViewController *)viewController{ if (!_enableGameCenter) { NSLog(@"Local Play is not authenticated"); } GKGameCenterViewController *gameCenterViewController = [[GKGameCenterViewController alloc] init]; gameCenterViewController.gameCenterDelegate = self; gameCenterViewController.viewState = GKGameCenterViewControllerStateAchievements; [viewController presentViewController:gameCenterViewController animated:YES completion:nil];}
(4)廣告
iAd最基本的橫幅廣告現在實在是太簡單了,iOS7:
在要顯示廣告的ViewController中添加一句代碼就行:
self.canDisplayBannerAds = YES;
而Admob(我只用Google的廣告)也很簡單,到Admob註冊後,然後下載其SDK,添加SDK到工程。
重要一步:添加-ObjC到Linker Flag
然後就簡單了,只需以下代碼copy到ViewController:
// Admob [self addAdmob];#pragma mark - Admob- (void)addAdmob{ // Initialize the banner at the bottom of the screen. CGPoint origin = CGPointMake(0.0, self.view.frame.size.height - CGSizeFromGADAdSize(kGADAdSizeBanner).height); // Use predefined GADAdSize constants to define the GADBannerView. self.adBanner = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner origin:origin]; // Note: Edit SampleConstants.h to provide a definition for kSampleAdUnitID before compiling. self.adBanner.adUnitID = ADMOB_ID; self.adBanner.delegate = self; self.adBanner.rootViewController = self; [self.view addSubview:self.adBanner]; [self.adBanner loadRequest:[self request]];}#pragma mark GADRequest generation- (GADRequest *)request { GADRequest *request = [GADRequest request]; // Make the request for a test ad. Put in an identifier for the simulator as well as any devices // you want to receive test ads. request.testDevices = @[ // TODO: Add your device/simulator test identifiers here. Your device identifier is printed to // the console when the app is launched. GAD_SIMULATOR_ID ]; return request;}#pragma mark GADBannerViewDelegate implementation// We‘ve received an ad successfully.- (void)adViewDidReceiveAd:(GADBannerView *)adView { NSLog(@"Received ad successfully");}- (void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestError *)error { NSLog(@"Failed to receive ad with error: %@", [error localizedFailureReason]);}
萬事OK!根據遊戲的具體情況再做改動!
(5)在應用程式內購買
這個在我另一篇blog有講,這裡就不再說。
ok,就寫這麼多了。