[MÚSICA] E aí, pessoal, tudo bem? Agora que temos as informações do Game Center configuradas no iTunes Connect, vamos aprender como utilizá-las no nosso aplicativo. Temos aqui aplicativo simples que tem uma label representando a nossa pontuação, e botão + que incrementa em 1 esse valor. Tem botão que mostrará a tela de Leaderboard e outro que mostrará a tela de Achievements do Game Center. Se você não sabe como criar esse aplicativo pelo Story Board, assista o primeiro curso desse programa de cursos integrados. O link está no material de apoio. Você pode também incluir o Game Center direto no código de algum jogo que fizemos nesse curso usando SpriteKit. Estamos mostrando como incluir Game Center no aplicativo sem SpriteKit apenas para exemplificar que podemos também incluir o Game Center em aplicativos que não são jogos. No caso, a Label representa a pontuação do seu jogo, e o botão +, a função AddScore que soma pontos quando o jogador pega uma moeda, por exemplo. Os botões Leaderboard e Achievements você pode incluir no menu do seu jogo. Vamos agora incluir o Game Center. Clique no seu projeto, na target, e coloque o Bundle Identifier exatamente igual ao que escolhemos no iTunes Connect. Nessa aba General, você não não conseguirá mudar o Bundle Identifier porque ele utiliza o nome do projeto como padrão. Vamos mudar na aba Info. Aqui onde está escrito Bundle Identifier, vamos digitar o identificador que escolhemos no iTunes Connect. Feito isso, clique em Capabilities e ative o Game Center. O Xcode irá pedir com que você associe a sua conta de desenvolvedor. Clique em Add e digite a sua conta. Clique em Choose. O Xcode automaticamente ''linkará'' o seu projeto com a sua conta, já com todas as configurações necessárias para integrar com o Game Center. Agora vamos voltar para o ViewController.swift, e vamos incluir a biblioteca do Game Kit. A primeira coisa que devemos fazer é autenticar o jogador logo que ele entra no aplicativo. [SEM_ÁUDIO] Vamos criar uma variável que diz se o Game Center está ativado ou não. Na função viewDidLoad vamos chamar uma função que autentica o usuário. E vamos criar essa função. A função que autentica o jogador cria uma variável do tipo Local Player, e envia pedido de autenticação. Nós temos que fornecer uma função que lida com a resposta do pedido de autenticação. [SEM_ÁUDIO] Essa função recebe como parâmetro UIViewController, e NSError. Se na resposta de pedido de autenticação o valor de View Controller é nulo, significa que a tela de login do Game Center deve ser mostrada. Então é chamada a função PresentViewController. Caso contrário, se não há uma tela para ser mostrada, verificamos se o jogador está realmente autenticado. Se ele estiver autenticado, nós atualizamos a variável GameCenterEnabled como true. Caso contrário, como false. Uma vez que o jogador está autenticado, vamos criar uma função que envia a pontuação para o Game Center. Essa função reportScore recebe como parâmetro inteiro de pontuação. Ela primeiro cria uma variável do tipo GKScore que recebe como parâmetro o identificador que criamos no iTunes Connect para o nosso Leader Board. Depois temos que configurar o valor que será enviado. Este valor deve ser convertido para Int64. E por fim, enviamos a pontuação para o Game Center que também deve ser fornecida uma função que lida com a resposta de envio de pontuação. Essa função recebe como parâmetro NSError. Se esse erro for diferente de nulo, imprimimos esse erro, caso contrário, imprimimos que o Score foi enviado, e o valor do Score. Vamos fazer que a cada toque do botão + esse Score seja enviado para o Game Center. Vamos criar uma função que faz o pedido de conquista. Essa função recebe como parâmetro uma string que é identificador de conquista que criamos no iTunes Connect, e recebe como parâmetro também a porcentagem completa dessa conquista. Primeiro é criado uma variável do tipo GKAchievements, que recebe como parâmetro identificador da conquista. Depois é configurada a porcentagem completa dessa conquista e é configurada a variável showsCompletionBanner, para que banner seja mostrado quando o jogador ganhar uma conquista. E por fim, enviado o pedido de conquista para o Game Center, que também recebe como parâmetro vetor de Achievements e uma função que lida com a resposta de pedido de conquista. Essa função recebe também como parâmetro NSError e se esse erro for diferente de nulo, ele é impresso na tela, caso contrário, é impresso conquista enviada. Vamos definir as condições de conquistas ao apertar o botão +. Se a pontuação for igual a três, vamos enviar pedido de conquista passando como parametro o Id da conquista 1, e a porcentagem 100%. Também vamos enviar o pedido de conquista 2 atualizando o valor da porcentagem a cada vez que o botão é clicado. Como a conquista 2 é ganhar 10 pontos, a cada ponto ganho é equivalente a 10% completo da conquista. Assim, quando ele tiver 10 pontos, será enviado pedido de 100% dessa conquista. Por fim, vamos criar uma função que mostrará a interface do Game Center no nosso aplicativo. Para isso é necessário incluir delegate na nossa ViewController. Precisamos implementar a função de delegate que remove a tela do Game Center do nosso aplicativo. Essa função esconde a ViewController do Game Center quando o usuário tiver terminado de usá-la. Vamos criar agora a função que mostra o ViewController da Game Center. Essa função recebe como parâmetro Id que serve para dizer se ela deve mostrar uma LeaderBoard ou os Achievements. Primeiro é criada uma variável de ViewController da Game Center. Então é associado o delegate dessa ViewController e é configurado o estado do Game Center que vai ser mostrado. Se o estado for uma Leader Board, então devemos configurar o Id de LeaderBoard que vai ser mostrado. Se o estado for Achievements não é necessário configurar o Id. E por fim, é mostrado o ViewController do Game Center. Nós mostramos a tela de Game Center apenas se o usuário estiver autenticado. Se o usuário não estiver autenticado, devemos mostrar uma mensagem para o jogador que o Game Center não está ativado. Por fim, vamos implementar a ação do botão Leader Board e do botão Achievements. Essas funções tentam primeiro autenticar o usuário para depois mostrar o Leader Board ou mostrar os Achievements. [SEM_ÁUDIO] Vamos rodar no simulador para ver o resultado. Você pode notar que logo depois que o aplicativo é carregado, a tela de login do Game Center é mostrada para o usuário. [SEM_ÁUDIO] Vamos fazer o login de teste. [SEM_ÁUDIO] Aqui em cima podemos ver que eu estou logado no Game Center. O botão + incrementa em 1 a pontuação. Podemos ver que eu ganhei a conquista dos 3 pontos. Se clicarmos no botão de Achievements, será mostrada a tela de conquistas do Game Center. Podemos ver que eu ganhei a conquista de 3 pontos. E a conquista de 10 pontos está 30% completa. Vamos ganhar os 10 pontos para conseguir 100% dessa conquista. [SEM_ÁUDIO] E chegamos a 10 pontos. O banner foi mostrado que eu acumulei 10 pontos e ganhei a essa conquista. E se clicarmos os Achievements podemos ver essa conquista 100% completa. Com isso você acabou de aprender como integrar as Leader Boards Achievements no seu aplicativo. Caso você tenha se tornado membro no programa de desenvolvedores Apple, como desafio, implemente Leaderboard e no mínimo 3 conquistas para o jogo Alien Escape que implementamos no terceiro módulo desse curso. Até a próxima.