Jak skonfigurować Firebase na iOS i zbierać dane, które pozwalają ulepszać aplikację?

Jak skonfigurować Firebase na iOS i zbierać dane, które pozwalają ulepszać aplikację?

Ukończenie aplikacji mobilnej oraz jej publikacja w App Store to wielkie wydarzenie. Ale na tym praca się nie kończy.

Produkt należy jeszcze rozwijać, zmieniać, udoskonalać. A do tego potrzeba różnych informacji. Ilu użytkowników korzysta z aplikacji codziennie? Co w niej robią? Które widoki są najrzadziej wyświetlane? To tylko niektóre pytania, jakie warto sobie zadać.

Wtedy z pomocą przychodzi Firebase – platforma, która zapewnia programistom skalowalną infrastrukturę i różnorodne narzędzia oraz usługi. Z tego poradnika dowiesz się, jak zaimplementować Firebase Analytics na iOS krok po kroku.

Firebase – co to?

Firebase to platforma do tworzenia aplikacji mobilnych oraz internetowych (webowych). Oferuje wiele narzędzi i usług związanych z programowaniem aplikacji, monitorowaniem stabilności i analityką.

Umożliwia m.in. automatyczne raportowanie błędów w czasie rzeczywistym, monitorowanie wydajności aplikacji czy zbieranie danych o tym, jak użytkownicy z niej korzystają.

Pomaga też ustalić priorytety i naprawiać najbardziej rozpowszechnione awarie w oparciu o ich wpływ na rzeczywistych użytkowników. Ponadto jej API umożliwia synchronizację z innymi narzędziami i przechowywanie danych w chmurze Firebase. Z tej platformy korzystają zarówno deweloperzy, jak i marketerzy.

Czym jest Google Analytics for Firebase?

Google Analytics for Firebase (nazywany też Firebase Analytics) jest modułem umożliwiającym gromadzenie informacji o aplikacji. Pozwala na mierzenie ruchu i monitorowanie zachowań użytkowników w aplikacjach mobilnych. Dzięki temu narzędziu sprawdzisz m.in. aktywność użytkowników o różnych porach dnia, ich dane demograficzne, płeć, średni czas sesji w aplikacji oraz wiele innych informacji. To dane przydatne zwłaszcza w fazie Product Discovery.

Firebase Analytics zapewnia bezpłatne, nieograniczone raportowanie do 500 różnych zdarzeń. SDK automatycznie je przechwytuje. Dodatkowo możesz samodzielnie zdefiniować własne zdarzenia niestandardowe. W ten sposób zmierzysz rzeczy, które mają szczególne znaczenie w Twoim projekcie.

Analiza danych przy użyciu Google Analytics for Firebase pozwala sprawdzić skuteczność Twoich działań. Z pomocą tego narzędzia zbierzesz dane o efektywności kampanii reklamowych, popularności produktów albo o upodobaniach klientów na różnych rynkach.

To wszystko przekłada się bezpośrednio na wzrost sprzedaży oraz na rosnącą rozpoznawalność aplikacji.

Dlatego jeżeli chcesz lepiej poznać swoich klientów, zdecydowanie powinieneś skonfigurować Google Analytics.

Jak utworzyć projekt Firebase?

Aby korzystać z Firebase w swojej aplikacji, najpierw musisz skonfigurować projekt. To element najwyższego poziomu w Firebase. Do projektu dodajesz swoją aplikację na platformę iOS, Android lub webową. Następnie możesz dodać pakiety SDK Firebase dla dowolnej liczby produktów, takich jak Analytics, Cloud Firestore, Monitorowanie wydajności czy Zdalna konfiguracja.

Konsola Firebase

Pierwszym krokiem jest utworzenie konta Firebase. Odwiedź stronę Firebase i kliknij Rozpocznij.

Ekran startowy Google Firebase (zrzut ekranu: https://firebase.google.com/).

Następnie wprowadź dane logowania do swojego konta Google. Jeśli nie masz jeszcze konta, utwórz nowe.

Po zalogowaniu zobaczysz ekran powitalny.

Tworzenie nowego projektu

Kliknij Utwórz projekt.

Wtedy pojawi się okno, w którym określasz nazwę projektu i akceptujesz warunki Firebase. Potem klikasz Kontynuuj.

Dodawanie nazwy projektu w Firebase (zrzut ekranu: https://firebase.google.com/).

W drugim kroku Firebase zaproponuje Ci dodanie Google Analytics do projektu. Kliknij Kontynuuj.

Ostatni krok to ustawienie lokalizacji dla Twojej analityki. Pamiętaj, że wybór lokalizacji nie oznacza, że dane będą dotyczyły tylko tego jednego regionu. Google chce wiedzieć, z jakiego kraju jest Twoja organizacja lub gdzie mieszkasz. Zaakceptuj warunki udostępniania danych i kliknij Utwórz projekt.

Konfiguracja Google Analytics w Firebase (zrzut ekranu: https://firebase.google.com/).

Kiedy projekt będzie gotowy, kliknij Kontynuuj.

Dodanie nowej aplikacji Firebase

Teraz pewnie widzisz kontener na usługi Firebase Twojego projektu – to tablica Firebase (Firebase Dashboard). Z jej poziomu będziesz zarządzać swoimi narzędziami. Kliknij przycisk iOS, aby dodać Firebase do swojej aplikacji.

Dodawanie Firebase do aplikacji iOS (zrzut ekranu: https://firebase.google.com/).

W polu iOS bundle ID wpisz identyfikator pakietu aplikacji (opcjonalnie możesz dodać również pseudonim aplikacji oraz App Store ID). O co dokładnie prosi Firebase?

  • App nickname – jeżeli określisz ten parametr, to będzie on używany w konsoli Firebase do reprezentowania tej aplikacji. Pseudonim nie jest widoczny dla użytkowników.
  • App Store ID – identyfikator App Store znajdziesz w adresie URL aplikacji. W przykładzie podanym podczas rejestracji widoczny jest identyfikator 123456789. To identyfikator App Store przyporządkowany do adresu https://itunes.apple.com/us/app/yourapp/id123456789

Gotowe? Kliknij przycisk Zarejestruj aplikację.

Dodawanie Firebase do aplikacji: Krok nr 1. Zrzut ekranu: https://firebase.google.com/

Jak zintegrować Firebase Analytics z aplikacją iOS?

Najpierw pobierz plik GoogleService-Info.plist. Jest to plik konfiguracyjny platformy Apple Firebase, dzięki któremu usługa działa prawidłowo w aplikacji na iOS. Można go pobrać podczas konfiguracji aplikacji w konsoli Firebase.

Później należy go dodać do projektu w Xcode (wystarczy przenieść plik do wybranego folderu w projekcie). W razie potrzeby przy przenoszeniu zaznacz opcję Kopiuj elementy, a następnie naciśnij przycisk Następny na stronie konfiguracji Firebase.

Dodawanie Firebase do aplikacji. Krok nr 2. Zrzut ekranu: https://firebase.google.com/

Dodawanie Firebase SDK do projektu

Firebase SDK możemy dodać do projektu na kilka sposobów.

1.Swift Package Manager

To narzędzie do zarządzania dystrybucją kodu Swift. SPM jest zintegrowany z systemem kompilacji Swift, aby zautomatyzować proces pobierania, kompilowania i łączenia zależności. Menedżer pakietów jest zawarty w Swift 3.0 i nowszych wersjach.

Dodawanie Firebase SDK (zrzut ekranu: https://firebase.google.com/).

Aby dodać Firebase za pomocą Swift Package Manager, otwórz Xcode i przejdź do FileAdd Packages:

Źródło: Xcode

W nowym oknie wpisz adres URL repozytorium pakietu. Skopiuj i wklej link https://github.com/firebase/firebase-ios-sdk, a następnie naciśnij Dodaj Pakiet.

Źródło: Xcode

Po pobraniu przez Swift Package Manager wszystkich dostępnych bibliotek zobaczysz poniższy widok z usługami Firebase. Zaznacz bibliotekę FirebaseAnalytics, a następnie naciśnij przycisk Dodaj Pakiet.

Dodawanie pakietu Firebase Analytics.

Resztę zrobi za Ciebie Swift Package Manager. Na koniec możesz zobaczyć w projekcie Xcode, że dodano do projektu zależności pakietu.

2. CocoaPods

Firebase SDK możesz dodać do projektu, wykorzystując również CocoaPods. To menedżer zależności na poziomie aplikacji, który działa na Objective-C, Swift i innych językach programowania. Oferuje dystrybucję kodu stron trzecich i umożliwia automatyczną integrację z projektami Xcode.

Dystrybucja Firebase’s CocoaPods wymaga Xcode w wersji minimum 12.5 oraz CocoaPods w wersji minimum 1.10.0.

Sama instalacja jest prosta. Trzeba tylko dodać odpowiednią bibliotekę do pliku Podfile w projekcie. W tym przypadku będzie to biblioteka FirebaseAnalytics w wersji 8.8.0.

Instrukcja

1.Dodaj kod pod ‘FirebaseAnalytics’, ‘8.8.0’.

# Uncomment this line to define a global platform for your project
platform :ios, '13.4'
inhibit_all_warnings!
use_frameworks!

def shared_pods
  use_frameworks!

  pod 'FirebaseAnalytics', '8.8.0'
end

target 'TestProjectIOSNewParty' do
  shared_pods
end

2. Zainstaluj nową bibliotekę, wykonując w Terminalu polecenie: pod install --repo-update. Dzięki temu dodasz do projektu zależności Firebase (Firebase Dependencies).

3. Po dodaniu FirebaseAnalytics do projektu wróć do konsoli Firebase i naciśnij Następny.

Inicjowanie Firebase w Xcode

Teraz trzeba połączyć Firebase po uruchomieniu aplikacji. Aby to zrobić, należy otworzyć Xcode. Następnie w klasie AppDelegate dodaj na końcu metody widocznej poniżej kod: FirebaseApp.configure() oraz import biblioteki Firebase. Powoduje to zainicjowanie kodu Firebase.

Dodawanie kodu inicjującego (zrzut ekranu: https://firebase.google.com/).

Po wykonaniu tych czynności wróć do konsoli Firebase. Tam naciśnij Następny i przejdź do ostatniego kroku, gdzie wystarczy wybrać przycisk Przejdź do konsoli.

I to wszystko. Gratulacje! Udało Ci się skonfigurować swój projekt w konsoli Firebase.

Zdarzenia Firebase Analytics

Utworzyłeś projekt w konsoli i zamieściłeś w nim aplikację iOS. Jedyny kod jaki dodałeś w Xcode, inicjuje bibliotekę Firebase. Mimo to platforma już zbiera niektóre dane. Dlaczego?

System Firebase opiera się na wysyłaniu zdarzeń, a Analytics automatycznie rejestruje część z nich. Każde ma swoją nazwę wysyłaną jako String oraz opcjonalnie parametry, które są słownikiem typu [String: Any].

Zdarzenia rejestrowane automatycznie – ten rodzaj zdarzeń wywołują podstawowe interakcje z Twoją aplikacją.

Domyślnie zbierane są następujące parametry dla każdego zdarzenia (w tym również zdarzeń niestandardowych):

  • language – określa język używany przez aplikację
  • screen_view – zdarzenie odnotowywane wtedy, gdy następuje przejście ekranu
  • ad_click – zdarzenie, które ma miejsce, gdy użytkownik kliknie reklamę
  • first_open – zdarzenie wywoływane, gdy użytkownik uruchamia aplikację po raz pierwszy.

Więcej informacji na ten temat oraz pełną listę parametrów znajdziesz w Dokumentacji Firebase.

Zdarzenia predefiniowane

Jednym z typów zdarzeń są wstępnie zdefiniowane zdarzenia. Dodanie ich do aplikacji mobilnej pomaga mierzyć dodatkowe funkcje i zachowania, a także generować bardziej przydatne raporty. Zdarzenia te nie są wysyłane automatycznie, ponieważ w ich przypadku ważny jest kontekst. Listę takich zdarzeń znajdziesz pod adresem Polecane zdarzenia.

Przykładowy kod

Za przykład może posłużyć zdarzenie view_item_list. Należy je wysłać wraz z tablicowym parametrem items, który zawiera listę elementów wyświetlanych użytkownikowi.

Analytics.logEvent(AnalyticsEventViewItemList, parameters: [

AnalyticsParameterListID: “id”,

AnalyticsParameterListName: “name”,

AnalyticsParameterItems: [Item]

])

Do rejestrowania zdarzeń używamy metody logEvent(_:parameters:)

Rejestrujesz tutaj predefiniowane zdarzenie o nazwie AnalyticsEventViewItemList, które zawiera kilka parametrów:

  • AnalyticsParameterItemListID – identyfikator listy elementów zaprezentowanych użytkownikowi
  • AnalyticsParameterItemListName – nazwa listy
  • AnalyticsParameterItems – elementy z listy (obiekt Item musi zawierać parametry item_id i item_name, może też zawierać inne parametry opcjonalne).

Co się dzieje po dodaniu powyższego kodu? Jak tylko użytkownik trafi na listę elementów, Firebase od razu zarejestruje powyższe zdarzenia, które sprawdzisz w konsoli.

Zdarzenia niestandardowe

Może się okazać, że trzeba zarejestrować zdarzenie, które nie zostało wcześniej zdefiniowane. Na szczęście to żaden problem – z pomocą przychodzą zdarzenia niestandardowe.

Np. jeśli tworzysz grę, możesz dodać własne zdarzenie informujące, kiedy gracz osiąga określony cel.

Żeby je zarejestrować, wykorzystujesz tę samą metodę, co w omawianym wcześniej przykładzie: logEvent(_:parameters:). Tym razem jednak nadajesz własną nazwę dla tego zdarzenia i sam określasz, czy i jakie parametry chcesz wysłać. Możesz też nadać im własne nazwy oraz określić wysyłany typ parametrów.

Przykładowy kod:

Analytics.logEvent(“image_search_camera_click”, parameters: nil)



Analytics.logEvent(“swipe_to_product”, parameters: [

AnalyticsParameterCurrency: “EUR”,

swipe_direction: “swipe_left”

])

W pierwszym przykładzie widzisz:

  • “image_search_camera_click” – nazwę zdarzenia, którą sam dodałeś
  • parameters: nil – brak parametrów, co oznacza, że w tym przypadku interesuje Cię samo wystąpienie zdarzenia.

W drugim przykładzie widzisz:

  • “swipe_to_produkt” – własną nazwę dla zdarzenia
  • AnalyticsParameterCurrency – predefiniowany parametr, który mówi, w jakiej walucie kwota wyświetlała się przy produkcie
  • “swipe_direction” – niestandardowy parametr, którego nazwę określasz sam.

Zdarzenia w Firebase są bardzo elastyczne:

  • Możesz korzystać z predefiniowanych zdarzeń i tworzyć własne.
  • Masz możliwość mieszania ze sobą parametrów predefiniowanych z własnymi.

Pamiętaj, że nazwy zdarzeń oraz parametrów powinny być krótkie i dobrze charakteryzować Twoje założenia.

Manager zdarzeń

Dobrym pomysłem na dodanie analityki do projektu może być wykorzystanie osobnego Managera, który będzie zarządzał wszystkimi zdarzeniami. W takim przypadku cała analityka znajdować się będzie w Managerze. Pozwoli to na dokonywanie zmian tylko w jednym miejscu, a także na lepsze zarządzanie zasobami.

Szkielet managera

Twój manager będzie klasą, nazwijmy ją AnalyticsHelper. Poniższy kod przedstawia szkielet, który może być zmieniony oraz rozszerzony względem Twoich potrzeb.

final class AnalyticsHelper {
    private class func event(with type: AnalyticsEvent, parameters: [String: Any]? = nil) {
        Analytics.logEvent(type.name, parameters: parameters)
    }
    
    private class func analyticsProduct(id: String, name: String, category: String, price: Double) -> [String: Any] {
        var parameters = [AnalyticsParameterKey.Product.itemID.name: id,
                          AnalyticsParameterKey.Product.itemName.name: name,
                          AnalyticsParameterKey.Product.itemCategory.name: category,
                          AnalyticsParameterKey.Product.price.name: price] as [String : Any]
        
        return parameters
    }
}
 
extension AnalyticsHelper {
    class func selectProductEvent(category: AnalyticsCategoryParameter.Category, product: AnalyticProduct, userType: ProfileType) {
        let parameters: [String : Any] = [
            AnalyticsParameterKey.SelectProduct.listId.name: category.name,
            AnalyticsParameterKey.SelectProduct.listName.name: category.name,
            AnalyticsParameterKey.SelectProduct.userType.name: userType.name,
            AnalyticsParameterKey.SelectProduct.items.name: [analyticsProduct(id: product.itemId, name: product.itemName, category: product.itemCategory, price: product.itemPrice)]
        ]
        
        event(with: .selectItem, parameters: parameters)
    }
}
 
extension AnalyticsHelper {
    class func widgetClickedEvent(categoryName: String) {
        event(with: .widgetClicked, parameters: [AnalyticsParameterKey.SearchWidget.categoryName.name: categoryName])
    }
    
    class func widgetNoResultsEvent(searchPhase: String) {
        event(with: .widgetNoResults, parameters: [AnalyticsParameterKey.SearchWidget.searchPhase.name: searchPhase])
    }
}
 
extension AnalyticsHelper {
    class func swipeProductEvent() {
        event(with: .swipeProduct)
 
    }
}

W powyższym przykładzie kodu widzisz dwie metody:

  • private class func event(with type: AnalyticsEvent, parameters: [String: Any]?) – metoda ta przyjmuje parametr type, który określa nazwę danego zdarzenia oraz parameters, który określa czy i jakie parametry chcesz wysłać.
  • private class func analyticsProduct(id: String, name: String, category: String, price: Double) -> [String: Any] – jest to metoda, która tworzy obiekt Item. Tablica tych obiektów jest jednym z wymaganych parametrów, jakie musisz wysłać w niektórych zdarzeniach predefiniowanych. Zawartość obiektu Item możesz dostosować do własnych potrzeb.

Kolejne rozszerzenia odpowiadają konkretnym zdarzeniom. Każda z tych metod jest metodą klasy (dzięki czemu dostajesz metodę należącą do klasy, a nie do instancji klasy):

  • class func selectProductEvent(category: AnalyticsCategoryParameter.Category, product: AnalyticProduct, userType: ProfileType) – predefiniowane zdarzenie AnalyticsEventSelectItem wraz z parametrami, które są zarówno predefiniowane, jak i niestandardowe
  • class func widgetClickedEvent(categoryName: String) i class func widgetNoResultsEvent(searchPhase: String) – niestandardowe zdarzenia wraz z niestandardowym parametrem
  • class func swipeProductEvent() – niestandardowe zdarzenie bez parametrów.

Plik pomocniczy dla Managera

Czym jest typ AnalyticsEvent i AnalyticsParameterKey? To enumy wykorzystywane do przechowywania nazw zdarzeń oraz ich parametrów w usystematyzowany sposób. Wcześniej zdefiniowane nazwy zapobiegają sytuacji, w której mylisz jedną literę i wysyłasz zupełnie inne zdarzenie.

Stwórz nowy plik o nazwie AnalyticsEnums.

import FirebaseAnalytics
 
enum AnalyticsEvent {
    case selectItem
    case widgetClicked
    case widgetNoResults
    case swipeProduct
    
    var name: String {
        switch self {
        case .selectItem:
            return AnalyticsEventSelectItem
        case .widgetClicked:
            return "widget_click"
        case .widgetNotResult:
            return "widget_not_resuly"
        case .swipeProduct:
            return "swipe_product"
        }
    }
}
 
enum AnalyticsParameterKey {
    enum Product {
        case itemCategory
        case itemID
        case itemName
        case price
        
        var name: String {
            switch self {
            case .itemCategory:
                return AnalyticsParameterItemCategory
            case .itemID:
                return AnalyticsParameterItemID
            case .itemName:
                return AnalyticsParameterItemName
            case .price:
                return AnalyticsParameterPrice
            }
        }
    }
    
    enum SelectProduct {
        case listId
        case listName
        case userType
        case items
   
        
        var name: String {
            switch self {
            case .listId:
                return AnalyticsParameterItemListID
            case .listName:
                return AnalyticsParameterItemListName
            case .items:
                return AnalyticsParameterItems
            case .userType:
                return "user_type"
            }
        }
    }
    
    enum SearchWidget {
        case categoryName
        case searchPhase
        
        var name: String {
            switch self {
            case .categoryName:
                return "cat_name"
            case .searchPhase:
                return "search_phrase"
            }
        }
    }
}

Wszystkie zdarzenia mają tutaj swoją nazwę. Każda grupa zdarzeń ma osobny enum, w którym znajdują się nazwy ich parametrów. Pozwala to zarządzać analityką z jednego miejsca oraz chroni przed popełnieniem błędu, ponieważ do zdarzenia dostarczasz jedynie wysyłane wartości – nazwy parametrów są z góry ustalone.

Użycie w kodzie

Wykorzystanie w kodzie jest bardzo proste. Spójrz np. na zdarzenie .swipeProduct:

    func pageViewController (_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
         AnalyticsHelper.swipeProductEvent()
    }

W miejscu, gdzie chcesz rejestrować zdarzenie, wywołujesz wybraną metodę klasy AnalyticsHelper. Przykład wywołania zdarzenia .widgetClicked:

 func categorySelected(index: Int, query: String) {
        let selectedCategory = categories[index]
        guard let slug = selectedCategory.slug.first else { return }
        
        AnalyticsHelper.widgetClickedEvent(categoryName: selectedCategory.titleToDisplay)
        let response = categoryOpenProductsListResponse(slug: slug query: getQuery(query: query))
        output.openList(response)
    }

Metodę taką możesz wywoływać w aktualnie wykorzystywanym ViewController lub – w zależności od architektury – w dowolnie wybranym przez siebie miejscu. Pozwala to na użycie klasy AnalyticsHelper zamiast jej instancji.

Implementacja Google Analytics na Firebase nie jest czasochłonna, dlatego tym bardziej warto ją rozważyć. Analiza danych potrafi być nieocenionym źródłem informacji m.in. dla programistów, badaczy UX i działów marketingu. Odpowiednie jej wykorzystanie prowadzi do tworzenia jeszcze lepszych produktów cyfrowych.

Dowiedz się więcej:

Wycena projektu

Opowiedz nam o swoim projekcie i napisz, jak możemy Ci pomóc.

Dlaczego warto rozwijać z nami projekty?

Logo Mobile Trends Awards

Mobile Trends Awards 2021

Wygrana w kategorii
ŻYCIE CODZIENNE

Nagroda Legalnych Bukmacherów

Nagroda Legalnych Bukmacherów 2019

Najlepsza aplikacja mobilna

Mobile Trends Awards logo

Mobile Trends Awards 2023

Wygrana w kategorii
MCOMMERCE ROZWÓJ

23

opinie klientów

Clutch logo