1

私は 2 つのアプリを持っています - 現時点ではゲーム センター グループの無料アプリと有料アプリです。

最初にiTunesで有料アプリを作成し、次にcom.xxx.yyy(例)ですべての実績識別子を作成します

次に、iTunesで無料アプリを作成し、ゲームのグループを作成し、実績の識別子が更新されますgrp.com.xxx.yyy This is ok and itunes shown free andpaid app in group with identifiers grp.com.xxx.yyy.

grp.com.xxx.yyyfrom free appで実績を報告またはロードしようとすると、すべて正常に動作します。報告されたすべての実績は、すべての iOS バージョンの無料アプリのゲーム センター内に反映されています。

今、有料アプリで同じ実績を報告すると、ゲームセンターは正常に報告され、ios 5 と ios 6 にも反映されますが、ios7 のゲームセンターには反映されません。いくつかのログを作成すると、報告したにもかかわらず、有料アプリがゲームセンターからロードされていることがわかりました(古い実績)com.xxx.yyygrp.com.xxx.yyy有料アプリで正常に報告された表示。報告された識別子が間違っているのに、ios 5 と ios 6 の実績リストに反映されていますが、ios 7 では反映されていません。また、iOS7で同じ成果のバナーが表示されるたびに、成果がすでに報告されているかどうかを確認しているときに、ゲームセンターから古い識別子を取得しているため、有料アプリが同じ成果を再度登録しようとします。これはすべての iOS バージョンで発生していますが、iOS 7 では有料アプリのライブ バージョンで毎回バナーのみが表示されます。そしてサンドボックスでは、そのバナーがまったくありませんでした。

この問題について知っている人がいて、助けてください。ゲームセンターのマルチプレイ対応とか関係ないの?

この種の問題を抱えている人もいます。このフォーラムで見ることができます。参照
用にここにもコードを書いています。

 [GKAchievement loadAchievementsWithCompletionHandler:^(NSArray *achievements, NSError *error)
     {
         if (error == nil)
         {
             for (GKAchievement* achievement in achievements)
                 if (achievement.percentComplete == 100) 
                 {
                     [achievementsarray addObject: achievement.identifier];

// Getting com.xxx.yyy(wrong/old) for paid app and grp.com.xxx.yyy (right) for free app here

                 }
         }

         NSMutableArray *reporttogc = [[[NSMutableArray alloc]init]autorelease];
         for (int i = 0; i< [[[results valueForKey:@"Achivement"] valueForKey:@"identifier"] count]; i++) {
             GKAchievement *achievement = [[GKAchievement alloc] initWithIdentifier:[NSString stringWithFormat:@"%@",[[[results valueForKey:@"Achivement"]objectAtIndex:i] valueForKey:@"identifier"]]]; 

// For free and paid both app have passing same identifier here - grp.com.xxx.yyy

             achievement.percentComplete = [[[[results valueForKey:@"Achivement"]objectAtIndex:i] valueForKey:@"value"]doubleValue];
             achievement.showsCompletionBanner = YES;

             if (![achievementsarray containsObject:achievement.identifier]) 
             {

                 [reporttogc addObject:achievement];

             }

             [achievement release];
         }

         if([[[UIDevice currentDevice]systemVersion]intValue]==5)
         {
             for (GKAchievement* achievement in reporttogc)
             {

                 [self reportAchievementIdentifier:achievement.identifier percentComplete:achievement.percentComplete];

             }

         }
         else if ([[[UIDevice currentDevice]systemVersion]intValue]>=6)
         {
             [GKAchievement reportAchievements:reporttogc withCompletionHandler:^(NSError *error)
              {

                  if (error != nil)  
                  {

                      NSLog(@"Error in reporting achievements: %@", error);

                  }
                  else
                  {

                      NSLog(@"sucess:achievements");

                  }
              }];
         } 
     }];
4

0 に答える 0