分享

iOS游戏开发游戏功能之外的东西

 笔记小窝 2015-02-07
//分享功能

  1. <span style="font-size:24px;">NSString *initialString = @"Smash Bug! is a Great App! Have Fun with it!";  
  2.     NSURL *url = [NSURL URLWithString:@"https://itunes.apple.com/us/app/air-drum-*/id901397384?ls=1&mt=8"];  
  3.     //UIImage *showImage = [UIImage imageNamed:@"Default-568h@2x"];  
  4.     UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[initialString,url] applicationActivities:nil];  
  5.     [self presentViewController:activityViewController animated:YES completion:nil];</span>  

至于要实现分享到朋友圈,QQ空间等,大家可以在网上找到相应的分享代码。


(2)评分

就是点击之后直接跳转到App Store,这个非常简单也非常重要:

  1. <span style="font-size:24px;">NSString *str = @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=901397384";  
  2.     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];  
  3. </span>  

大家在使用时把id改成自己应用的id就ok了。


(3)GameCenter

这个国内可能用得比较少,更喜欢微信之类,但在国外恐怕还是比较重要的一个方式。


这个大家得在iTunesConnect上启用GameCenter,并创建相应的LeaderShip和Achievement。

Raywenderlich上有相应的Tutorial。


而对于使用其实就两个流程:

(1)验证本地玩家,如果没登陆,弹出窗口登陆。

  1. <span style="font-size:24px;">- (void)authenticateLocalPlayer  
  2. {  
  3.     GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];  
  4.       
  5.     localPlayer.authenticateHandler = ^(UIViewController *viewController,NSError *error) {  
  6.         //3  
  7.         [self setLastError:error];  
  8.           
  9.         if (viewController != nil) {  
  10.             [self setAuthenticationViewController:viewController];  
  11.         } else if ([GKLocalPlayer localPlayer].isAuthenticated) {  
  12.             _enableGameCenter = YES;  
  13.         } else {  
  14.             _enableGameCenter = NO;  
  15.         }  
  16.     };  
  17. }  
  18.   
  19. </span>  

  1. <span style="font-size:24px;">- (void)setAuthenticationViewController:(UIViewController *)authenticationViewController  
  2. {  
  3.     if (authenticationViewController != nil) {  
  4.         _authenticationViewController = authenticationViewController;  
  5.         [[NSNotificationCenter defaultCenter] postNotificationName:PresentAuthenticationViewController object:self];  
  6.     }  
  7. }  
  8. </span>  

(2)实时发送分数等数据到GameCenter

2.1发送Achievement

创建Achievement成就的方法:


  1. <span style="font-size:24px;">+ (GKAchievement *)reach10Achievement:(NSUInteger)numberOfReach  
  2. {  
  3.     CGFloat percent = numberOfReach/110 * 100.0;  
  4.       
  5.     GKAchievement *reachAchievement = [[GKAchievement alloc] initWithIdentifier:kSmashBugReach10AchievementId];  
  6.     reachAchievement.percentComplete = percent;  
  7.     reachAchievement.showsCompletionBanner = YES;  
  8.     return reachAchievement;  
  9.       
  10. }  
  11. </span>  

发送成就


  1. <span style="font-size:24px;">- (void)reportAchievements:(NSArray *)achievements  
  2. {  
  3.     if (!_enableGameCenter) {  
  4.         NSLog(@"Local play is not authenticated");  
  5.     }  
  6.       
  7.     [GKAchievement reportAchievements:achievements withCompletionHandler:^(NSError *error) {  
  8.         [self setLastError:error];  
  9.     }];  
  10. }  
  11. </span>  

2.2 发送得分等到LeaderShip(排行榜)


  1. <span style="font-size:24px;">- (void)reportScore:(int64_t)score forLeaderboardID:(NSString *)leaderboardID  
  2. {  
  3.     if (!_enableGameCenter) {  
  4.         NSLog(@"Local Play is not authenticated");  
  5.     }  
  6.       
  7.     GKScore *scoreRep</span><pre name="code" class="objc"><span style="font-size:24px;">除此之外,我们还想点击GameCenter按钮之类显示GameCenter的界面:  
  8. </span></pre><span style="font-size:24px;"><br>orter = [[GKScore alloc] initWithLeaderboardIdentifier:leaderboardID];    scoreReporter.value = score;    scoreReporter.context = 0;        NSArray *scores = @[scoreReporter];        [GKScore reportScores:scores withCompletionHandler:^(NSError *error) {        [self setLastError:error];    }];}</span>  

除此之外,我们还想点击GameCenter按钮之类显示GameCenter的界面:

  1. - (void)showGKGameCenterViewController:(UIViewController *)viewController  
  2. {  
  3.     if (!_enableGameCenter) {  
  4.         NSLog(@"Local Play is not authenticated");  
  5.     }  
  6.       
  7.     GKGameCenterViewController *gameCenterViewController = [[GKGameCenterViewController alloc] init];  
  8.       
  9.     gameCenterViewController.gameCenterDelegate = self;  
  10.       
  11.     gameCenterViewController.viewState = GKGameCenterViewControllerStateAchievements;  
  12.       
  13.     [viewController presentViewController:gameCenterViewController animated:YES completion:nil];  
  14. }  

(4)广告

iAd最基本的横幅广告现在实在是太简单了,iOS7:

在要显示广告的ViewController中添加一句代码就行:


  1. self.canDisplayBannerAds = YES;  

而Admob(我只用Google的广告)也很简单,到Admob注册后,然后下载其SDK,添加SDK到工程。

重要一步:添加-ObjC到Linker Flag

然后就简单了,只需以下代码copy到ViewController:


  1. // Admob  
  2.     [self addAdmob];  
  3.   
  4. #pragma mark - Admob  
  5.   
  6. - (void)addAdmob  
  7. {  
  8.     // Initialize the banner at the bottom of the screen.  
  9.     CGPoint origin = CGPointMake(0.0,  
  10.                                  self.view.frame.size.height -  
  11.                                  CGSizeFromGADAdSize(kGADAdSizeBanner).height);  
  12.       
  13.     // Use predefined GADAdSize constants to define the GADBannerView.  
  14.     self.adBanner = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner origin:origin];  
  15.       
  16.     // Note: Edit SampleConstants.h to provide a definition for kSampleAdUnitID before compiling.  
  17.     self.adBanner.adUnitID = ADMOB_ID;  
  18.     self.adBanner.delegate = self;  
  19.     self.adBanner.rootViewController = self;  
  20.     [self.view addSubview:self.adBanner];  
  21.     [self.adBanner loadRequest:[self request]];  
  22. }  
  23.   
  24. #pragma mark GADRequest generation  
  25.   
  26. - (GADRequest *)request {  
  27.     GADRequest *request = [GADRequest request];  
  28.       
  29.     // Make the request for a test ad. Put in an identifier for the simulator as well as any devices  
  30.     // you want to receive test ads.  
  31.     request.testDevices = @[  
  32.                             // TODO: Add your device/simulator test identifiers here. Your device identifier is printed to  
  33.                             // the console when the app is launched.  
  34.                             GAD_SIMULATOR_ID  
  35.                             ];  
  36.     return request;  
  37. }  
  38.   
  39. #pragma mark GADBannerViewDelegate implementation  
  40.   
  41. // We've received an ad successfully.  
  42. - (void)adViewDidReceiveAd:(GADBannerView *)adView {  
  43.     NSLog(@"Received ad successfully");  
  44. }  
  45.   
  46. - (void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestError *)error {  
  47.     NSLog(@"Failed to receive ad with error: %@", [error localizedFailureReason]);  
  48. }  

万事OK!根据游戏的具体情况再做改动!


(5)应用内购买

这个在我另一篇blog有讲,这里就不再说。


ok,就写这么多了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多