6

ローカルプレイヤーの本名を知りたいのですが、GKLocalPlayerのdisplayNameは本名ではなく「Me」を返します。

私が使用するコード:

 void (^completitionHandler)(NSArray *, NSError *) = ^(NSArray *players, NSError *error) { 

    for (GKPlayer *p in players) {
      NSString *alies = p.alies;
      NSString *name = p.displayName;
      NSLog(@"name = %@",name);   //not real name, just "Me"
    }

 }
4

3 に答える 3

4

displayNameを使用してローカル ユーザーのフル ネームを取得できるかどうかは不明です。Appleのドキュメントから:

Player オブジェクトは、プレーヤーに関する詳細を提供します

ゲームで特定のプレイヤーの詳細が必要な場合、ゲームは Game Center にクエリを発行してそれらの詳細を取得します。プレーヤーのプレーヤー ID を使用して、プレーヤーの情報を取得します。Game Kit は、これらの詳細を GKPlayer オブジェクトでゲームに返します。

  • 表示名:

    独自のユーザー インターフェイスでこのプレーヤーに対して表示できる、ユーザーが読み取り可能な文字列。たとえば、ネットワーク対戦では、対戦中の各プレイヤーの表示名を表示して、誰と対戦しているかを全員が認識できるようにすることができます。

    プレーヤーの表示名は、プレーヤーがデバイスで認証されたローカル プレーヤーのフレンドであるかどうかによって異なります。プレイヤーがローカル プレイヤーのフレンドである場合、表示名はプレイヤーの実際の名前になります。プレイヤーがフレンドでない場合、表示名はプレイヤーのエイリアスになります。

他のプレイヤーの名前を取得するためのものです。次に、ローカル プレーヤーの displayName を要求している場合、このデバイスの現在のユーザーであるため、"Me" が返されるのは理にかなっています。これはプライバシーポリシーに関係していると思います。

考えられる回避策:

おそらく、ローカル ユーザー ID を取得し、それを使用して、その ID のプレイヤーのリストから実名を取得しようとすることができます。でも、それがあなたの友達だと受け止められるかどうかはわかりません。

于 2013-03-13T15:21:39.533 に答える
3

[ GKLocalPlayer localPlayer ] を使用します。

NSString *alias = [GKLocalPlayer localPlayer].alias
NSString *name = [GKLocalPlayer localPlayer].displayName
于 2013-03-13T15:05:59.417 に答える