2013-03-13 5 views
5

ローカルプレーヤーの実名を知りたいが、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" 
    } 

} 
+0

問題を解決策で更新するか、または指定されたものからの正解を受け入れたものとしてマークしてください。ありがとう! – veducm

答えて

3

使用[GKLocalPlayer localPlayer]。

NSString *alias = [GKLocalPlayer localPlayer].alias 
NSString *name = [GKLocalPlayer localPlayer].displayName 
+0

レスポンスありがとうございますが、 "Me"を返します – Sinba

+1

エイリアスプロパティが実際の名前を返しました。うまくいった。 – user642252

4

ローカルユーザーのフルネームを取得するためにdisplayNameを使用することはできません。 Apple's documentationから:あなたのゲームは、特定のプレーヤーの詳細を必要とする場合

選手オブジェクトが選手

について詳細を提供する、それがゲームセンターに問い合わせを行うことにより、それらの詳細を取得します。そのプレーヤーのプレーヤー識別子を使用してプレーヤーの情報を取得します。 Game Kitは、これらの詳細をGKPlayerオブジェクトのゲームに戻します。

  • のdisplayName

    独自のユーザーインターフェイスでこのプレーヤーのために表示することができ、ユーザーが読み取り可能な文字列。たとえば、ネットワークの試合では、試合の各プレイヤーの表示名を表示して、相手が誰であるかを知ることができます。

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

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

可能な回避策:

たぶん、あなたはローカルのユーザーIDを取得し、そのIDのための選手のリストから、本当の名前を取得しようとするためにそれを使用することができます。しかし、あなたが自分の友人であるかどうかにかかわらず、それが取られるかどうかはわかりません。

関連する問題