Aby napisać w Unity swoją wieloplatformową aplikację kliencką Komunikacja w chmurze Firebase, skorzystaj z API Firebase Cloud Messaging API. Pakiet Unity SDK działa zarówno na Androida, jak i na urządzenia Apple, ale wymagana jest dodatkowa konfiguracja. dla każdej platformy.
Zanim zaczniesz
Wymagania wstępne
Zainstaluj Unity w wersji 2019.1 lub nowszej. Wcześniejsze wersje również mogą być zgodne, ale nie będą aktywnie obsługiwane. Podejmujemy decyzję o obsłudze Unity 2019.1 wycofane i nie będą aktywnie obsługiwane po następnej aktualizacji wersji.
(Tylko platformy Apple) Zainstaluj te elementy:
- Xcode 13.3.1 lub nowsza wersja
- CocoaPods w wersji 1.12.0 lub nowszej
Sprawdź, czy Twój projekt w Unity spełnia te wymagania:
- iOS – jest kierowana na system iOS 11 lub nowszy.
- tvOS – jest kierowana na system tvOS w wersji 12 lub nowszej
- Android – docelowy poziom interfejsu API 19 (KitKat) lub nowsza
Skonfiguruj urządzenie lub użyj emulatora, aby uruchomić projekt w Unity.
iOS lub tvOS – skonfiguruj urządzenie fizyczne, aby i wykonaj te czynności:
- Uzyskaj klucz uwierzytelniania Apple Push Notification do swojego Konto dewelopera Apple.
- Włącz powiadomienia push w XCode w sekcji App > (Aplikacja >). Potencjał.
Na urządzeniu z Androidem – Emulatory muszą używać funkcji z obrazem emulatora w Google Play.
- Zaloguj się w Firebase, korzystając ze swojego konta Google koncie.
Jeśli nie masz jeszcze projektu Unity i chcesz wypróbować Firebase, możesz pobrać nasze krótkie wprowadzenia.
Krok 1. Utwórz projekt Firebase
Zanim dodasz Firebase do projektu w Unity, musisz utworzyć który chcesz połączyć z projektem w Unity. Odwiedź stronę Informacje o Firebase Projekty, aby dowiedzieć się więcej o projektach Firebase.
Krok 2. Zarejestruj aplikację w Firebase
Aby połączyć konto z Firebase, możesz zarejestrować co najmniej 1 aplikację lub grę w projektach AI.
Otwórz konsolę Firebase.
Na środku strony z opisem projektu kliknij ikonę Unity. (
) aby rozpocząć proces konfiguracji.Jeśli masz już aplikację w projekcie Firebase, kliknij Dodaj aplikację. aby wyświetlić opcje platformy.
Wybierz środowisko docelowe kompilacji projektu Unity, które chcesz zarejestrować lub zarejestrować oba cele jednocześnie.
Wpisz identyfikatory projektów Unity dla danej platformy.
iOS – w polu Pakiet na iOS Identyfikator .
Android – w polu Pakiet na Androida name.
Często używane są terminy nazwa pakietu i identyfikator aplikacji. zamiennie.
(Opcjonalnie) Wpisz pseudonimy związane z platformą projektu Unity.
Te pseudonimy to wewnętrzne, wygodne identyfikatory, które są widoczne tylko w konsoli Firebase.Kliknij Zarejestruj aplikację.
Krok 3. Dodaj pliki konfiguracji Firebase
Pliki konfiguracji Firebase dotyczące danej platformy znajdziesz w Proces konfiguracji konsoli Firebase.
iOS – kliknij Pobierz GoogleService-Info.plist.
Android – kliknij Pobierz google-services.json.
Otwórz okno Project (Projekt) w projekcie Unity, a następnie przenieś konfigurację pliki do folderu
Assets
.Gdy wrócisz do konsoli Firebase, w procesie konfiguracji kliknij Dalej.
Krok 4. Dodaj pakiety SDK Firebase Unity
W konsoli Firebase kliknij Pobierz pakiet SDK Firebase Unity i rozpakuj go. z pakietu SDK w dogodnym miejscu.
W każdej chwili możesz ponownie pobrać pakiet Firebase Unity SDK.
Pakiet SDK Firebase Unity nie jest związany z konkretną platformą.
W otwartym projekcie Unity przejdź do folderu Komponenty > Importuj pakiet > Pakiet niestandardowy.
W rozpakowanym pakiecie SDK wybierz obsługiwaną usługę Firebase usług, których chcesz używać do aplikacji.
Aby zapewnić optymalne działanie Komunikacji w chmurze Firebase (FCM), zalecamy włączenie Google Analytics, w Twoim projekcie. Podczas konfigurowania Analytics musisz też dodać pakietu Firebase Analytics do aplikacji.
Analityka włączona
- Dodaj pakiet Firebase dla Google Analytics:
FirebaseAnalytics.unitypackage
- Dodaj pakiet do Komunikacji w chmurze Firebase (FCM):
FirebaseMessaging.unitypackage
Statystyki nie są włączone
Dodaj pakiet do Komunikacji w chmurze Firebase (FCM):
FirebaseMessaging.unitypackage
- Dodaj pakiet Firebase dla Google Analytics:
W oknie Import Unity Package (Importuj pakiet Unity) kliknij Import (Importuj).
Gdy wrócisz do konsoli Firebase, w procesie konfiguracji kliknij Dalej.
Krok 5. Potwierdź wymagania dotyczące wersji Usług Google Play
Pakiet Firebase Unity SDK na Androida wymaga: Usług Google Play, których pakiet musi spełniać, że pakiet SDK musi być aktualny.
Dodaj instrukcję using
i kod inicjowania na początku
aplikacji. Możesz sprawdzić dostępność Usług Google Play i ewentualnie zaktualizować je do
wymaganej przez pakiet Firebase Unity SDK przed wywołaniem jakiegokolwiek innego
w pakiecie SDK.
using Firebase.Extensions;
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(task => {
var dependencyStatus = task.Result;
if (dependencyStatus == Firebase.DependencyStatus.Available) {
// Create and hold a reference to your FirebaseApp,
// where app is a Firebase.FirebaseApp property of your application class.
app = Firebase.FirebaseApp.DefaultInstance;
// Set a flag here to indicate whether Firebase is ready to use by your app.
} else {
UnityEngine.Debug.LogError(System.String.Format(
"Could not resolve all Firebase dependencies: {0}", dependencyStatus));
// Firebase Unity SDK is not safe to use here.
}
});
Twój projekt w Unity jest zarejestrowany i skonfigurowany do używania Firebase.
Prześlij klucz uwierzytelniania APNs na potrzeby zespołu pomocy Apple
Prześlij swój klucz uwierzytelniania APNs do Firebase. Jeśli nie masz jeszcze klucza uwierzytelniania APNs, utwórz go w Apple Developer Member Center
-
W projekcie w konsoli Firebase wybierz ikona koła zębatego, wybierz Ustawienia projektu, a potem wybierz Karta Komunikacja w chmurze.
-
W sekcji Klucz uwierzytelniania APN w sekcji Konfiguracja aplikacji na iOS kliknij przycisk Prześlij Przycisk
-
Przejdź do miejsca, w którym masz zapisany klucz, wybierz go i kliknij Otwórz. Dodaj identyfikator klucza (dostępny w sekcji Apple Developer Member Center) i kliknij Prześlij.
Włącz powiadomienia push na platformach Apple
Krok 1. Dodaj platformę powiadomień dla użytkowników
Kliknij projekt w Xcode, a następnie wybierz kartę General (Ogólne) Obszar edycji.
Przewiń w dół do sekcji Połączone platformy i biblioteki, a potem kliknij przycisk +. , aby dodać platformę.
W wyświetlonym oknie przewiń do folderu UserPowiadomienia.framework, kliknij ten wpis i kliknij Dodaj.
Krok 2. Włącz powiadomienia push
Kliknij projekt w Xcode, a następnie wybierz kartę Capabilities (Możliwości) w Obszar edycji.
Ustaw Powiadomienia push w pozycji Włączone.
Przewiń w dół do sekcji Tryby w tle i ustaw przełącznik w pozycji Wł.
Zaznacz pole wyboru Powiadomienia zdalne w sekcji Tryby w tle.
Inicjowanie Komunikacji w chmurze Firebase (FCM)
Biblioteka wiadomości w chmurze Firebase zostanie zainicjowana podczas dodawania modułów obsługi
dla zdarzeń TokenReceived
lub MessageReceived
.
Po zainicjowaniu aplikacji klienckiej wysyłane jest żądanie tokena rejestracji.
instancji. Aplikacja otrzyma token ze zdarzeniem OnTokenReceived
,
który powinien być buforowany w celu późniejszego użycia. Będzie Ci to potrzebne
token, jeśli chcesz kierować wiadomości na to konkretne urządzenie.
Dodatkowo musisz zarejestrować się na wydarzenie OnMessageReceived
, jeśli
chcesz mieć możliwość odbierania wiadomości przychodzących.
Cała konfiguracja wygląda tak:
public void Start() { Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived; Firebase.Messaging.FirebaseMessaging.MessageReceived += OnMessageReceived; } public void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs token) { UnityEngine.Debug.Log("Received Registration Token: " + token.Token); } public void OnMessageReceived(object sender, Firebase.Messaging.MessageReceivedEventArgs e) { UnityEngine.Debug.Log("Received a new message from: " + e.Message.From); }
Konfigurowanie aktywności punktu wejścia Androida
Na Androidzie do Komunikacji w chmurze Firebase występuje w pakiecie niestandardowy punkt wejścia.
która zastępuje domyślną aktywność (UnityPlayerActivity
). Jeśli nie używasz
Niestandardowy punkt wejścia ta zamiana odbywa się automatycznie i nie należy
nie musi podjąć żadnych dodatkowych działań. Aplikacje, które nie używają domyślnego punktu wejścia
Aktywność lub dostawcy własnych zasobów Assets/Plugins/AndroidManifest.xml
będą potrzebować
dodatkowej konfiguracji.
Wtyczkę Firebase Cloud Messaging Unity na Androida otrzymujesz w pakiecie z 2 elementami. dodatkowe pliki:
Assets/Plugins/Android/libmessaging_unity_player_activity.jar
zawiera aktywność o nazwieMessagingUnityPlayerActivity
, która zastępuje standardowyUnityPlayerActivity
Assets/Plugins/Android/AndroidManifest.xml
nakazuje aplikacji użycieMessagingUnityPlayerActivity
jako punkt wejścia do aplikacji.
Te pliki zostały udostępnione, ponieważ domyślna właściwość UnityPlayerActivity
nie
obsługuje przejścia w cyklu życia aktywności onStop
i onRestart
lub zaimplementuj kod
onNewIntent
, które są niezbędne do prawidłowego działania Komunikacji w chmurze Firebase
obsługi wiadomości przychodzących.
Konfigurowanie działania niestandardowego punktu wejścia
Jeśli aplikacja nie używa domyślnego ustawienia UnityPlayerActivity
, musisz:
usuń podane AndroidManifest.xml
i upewnij się, że niestandardowa aktywność
prawidłowo obsługuje wszystkie przejścia
Cykl aktywności na Androidzie
(poniżej pokazujemy, jak to zrobić). Jeśli Twój niestandardowy
aktywność obejmuje UnityPlayerActivity
, możesz zamiast tego przedłużyć
com.google.firebase.MessagingUnityPlayerActivity
, która stosuje wszystkie
i nie tylko.
Jeśli korzystasz z aktywności niestandardowej i nie przedłużasz subskrypcji
com.google.firebase.MessagingUnityPlayerActivity
, umieść w
poniżej fragmentów w Twojej aktywności.
/** * Workaround for when a message is sent containing both a Data and Notification payload. * * When the app is in the background, if a message with both a data and notification payload is * received the data payload is stored on the Intent passed to onNewIntent. By default, that * intent does not get set as the Intent that started the app, so when the app comes back online * it doesn't see a new FCM message to respond to. As a workaround, we override onNewIntent so * that it sends the intent to the MessageForwardingService which forwards the message to the * FirebaseMessagingService which in turn sends the message to the application. */ @Override protected void onNewIntent(Intent intent) { Intent message = new Intent(this, MessageForwardingService.class); message.setAction(MessageForwardingService.ACTION_REMOTE_INTENT); message.putExtras(intent); message.setData(intent.getData()); // For older versions of Firebase C++ SDK (< 7.1.0), use `startService`. // startService(message); MessageForwardingService.enqueueWork(this, message); } /** * Dispose of the mUnityPlayer when restarting the app. * * This ensures that when the app starts up again it does not start with stale data. */ @Override protected void onCreate(Bundle savedInstanceState) { if (mUnityPlayer != null) { mUnityPlayer.quit(); mUnityPlayer = null; } super.onCreate(savedInstanceState); }
Nowe wersje pakietu SDK Firebase C++ (od 7.1.0) używają interfejsu JobIntentService
, który wymaga
dodatkowe modyfikacje w pliku AndroidManifest.xml
.
<service android:name="com.google.firebase.messaging.MessageForwardingService" android:permission="android.permission.BIND_JOB_SERVICE" android:exported="false" > </service>
Uwaga na temat dostarczania wiadomości w Androidzie
Gdy aplikacja w ogóle nie jest uruchomiona, a użytkownik kliknie powiadomienie,
wiadomość nie jest domyślnie przekierowywana przez wbudowane funkcje FCM
. W tym przypadku ładunki wiadomości są odbierane przez Intent
.
używane do uruchomienia aplikacji.
Wiadomości odebrane, gdy aplikacja działa w tle, zawierają
w polu powiadomień w obszarze powiadomień w obszarze powiadomień,
takie powiadomienia nie zostaną przekazane FCM. To znaczy,
FirebaseMessage.Notification
będzie mieć wartość null.
W skrócie:
Stan aplikacji | Powiadomienie | Dane | Oba rodzaje |
---|---|---|---|
Pierwszy plan | Firebase.Messaging.FirebaseMessaging.MessageReceived |
Firebase.Messaging.FirebaseMessaging.MessageReceived |
Firebase.Messaging.FirebaseMessaging.MessageReceived |
Tło | Zasobnik systemowy | Firebase.Messaging.FirebaseMessaging.MessageReceived |
Powiadomienie: obszar powiadomień Dane: w dodatkowych celach. |
Zapobiegaj automatycznemu inicjowaniu
FCM generuje token rejestracji na potrzeby kierowania na urządzenia.
Po wygenerowaniu tokena biblioteka przesyła
i danych konfiguracji. Jeśli chcesz zobaczyć
wulgaryzmy
przed użyciem tokena, możesz zapobiec generowaniu konwersji podczas konfiguracji,
wyłączyć FCM (i na Androidzie, Analytics). Aby to zrobić, dodaj wartość metadanych do
urządzenie Info.plist
(nie GoogleService-Info.plist
) w Apple lub
AndroidManifest.xml
na urządzeniu z Androidem:
Android
<?xml version="1.0" encoding="utf-8"?> <application> <meta-data android:name="firebase_messaging_auto_init_enabled" android:value="false" /> <meta-data android:name="firebase_analytics_collection_enabled" android:value="false" /> </application>
Swift
FirebaseMessagingAutoInitEnabled = NO
Aby ponownie włączyć FCM, możesz wykonać wywołanie w czasie działania aplikacji:
Firebase.Messaging.FirebaseMessaging.TokenRegistrationOnInitEnabled = true;
Po ustawieniu ta wartość będzie się utrzymywać w przypadku ponownych uruchomień aplikacji.
Radzenie sobie z wiadomościami za pomocą precyzyjnych linków na Androidzie
FCM zezwala na wysyłanie wiadomości zawierających precyzyjny link do aplikacji. Aby otrzymywać wiadomości zawierające precyzyjny link, musisz dodać nowy filtr intencji do aktywności, która obsługuje precyzyjne linki do Twojej aplikacji. Filtr intencji powinien przechwytywanie precyzyjnych linków w Twojej domenie. Jeśli wiadomości nie zawierają precyzyjnego linku, ta konfiguracja nie jest wymagana. W pliku AndroidManifest.xml:
<intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:host="CHANGE_THIS_DOMAIN.example.com" android:scheme="http"/> <data android:host="CHANGE_THIS_DOMAIN.example.com" android:scheme="https"/> </intent-filter>
Możesz też określić symbol wieloznaczny, aby zwiększyć skuteczność filtra intencji. i elastyczności. Przykład:
<intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:host="*.example.com" android:scheme="http"/> <data android:host="*.example.com" android:scheme="https"/> </intent-filter>
Gdy użytkownik kliknie powiadomienie zawierające link do schematu i będzie Cię hostować aplikacji, aplikacja rozpocznie aktywność za pomocą tego filtra intencji do obsługi .
Dalsze kroki
Po skonfigurowaniu aplikacji klienckiej możesz rozpocząć wysyłanie danych podrzędnych i tematu wiadomości z Firebase. Aby dowiedzieć się więcej, przeczytaj krótki przewodnik – przykład które ilustruje tę funkcję.
Aby dodać do aplikacji inne, bardziej zaawansowane funkcje, zapoznaj się z przewodnikami z serwera aplikacji:
Pamiętaj, że musisz mieć implementacji serwera, aby mogły korzystać z tych funkcje zabezpieczeń.