Przekazywanie stanu w działaniach e-mail

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Możesz przekazać stan za pomocą adresu URL kontynuacji podczas wysyłania działań e-mail w celu zresetowania hasła lub weryfikacji adresu e-mail użytkownika. Zapewnia to użytkownikowi możliwość powrotu do aplikacji po zakończeniu akcji. Ponadto można określić, czy łącze do akcji wysyłanej pocztą e-mail ma być obsługiwane bezpośrednio z aplikacji mobilnej, gdy jest ona instalowana, a nie ze strony internetowej.

Może to być niezwykle przydatne w następujących typowych scenariuszach:

  • Użytkownik, który nie jest aktualnie zalogowany, może próbować uzyskać dostęp do zawartości, która wymaga zalogowania się użytkownika. Jednak użytkownik mógł zapomnieć swoje hasło i w związku z tym wyzwolić przepływ resetowania hasła. Pod koniec przepływu użytkownik spodziewa się wrócić do sekcji aplikacji, do której próbował uzyskać dostęp.

  • Aplikacja może oferować dostęp tylko do zweryfikowanych kont. Na przykład aplikacja biuletynu może wymagać od użytkownika weryfikacji adresu e-mail przed subskrypcją. Użytkownik przejdzie przez proces weryfikacji adresu e-mail i oczekuje, że zostanie zwrócony do aplikacji, aby zakończyć subskrypcję.

  • Ogólnie rzecz biorąc, gdy użytkownik rozpoczyna proces resetowania hasła lub weryfikacji adresu e-mail w aplikacji Apple, oczekuje, że zakończy proces w aplikacji; umożliwia to możliwość przekazania stanu przez adres URL Continue.

Możliwość przekazywania stanu przez adres URL kontynuacji to potężna funkcja oferowana przez Firebase Auth, która może znacznie poprawić wrażenia użytkownika.

Przekazywanie stanu/kontynuacji adresu URL w działaniach e-mail

Aby bezpiecznie przekazywać dalszy adres URL, domena dla tego adresu URL musi być umieszczona na białej liście w konsoli Firebase . Odbywa się to w sekcji Uwierzytelnianie , dodając tę ​​domenę do listy autoryzowanych domen na karcie Metoda logowania , jeśli jeszcze jej tam nie ma.

Instancję FIRActionCodeSettings należy podać podczas wysyłania wiadomości e-mail dotyczącej resetowania hasła lub wiadomości e-mail weryfikacyjnej. Ten interfejs przyjmuje następujące parametry:

Szybki

Parametr Rodzaj Opis
URL Strunowy

Ustawia link (stan/kontynuuj adres URL), który ma różne znaczenia w różnych kontekstach:

  • Gdy link jest obsługiwany w widżetach akcji internetowej, jest to precyzyjny link w parametrze zapytania continueUrl .
  • Gdy link jest obsługiwany bezpośrednio w aplikacji, jest to parametr zapytania continueUrl w precyzyjnym linku linku dynamicznego.
iOSBundleID Strunowy Ustawia identyfikator pakietu. Spowoduje to próbę otwarcia łącza w aplikacji Apple, jeśli jest ona zainstalowana. Aplikację należy zarejestrować w Konsoli. Jeśli nie podano identyfikatora pakietu, wartość tego pola jest ustawiona na identyfikator pakietu głównego pakietu aplikacji.
androidPackageName Strunowy Ustawia nazwę pakietu Android. Spowoduje to próbę otwarcia łącza w aplikacji na Androida, jeśli jest ona zainstalowana.
androidInstallIfNotAvailable Bool Określa, czy zainstalować aplikację na Androida, jeśli urządzenie ją obsługuje, a aplikacja nie jest jeszcze zainstalowana. Jeśli to pole zostanie podane bez nazwypakietu, zostanie zgłoszony błąd wyjaśniający, że należy podać nazwępakietu w połączeniu z tym polem.
androidMinimumVersion Strunowy Minimalna wersja aplikacji obsługiwana w tym przepływie. Jeśli określono minimalną wersję i zainstalowana jest starsza wersja aplikacji, użytkownik zostanie przeniesiony do Sklepu Play, aby zaktualizować aplikację. Aplikację na Androida należy zarejestrować w Konsoli.
handleCodeInApp Bool Czy link do akcji w wiadomości e-mail zostanie najpierw otwarty w aplikacji mobilnej, czy jako link internetowy. Wartość domyślna to fałsz. Po ustawieniu na true link z kodem działania zostanie wysłany jako link uniwersalny lub link do aplikacji na Androida i zostanie otwarty przez aplikację, jeśli jest zainstalowana. W fałszywym przypadku kod zostanie najpierw wysłany do widżetu internetowego, a następnie, gdy kontynuujesz, przekieruje do aplikacji, jeśli jest zainstalowana.
dynamicLinkDomain Strunowy Ustawia domenę łącza dynamicznego (lub subdomenę), która ma być używana dla bieżącego łącza, jeśli ma być otwierane za pomocą Linków dynamicznych Firebase. Ponieważ w jednym projekcie można skonfigurować wiele domen łączy dynamicznych, to pole umożliwia jednoznaczny wybór jednej z nich. Jeśli nie podano żadnej, domyślnie używana jest pierwsza domena.

Cel C

Parametr Rodzaj Opis
URL NSString

Ustawia link (stan/kontynuuj adres URL), który ma różne znaczenia w różnych kontekstach:

  • Gdy link jest obsługiwany w widżetach akcji internetowej, jest to precyzyjny link w parametrze zapytania continueUrl .
  • Gdy link jest obsługiwany bezpośrednio w aplikacji, jest to parametr zapytania continueUrl w precyzyjnym linku linku dynamicznego.
iOSBundleID NSString Ustawia identyfikator pakietu. Spowoduje to próbę otwarcia łącza w aplikacji Apple, jeśli jest ona zainstalowana. Aplikację należy zarejestrować w Konsoli.
androidPackageName NSString Ustawia nazwę pakietu Android. Spowoduje to próbę otwarcia łącza w aplikacji na Androida, jeśli jest ona zainstalowana.
androidInstallIfNotAvailable BOOL określa, czy zainstalować aplikację na Androida, jeśli urządzenie ją obsługuje, a aplikacja nie jest jeszcze zainstalowana. Jeśli to pole zostanie podane bez nazwypakietu, zostanie zgłoszony błąd wyjaśniający, że należy podać nazwępakietu w połączeniu z tym polem.
androidMinimumVersion NSString Minimalna wersja aplikacji obsługiwana w tym przepływie. Jeśli określono minimalną wersję i zainstalowana jest starsza wersja aplikacji, użytkownik zostanie przeniesiony do Sklepu Play, aby zaktualizować aplikację. Aplikację na Androida należy zarejestrować w Konsoli.
handleCodeInApp BOOL Czy link do akcji w wiadomości e-mail zostanie najpierw otwarty w aplikacji mobilnej, czy jako link internetowy. Wartość domyślna to fałsz. Po ustawieniu na true link z kodem działania zostanie wysłany jako link uniwersalny lub link do aplikacji na Androida i zostanie otwarty przez aplikację, jeśli jest zainstalowana. W fałszywym przypadku kod zostanie najpierw wysłany do widżetu internetowego, a następnie, gdy kontynuujesz, przekieruje do aplikacji, jeśli jest zainstalowana.
dynamicLinkDomain NSString Ustawia domenę łącza dynamicznego (lub subdomenę), która ma być używana dla bieżącego łącza, jeśli ma być otwierane za pomocą Linków dynamicznych Firebase. Ponieważ w jednym projekcie można skonfigurować wiele domen łączy dynamicznych, to pole umożliwia jednoznaczny wybór jednej z nich. Jeśli nie podano żadnej, domyślnie używana jest pierwsza domena.

Poniższy przykład ilustruje, jak wysłać link weryfikacyjny w wiadomości e-mail, który otworzy się najpierw w aplikacji mobilnej jako link dynamiczny Firebase przy użyciu niestandardowej domeny linku dynamicznego example.page.link (aplikacja na iOS com.example.ios lub aplikacja na Androida com.example.android , na którym aplikacja zostanie zainstalowana, jeśli nie została jeszcze zainstalowana, a minimalna wersja to 12 ). Precyzyjny link będzie zawierał ładunek dalszego adresu URL https://www.example.com/?email=user@example.com .

Szybki


var actionCodeSettings =  ActionCodeSettings.init()
actionCodeSettings.canHandleInApp = true
let user = Auth.auth().currentUser()
actionCodeSettings.URL =
    String(format: "https://www.example.com/?email=%@", user.email)
actionCodeSettings.iOSbundleID = Bundle.main.bundleIdentifier!
actionCodeSettings.setAndroidPakageName("com.example.android",
                                         installIfNotAvailable:true,
                                         minumumVersion:"12")
// When multiple custom dynamic link domains are defined, specify which one to use.
actionCodeSettings.dynamicLinkDomain = "example.page.link"
user.sendEmailVerification(withActionCodeSettings:actionCodeSettings { error in
  if error {
    // Error occurred. Inspect error.code and handle error.
    return
  }
  // Email verification sent.
})

Cel C

 FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init];
 actionCodeSettings.handleCodeInApp = YES;
 FIRUser *user = [FIRAuth auth].currentUser;
 NSString *urlString =
     [NSString stringWithFormat:@"https://www.example.com/?email=%@", user.email];
 actionCodeSettings.URL = [NSURL URLWithString:urlString];
 actionCodeSettings.iOSBundleID = [NSBundle mainBundle].bundleIdentifier;
 // When multiple custom dynamic link domains are defined, specify which one to use.
 actionCodeSettings.dynamicLinkDomain = @"example.page.link";
 [actionCodeSettings setAndroidPackageName:@"com.example.android"
                     installIfNotAvailable:YES
                            minimumVersion:'12'];
 [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings
                                        completion:^(NSError *_Nullable error) {
   if (error) {
     // Error occurred. Inspect error.code and handle error.
     return;
   }
   // Email verification sent.
 }];

Firebase Auth używa Firebase Dynamic Links podczas wysyłania linku, który ma zostać otwarty w aplikacji mobilnej. Aby korzystać z tej funkcji, należy skonfigurować Linki dynamiczne w konsoli Firebase.

  1. Włącz Linki dynamiczne Firebase:

    1. W konsoli Firebase otwórz sekcję Linki dynamiczne .
    2. Jeśli nie zaakceptowałeś jeszcze warunków Dynamic Links i utworzyłeś domenę Dynamic Links, zrób to teraz.

      Jeśli masz już utworzoną domenę Dynamic Links, zanotuj to. Domena Dynamic Links zazwyczaj wygląda jak w następującym przykładzie:

      example.page.link

      Ta wartość będzie potrzebna podczas konfigurowania aplikacji Apple lub Android do przechwytywania łącza przychodzącego.

  2. Konfiguracja aplikacji na Androida:

    1. Jeśli planujesz obsługiwać te łącza z aplikacji na Androida, nazwę pakietu Androida należy określić w ustawieniach projektu Firebase Console. Dodatkowo należy podać SHA-1 i SHA-256 certyfikatu aplikacji.
    2. Musisz także skonfigurować filtr intencji dla precyzyjnego linku w pliku AndroidManifest.xml.
    3. Więcej informacji na ten temat znajdziesz w instrukcjach odbierania linków dynamicznych Androida .
  3. Konfiguracja aplikacji Apple:

    1. Jeśli planujesz obsługiwać te łącza ze swojej aplikacji, identyfikator pakietu należy określić w ustawieniach projektu Firebase Console. Ponadto należy określić identyfikator App Store i Apple Developer Team ID.
    2. Będziesz także musiał skonfigurować domenę łącza uniwersalnego FDL jako domenę powiązaną w swoich możliwościach aplikacji.
    3. Jeśli planujesz dystrybucję aplikacji na iOS w wersji 8 i starszych, musisz ustawić identyfikator pakietu jako niestandardowy schemat dla przychodzących adresów URL.
    4. Aby uzyskać więcej informacji na ten temat, zapoznaj się z instrukcjami dotyczącymi odbierania platform Apple Dynamic Links .

Obsługa akcji e-mailowych w aplikacji internetowej

Możesz określić, czy chcesz najpierw obsłużyć łącze z kodem akcji z aplikacji internetowej, a następnie przekierować do innej strony internetowej lub aplikacji mobilnej po pomyślnym zakończeniu, pod warunkiem, że aplikacja mobilna jest dostępna. Odbywa się to poprzez ustawienie handleCodeInApp na false w obiekcie FIRActionCodeSettings (Obj-C) lub ActionCodeSettings (Swift). Chociaż identyfikator pakietu lub nazwa pakietu Android nie są wymagane, ich podanie umożliwi użytkownikowi przekierowanie z powrotem do określonej aplikacji po zakończeniu kodu akcji w wiadomości e-mail.

Użyty tutaj internetowy adres URL jest skonfigurowany w sekcji szablonów akcji e-mail. Domyślny jest udostępniany dla wszystkich projektów. Zapoznaj się z dostosowywaniem programów obsługi poczty e-mail , aby dowiedzieć się więcej o dostosowywaniu obsługi akcji poczty e-mail.

W takim przypadku łącze w parametrze zapytania continueURL będzie łączem FDL, którego ładunek stanowi URL określony w obiekcie ActionCodeSettings . Chociaż możesz przechwycić i obsłużyć łącze przychodzące z aplikacji bez żadnych dodatkowych zależności, zalecamy użycie biblioteki klienta FDL do przeanalizowania precyzyjnego łącza.

Podczas obsługi akcji e-mail, takich jak weryfikacja poczty e-mail, kod akcji z parametru zapytania oobCode musi zostać przeanalizowany z głębokiego linku, a następnie zastosowany przez applyActionCode , aby zmiana zaczęła obowiązywać, tj. adres e-mail został zweryfikowany.

Obsługa akcji e-mailowych w aplikacji mobilnej

Możesz określić, czy chcesz najpierw obsłużyć łącze z kodem akcji w aplikacji mobilnej, pod warunkiem, że jest ono zainstalowane. W przypadku aplikacji na Androida masz również możliwość określenia przez androidInstallIfNotAvailable , że aplikacja ma zostać zainstalowana, jeśli urządzenie ją obsługuje i nie jest jeszcze zainstalowana. Jeśli łącze zostanie kliknięte na urządzeniu, które nie obsługuje aplikacji mobilnej, zostanie ono otwarte ze strony internetowej. Odbywa się to poprzez ustawienie handleCodeInApp na true w obiekcie FIRActionCodeSettings (Obj-C) lub ActionCodeSettings (Swift). Konieczne będzie również określenie nazwy pakietu Android lub identyfikatora pakietu aplikacji mobilnej. Używany tutaj rezerwowy internetowy adres URL, gdy żadna aplikacja mobilna nie jest dostępna, jest skonfigurowany w sekcji szablonów działań e-mail. Domyślny jest udostępniany dla wszystkich projektów. Zapoznaj się z dostosowywaniem programów obsługi poczty e-mail , aby dowiedzieć się więcej o dostosowywaniu obsługi akcji poczty e-mail.

W tym przypadku łącze aplikacji mobilnej wysłane do użytkownika będzie łączem FDL, którego ładunek stanowi adres URL kodu akcji, skonfigurowany w Konsoli z parametrami zapytania oobCode , mode , apiKey i continueUrl . Ten ostatni będzie oryginalnym URL określonym w obiekcie FIRActionCodeSettings (Obj-C) lub ActionCodeSettings (Swift). Chociaż możesz przechwycić i obsłużyć łącze przychodzące z aplikacji bez żadnych dodatkowych zależności, zalecamy użycie biblioteki klienta FDL do przeanalizowania precyzyjnego łącza. Kod akcji można zastosować bezpośrednio z aplikacji mobilnej, podobnie jak jest obsługiwany w przepływie sieci Web opisanym w sekcji dostosowywania programów obsługi poczty e-mail .

Podczas obsługi akcji e-mail, takich jak weryfikacja poczty e-mail, kod akcji z parametru zapytania oobCode musi zostać przeanalizowany z głębokiego linku, a następnie zastosowany przez applyActionCode , aby zmiana zaczęła obowiązywać, tj. adres e-mail został zweryfikowany.