Ir para o console

Fazer upgrade do app para iOS pelo Firebase.com

Este documento ajuda você a fazer upgrade do seu aplicativo Firebase.com para o novo Console do Firebase e as novas APIs.

Quatro etapas devem ser executadas:

  1. Fazer upgrade do projeto para o novo Console do Firebase.
  2. Instalar o SDK do Firebase.
  3. Atualizar o código do banco de dados.
  4. Atualizar o código de autenticação.

Você pode fazer upgrade para o novo console firebase.google.com a qualquer momento. Seus aplicativos continuarão funcionando. Atualize seu código quando você estiver pronto para usar alguns dos novos recursos do Firebase no seu aplicativo.

Importar o projeto para o novo Console do Firebase

  • Acesse o Console do Firebase e localize seu projeto em "Seus projetos atuais no Firebase.com".
  • Clique em Importar no projeto em que quer fazer upgrade.
    • Caso seu projeto esteja em um plano pago do firebase.com, você precisará configurar o faturamento dele no novo console. Suas informações de faturamento não são migradas automaticamente.
    • Selecione ou crie uma conta de faturamento. Após a importação, essa conta será responsável por todas as cobranças do projeto.
  • Seu conteúdo do Realtime Database e do Hosting é importado automática e instantaneamente para o Console do Firebase.
  • Seus dados de usuário são migrados automaticamente para o novo back-end de autenticação. Isso acontece em segundo plano, e seus usuários continuam a usar o aplicativo enquanto os dados são migrados. As inscrições e os logins dos usuários não são afetados. Enquanto o sistema migra as contas de usuário, você verá um ícone de carregamento na guia "Auth" do Console do Firebase.
  • Caso você tenha um código promocional para um aplicativo do Firebase.com, entre em contato conosco.

Instalar o SDK do Firebase

Não é necessário atualizar o código dos aplicativos imediatamente. O banco de dados e o código de autenticação existentes continuarão funcionando no seu projeto migrado. Mas, quando estiver pronto para usar alguns recursos novos do Firebase no seu aplicativo, você poderá Instalar o novo SDK do Firebase.

Observe que, ao iniciar o uso do novo SDK, o Google Analytics para Firebase será ativado automaticamente. Por padrão, os dados do Analytics aprimorarão outros recursos do Firebase e outros produtos do Google. Você pode controlar como os dados do Analytics são compartilhados nas suas configurações a qualquer momento. Saiba mais

Configurar seu app

Agora, seu app será configurado usando o arquivo GoogleService-Info.plist, que pode ser transferido por download no Console do Firebase. Para adicionar facilmente a configuração ao seu projeto, arraste o GoogleService-Info.plist que você transferiu para o projeto Xcode. Certifique-se de selecionar "Copy items if needed" para que ele seja adicionado ao diretório do seu projeto.

O arquivo GoogleService-Info.plist é processado pela classe FIRApp. No seu método application:didFinishLaunchingWithOptions: da classe AppDelegate, adicione a seguinte chamada:

Objective-C

[FIRApp configure];

Swift

FIRApp.configure()

Atualizar o código do banco de dados

Atualizar as dependências do CocoaPods

A maneira mais fácil de começar é alterando a dependência do CocoaPods. A partir da versão 3.x, o pod do Firebase tem subespecificações distintas para cada API:

ANTES

pod 'Firebase', '>= 2.5.1'
DEPOIS

pod 'Firebase/Database'

Execute pod update para receber novos pods. Seu app provavelmente terá agora uma série de erros de compilação ou avisos de que os nomes da API foram alterados. Este guia descreve como corrigir esses problemas.

Primeiro, substitua a linha #import se você estiver usando o Objective-C. No entanto, não haverá mudanças se você estiver usando o Swift.

ANTES

#import <Firebase/Firebase.h>
DEPOIS

@import Firebase

Receber uma referência do banco de dados

No SDK 3.x, as referências Firebase são substituídas por FIRDatabaseReference, e você precisará usar a classe FIRDatabase para obter uma referência inicial ao seu banco de dados. Então, depois de configurar FIRApp, você encontrará a referência de banco de dados no seu código da seguinte forma:

ANTES

Objective-C


Firebase *rootRef = [[Firebase alloc] initWithUrl:@"https://<YOUR-FIREBASE-APP>.firebaseio.com"];

Swift


var rootRef = Firebase(url:"https://<YOUR-FIREBASE-APP>.firebaseio.com")
DEPOIS

Objective-C


FIRDatabaseReference *rootRef= [[FIRDatabase database] reference];

Swift


var rootRef = FIRDatabase.database().reference()

Observe que o URL do seu banco de dados é determinado automaticamente a partir do arquivo GoogleService-Info.plist para que você não precise especificá-lo.

Ativar a persistência de disco

Se o app usar a persistência em disco, agora você poderá ativá-la por meio do objeto FIRDatabase:

ANTES

Objective-C


[Firebase defaultConfig].persistenceEnabled = YES;

Swift


Firebase.defaultConfig().persistenceEnabled = true
DEPOIS

Objective-C


[FIRDatabase database].persistenceEnabled = YES;

Swift


FIRDatabase.database().persistenceEnabled = true

Como no SDK 2.x, a ativação da persistência em disco precisa ser feita antes de outras chamadas ao banco de dados.

Atualizar referências de classe / método

Diversos tipos de bancos de dados foram renomeados no SDK 3.x para estar em conformidade com outras APIs. Veja na tabela abaixo algumas alterações a serem feitas:

Antes Depois
Firebase FIRDatabaseReference
FDataSnapshot FIRDataSnapshot
FirebaseHandle FIRDatabaseHandle
FEventType FIRDataEventType
FQuery FIRDatabaseQuery
FMutableData FIRMutableData
FTransactionResult FIRTransactionResult
FConfig FIRDatabase
FirebaseApp FIRDatabase
kFirebaseServerValueTimestamp [FIRServerValue timestamp]

Se não consegue encontrar uma classe ou método, consulte a documentação de referência do banco de dados.

Atualizar o código de autenticação

A funcionalidade Firebase Authentication agora reside por trás da própria classe FIRAuth. Portanto, as operações de autenticação agora são feitas em uma instância FIRAuth, em vez de em uma referência do Firebase.

Atualizar as dependências do CocoaPods

Agora que o Authentication reside no próprio módulo, primeiro você precisa adicionar uma dependência ao seu Podfile:

pod 'Firebase/Auth'

Você precisará executar pod update novamente depois de adicionar a dependência.

Fazer login de um usuário

Os métodos de autenticação funcionam de forma semelhante à anterior, mas agora estão no objeto FIRAuth com novos nomes, e FAuthData é agora substituído por FIRUser, por exemplo:

ANTES

Objective-C


[ref authAnonymouslyWithCompletionBlock:^(NSError *error, FAuthData *authData) {
    if (error) {
        NSLog(@"Sign in failed: %@", error.localizedDescription);
    } else {
        NSLog(@"Signed in with uid: %@", authData.uid);
    }
}];

Swift


ref.authAnonymouslyWithCompletionBlock { error, authData in
    if let error = error {
        print("Sign in failed:", error.localizedDescription)
    } else {
        print("Signed in with uid:", authData.uid)
    }
}
DEPOIS

Objective-C


[[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRUser *_Nullable user,
                                                  NSError *_Nullable error) {
    if (error) {
        NSLog(@"Sign in failed: %@", error.localizedDescription);
    } else {
        NSLog(@"Signed in with uid: %@", user.uid);
    }
}];

Swift


FIRAuth.auth()!.signInAnonymouslyWithCompletion() { (user, error) in
    if let error = error {
        print("Sign in failed:", error.localizedDescription)
    } else {
        print ("Signed in with uid:", user!.uid)
    }
}

Para ver a documentação sobre outros provedores de autenticação, consulte a classe FIRAuth ou o guia do Firebase Authentication.

Fazer login de um usuário com um token personalizado

A autenticação com tokens personalizados pelo cliente também funciona de forma semelhante à anterior. Este é um exemplo de como o login com um token personalizado funciona tanto na API 2.x como na nova:

ANTES

Objective-C


[ref authWithCustomToken:AUTH_TOKEN
     withCompletionBlock:^(NSError *error, FAuthData *authData) {
    if (error) {
        NSLog(@"Login Failed! %@", error);
    } else {
        NSLog(@"Login succeeded! %@", authData);
    }
}];

Swift


ref.authWithCustomToken(AUTH_TOKEN, withCompletionBlock: { error, authData in
    if error != nil {
        println("Login failed! \(error)")
    } else {
        println("Login succeeded! \(authData)")
    }
})
DEPOIS

Objective-C


[[FIRAuth auth] signInWithCustomToken:customToken
                           completion:^(FIRUser *_Nullable user,
                                        NSError *_Nullable error) {
                             // ...
                           }];

Swift


FIRAuth.auth()?.signIn(withCustomToken: customToken ?? "") { (user, error) in
  // ...
}

Os tokens personalizados gerados por você têm um novo formato. Use os SDKs Admin do Firebase para Node.js e Java caso queira criar tokens personalizados compatíveis com a nova API. Se preferir, é possível criar tokens personalizados usando uma biblioteca JWT de terceiros.

Os SDKs Admin do Firebase geram tokens personalizados que expiram depois de uma hora, ao contrário das bibliotecas de ajuda da API 2.x que, por padrão, geram tokens que expiram após 24 horas.

Desconectar um usuário

ANTES

Objective-C


[ref unauth];

Swift


ref.unauth()
DEPOIS

Objective-C


[[FIRAuth auth] signOut:nil];

Swift


try! FIRAuth.auth()!.signOut()

Monitorar estado da autenticação

ANTES

Objective-C


[ref observeAuthEventWithBlock:^(FAuthData *authData) {
    if (authData) {
        NSLog(@"User is signed in with uid: %@", authData.uid);
    } else {
        NSLog(@"No user is signed in.");
    }
}];

Swift


ref.observeAuthEventWithBlock({ authData in
    if authData != nil {
        print("User is signed in with uid:", authData.uid)
    } else {
        print("No user is signed in.")
    }
})
DEPOIS

Objective-C


[[FIRAuth auth] addAuthStateDidChangeListener:^(FIRAuth * _Nonnull auth, FIRUser * _Nullable user) {
    if (user) {
        NSLog(@"User is signed in with uid: %@", user.uid);
    } else {
        NSLog(@"No user is signed in.");
    }
  }];

Swift


FIRAuth.auth()!.addAuthStateDidChangeListener() { (auth, user) in
    if let user = user {
        print("User is signed in with uid:", user.uid)
    } else {
        print("No user is signed in.")
    }
}

O FIRAuth tem alguns recursos novos (vinculação de conta, mais provedores de autenticação etc.). Consulte o guia do Authentication e a documentação de referência desse recurso para mais detalhes.

Migrar logins existentes

Se os usuários fizeram login no seu aplicativo com um SDK legado, você precisará de um código para mantê-los conectados com o novo SDK. Do contrário, eles terão que fazer login novamente. Consulte uma amostra de código aberto para fazer isso no repositório Firebase Auth Migration Helpers do GitHub.

Atualizar o novo modelo de redefinição de senha

Se o aplicativo permitir que usuários façam login com autenticação de e-mail e senha, você provavelmente dará a estes usuários a opção de redefinir senha.

Depois do upgrade para o SDK novo, esses e-mails de redefinição de senha usam os novos modelos especificados no Console do Firebase. Atualize-os conforme as necessidades do seu aplicativo.

Atualizar as bibliotecas do Firebase

Se você usa uma das bibliotecas abaixo, será preciso fazer upgrade para a versão mais recente.

Biblioteca Versão aceita Recurso
GeoFire 1.2.x GitHub