2017-02-28 6 views
1

내 게임에서 앱 실행시 GameCenter 로그인 팝업이 자동으로 나타나지 않게하려고합니다. 그래서 대신 사용자가 로그인 할 수있는 GameCenter 버튼이 있습니다. 버튼을 누르면 로그인 화면이 나타납니다.GameCenter - 사용자가 이미 자격증 명을 입력 한 경우 로그인 사용자

그러나 로그인 한 후 다시 앱을 실행하면 사용자가 여전히 "로그인하지 않은 것 같습니다. 그들은 여전히 ​​버튼을 다시 눌러야 만하고 작은 배너가 "Welcome back, User!"라고 표시됩니다. 매번 버튼을 누르지 않아도 사용자를 자동으로 다시 로그인 할 수있는 방법이 있습니까? 이미 자격 증명을 입력했는데 왜 다시 인증해야합니까?

self.authenticatePlayer() 

그리고 여기에 인증 할 방법이다 : 나는 그들이 이미 로그인하면 사용자가 다시 환영 할 수있는 무언가가 필요

func authenticatePlayer() { 
     let localPlayer = GKLocalPlayer.localPlayer() 
     localPlayer.authenticateHandler = { 
      (view, error) in 

      if view != nil { 
       self.view?.window?.rootViewController?.presentViewController(view!, animated: true, completion: nil) 
      } else { 

      } 
     } 
    } 

사용자가 버튼을 누를 때 여기

, 내 코드입니다 이미 로그인하지 않은 경우 로그인하도록 요청하지 마세요.

+0

버튼 click.and에서 userDefault에 이름을 입력하고 재 로그인을 시도한 후에 userDefault 키에 저장된 사용자 이름이 있는지 확인하십시오. –

+0

@TusharSharma 죄송 합니다만 조금 혼란 스럽습니다. 오늘 GameCenter를 사용하기 시작했습니다. 나는 데이터를 저장하는 것에 익숙하지만, 사용자가 로그인 상태가되면 어딘가에서 상태를 저장할 수 있다고 말하면서 만해도 – Brejuro

+0

이 말을 사용합니다.그리고 두 번째로 다시 로그인하면 현재 상태가 그에 따라 조건을 작성하는지 다시 확인하십시오. –

답변

1

표시되는 동작을 이해하려면 인증 프로세스가 어떻게 작동하는지 살펴 봐야합니다.

인증 핸들러를 설정할 때 시작됩니다. 이것은 게임 센터에 시도하고 이야기하도록 앱에 알리는 신호입니다.

  1. 오류 : 인증 처리기의 완료 블록은 세 가지 조건을 가지고 로그인 뷰 컨트롤러가 플레이어가
  2. 이 전무 뷰 컨트롤러를받습니다 로그인하지 않은 당신을 알려줍니다 : 뭔가
  3. 는 뷰 컨트롤러를받습니다 잘못된 : 오류가없고보기 컨트롤러가 없다는 사실은 플레이어가 이미 로그인했음을 알리는 것입니다.

IOS가 사용자의 로그인 상태를 알고 있거나 (캐시 된 정보를 사용하여 로그인 상태를 가짜로 시도 함) 당신이 나가면 그 상황을 잃어 버립니다. 다시 시작할 때 인증 처리기를 설정하지 않으므로 사용자가 버튼을 누를 때까지 인증 상태를 확인하지 않으므로 앱이 사용자의 로그인 여부를 알 수 없습니다.

  • 가 인증 핸들러를 설정하고 가능한 한 빨리 귀하의 첫 번째의 ViewController의 viewDidLoad의 인증을 시작 :

    나는 다음과 같은 접근 방식은 당신이 찾고있는 무엇을 아주 가까이 얻을 것이라 생각합니다. 시작 순서에서 가능한 한 빨리하십시오.

  • 사용자가 인증되지 않으면 로그인보기 컨트롤러가 수신됩니다. 제시하지 마십시오. 대신, 저장하십시오. 사용자가 버튼을 누를 때까지/버튼을 누를 때까지 표시하지 마십시오. 사용자가 이미 로그인하면 게임이 시작되면
  • , 그들은 즉시 메시지를 다시 오신 것을 환영합니다, 사용자가 여전히 로그인되어 있기 때문에 계속 진행할 수 있습니다. 당신은 절약 시도 할 수