Sequência de inicialização
A inicialização tem quatro etapas. A primeira é opcional; as três restantes são obrigatórias.Etapa 1: definir hooks de memória personalizados (opcional)
Se o seu título usa um alocador de memória personalizado, chame PFMemSetFunctions antes de qualquer outra API do PlayFab. Isso direciona todas as alocações de memória do SDK para seus próprios retornos de chamadaalloc e free.
PFMemSetFunctions deve ser chamado antes de PFInitialize. Ele não pode ser chamado novamente depois que os hooks forem definidos.
Etapa 2: inicializar o PlayFab Core
PFInitialize configura o estado global do SDK, incluindo a camada HTTP e a fila de tarefas em segundo plano. A assinatura exata varia de acordo com a plataforma.Windows, Linux, iOS e macOS
nullptr para usar a fila padrão do pool de threads.
Android
No Android, você também deve fornecer a Java VM e o contexto do aplicativo para que o SDK possa inicializar o libHttpClient:Se você não chamar PFInitialize explicitamente, PFServicesInitialize o chamará internamente com os parâmetros padrão. Isso é adequado para a maioria dos títulos. No entanto, se você estiver usando hooks de memória personalizados por meio de PFMemSetFunctions, deverá chamar PFInitialize por conta própria; caso contrário, PFServicesInitialize inicializará o Core antes que seus hooks de memória entrem em vigor, e o SDK usará as rotinas de alocação padrão.
Etapa 3: criar uma configuração de serviço
PFServiceConfigCreateHandle cria um identificador que informa ao SDK qual título e qual ponto de extremidade do PlayFab usar. Você encontrará ambos os valores no Game Manager.Etapa 4: inicializar o PlayFab Services
PFServicesInitialize configura a camada Services (Inventory, Leaderboards, Friends e assim por diante) sobre o Core.Windows, Linux, iOS e macOS
nullptr.
Android
No Android, passe um struct HCInitArgs que contenha a Java VM e o contexto do aplicativo:Ciclo de vida de PFServiceConfigHandle
Um PFServiceConfigHandle é um identificador com contagem de referências. O SDK gerencia seu tempo de vida interno por meio da contagem de referências, mas você é responsável por fechar todos os identificadores que possui.Duplicando um identificador
Use PFServiceConfigDuplicateHandle quando precisar compartilhar uma configuração de serviço entre componentes que gerenciam seus próprios tempos de vida:Sequência de desligamento
O desligamento é o inverso da inicialização. Você deve desinicializar o Services antes do Core, e ambas as chamadas são assíncronas.Etapa 1: fechar todos os identificadores abertos
Antes de desmontar o SDK, feche todos os PFEntityHandle e PFServiceConfigHandle que você possui:Etapa 2: desinicializar o Services
PFServicesUninitializeAsync desmonta a camada Services. Aguarde a conclusão antes de prosseguir.Etapa 3: desinicializar o Core
Depois que a limpeza do Services terminar, chame PFUninitializeAsync para desmontar o Core:Se você não chamou PFInitialize explicitamente, pode ignorar PFUninitializeAsync. Nesse caso, PFServicesUninitializeAsync cuida da limpeza do Core automaticamente. No entanto, se você chamou PFInitialize por conta própria, deverá chamar PFUninitializeAsync por conta própria.
