Udostępnij za pośrednictwem


Rozwiązywanie problemów z zestawem SDK systemu iOS

Ważne

Program Visual Studio App Center ma zostać wycofany 31 marca 2025 r. Mimo że możesz nadal używać programu Visual Studio App Center do momentu jej pełnego wycofania, istnieje kilka zalecanych alternatyw, do których można rozważyć migrację.

Dowiedz się więcej o osiach czasu pomocy technicznej i alternatywach.

Problemy podczas instalacji

  1. W konsoli poszukaj dziennika asertywnego z komunikatem "Zestaw SDK centrum aplikacji został pomyślnie skonfigurowany". Komunikat oznacza, że zestaw SDK został pomyślnie skonfigurowany.
  2. Jeśli używasz platformy Cocoapods do integracji centrum aplikacji z systemem iOS i napotkasz błąd z komunikatem — CocoaPods - Unable to find a specification for AppCenteruruchom polecenie pod repo update , aby zaktualizować lokalne repozytorium Cocoapods, a następnie uruchom ponownie.pod install
  3. Jeśli używasz platformy CocoaPods do integracji usługi App Center z aplikacją systemu iOS i podczas kompilacji projektu wystąpi błąd z komunikatem — framework not found AppCenter.xcframework musisz zaktualizować (ponownie zainstalować)pody Cocoapods do późnej wersji, uruchamiając polecenie [sudo] gem install cocoapods.
  4. Jeśli integrujesz pliki binarne zestawu SDK ręcznie, upewnij się, że masz włączone moduły dla projektu.

Dane analizy nie są wyświetlane w portalu

  1. Upewnij się, że moduły zestawu SDK zostały poprawnie zintegrowane.

  2. Upewnij się, że prawidłowy wpis tajny aplikacji jest uwzględniony wraz z start:withServices: wywołaniem metody. Możesz skopiować dokładny start:withServices:kod, otwierając aplikację w portalu i przechodząc do strony Wprowadzenie.

  3. Jeśli chcesz wyświetlić dzienniki wysyłane do zaplecza, zmień poziom dziennika na Pełne w aplikacji. Następnie zestaw SDK wyświetli dzienniki w konsoli programu . Wstaw następujące wywołanie przed uruchomieniem zestawu SDK:

    [MSACAppCenter setLogLevel:MSACLogLevelVerbose]
    
    AppCenter.logLevel = .verbose
    

    Upewnij się, że w dziennikach pojawi się komunikat "Zestaw SDK usługi App Center został pomyślnie skonfigurowany", a następnie sprawdź, czy widzisz dzienniki żądań HTTPS.

  4. Upewnij się, że urządzenie jest w trybie online.

  5. Czasami dzienniki mogą potrwać kilka minut, aby wyświetlić je w portalu. Poczekaj trochę czasu, jeśli tak jest.

  6. Aby sprawdzić, czy zaplecze usługi App Center odebrało dane, przejdź do sekcji Przepływ dzienników w usłudze Analytics . Zdarzenia powinny pojawić się po wysłaniu.

Awarie nie są wyświetlane w portalu

  1. Upewnij się, że moduły zestawu SDK zostały poprawnie zintegrowane.

  2. Upewnij się, że prawidłowy wpis tajny aplikacji jest uwzględniony wraz z start:withServices: wywołaniem metody. Możesz skopiować dokładny start:withServices: kod, otwierając aplikację w portalu i przechodząc do strony Wprowadzenie.

  3. Awarie usługi App Center będą przekazywać dziennik awarii dopiero po ponownym uruchomieniu aplikacji. Ponadto zestaw SDK nie będzie przekazywać żadnych dzienników awarii, jeśli jesteś dołączony do debugera. Upewnij się, że debuger nie jest dołączony podczas awarii aplikacji.

  4. Jeśli chcesz wyświetlić dzienniki wysyłane do zaplecza, zmień poziom dziennika na Pełne w aplikacji. Następnie zestaw SDK wyświetli dzienniki w konsoli programu . Wstaw następujące wywołanie przed uruchomieniem zestawu SDK:

    [MSACAppCenter setLogLevel:MSACLogLevelVerbose]
    
    AppCenter.logLevel = .verbose
    

    Upewnij się, że w dziennikach pojawi się komunikat "Zestaw SDK usługi App Center został pomyślnie skonfigurowany", a następnie sprawdź, czy widzisz dzienniki żądań HTTPS.

  5. Nie używaj żadnych innych bibliotek, które zapewniają funkcję raportowania awarii. W aplikacji można zintegrować tylko jeden zestaw SDK raportowania awarii.

  6. Upewnij się, że urządzenie jest w trybie online.

  7. Czasami dzienniki mogą potrwać kilka minut, aby wyświetlić je w portalu. Poczekaj trochę czasu, jeśli tak jest.

  8. Sprawdź, czy zestaw SDK wykrył awarię podczas następnego uruchomienia aplikacji. Możesz wywołać interfejs API, aby sprawdzić, czy aplikacja uległa awarii w ostatniej sesji i wyświetlić alert. Możesz też rozszerzyć wywołanie zwrotne awarii didSucceedSendingErrorReport , aby sprawdzić, czy została pomyślnie wysłana na serwer.

  9. Aby sprawdzić, czy zaplecze usługi App Center odebrało awarię, przejdź do sekcji Przepływ dzienników w usłudze Analytics. Awarie powinny pojawić się tam po wysłaniu.

Alert, który monituje użytkowników o aktualizację, nie zawiera ciągów, ale tylko klucze dla nich

Oznacza to, że AppCenterDistributeResources.bundle element nie został dodany do projektu. Upewnij się, że plik został porzucony w projekcie Xcode i pojawia się on w fazie kompilacji docelowej Copy Bundle Resources aplikacji. Powinien on pojawić się po dodaniu pliku przez przeciąganie i upuszczanie — program Xcode automatycznie wykonuje go automatycznie. Jeśli w fazie kompilacji brakuje pliku, dodaj go, aby został skompilowany w pakiecie aplikacji.

Jeśli używasz cocoapods, automatycznie zajmuje się zasobami. Spróbuj ponownie zainstalować zasobnik.

W konsoli są wyświetlane komunikaty wskazujące, że nie można otworzyć bazy danych

Począwszy od wersji 0.11.0 zestawu SDK systemu iOS, usługa App Center używa biblioteki SQLite do utrwalania dzienników przed wysłaniem ich do zaplecza. Jeśli tworzysz pakiet aplikacji przy użyciu własnej biblioteki SQLite zamiast używać tej udostępnionej przez system operacyjny, w konsoli mogą pojawić się błędy podobne do tych w konsoli [AppCenter] ERROR: -[MSACDBStorage executeSelectionQuery:]/147 Failed to open database i nie będą widoczne żadne informacje analityczne ani awarie w zapleczu. Zaktualizuj zestaw SDK do wersji 0.13.0 lub nowszej.

Aktualizacje rozproszone i w aplikacji blokują automatyczne testy interfejsu użytkownika

Jeśli aktualizacje w aplikacji są włączone, zablokują one automatyczne testy interfejsu użytkownika. Proces aktualizacji spróbuje uwierzytelnić się w zapleczu centrum aplikacji. Zalecamy, aby nie włączyć usługi App Center Distribute dla docelowego testu interfejsu użytkownika.

Dlaczego zestaw SDK jest dystrybuowany jako "biblioteka statyczna"

Podstawowymi celami projektowania zestawu SDK centrum aplikacji jest minimalny wpływ na aplikację przy użyciu usługi App Center i posiadanie modułowego zestawu SDK. Spowoduje to dystrybucję zestawu SDK jako kilka dynamicznych połączonych bibliotek udostępnionych.

Historycznie system iOS nie obsługiwał dynamicznych połączonych bibliotek udostępnionych, ale został dodany w systemie iOS 8, jak wyjaśniono w tym wpisie w blogu Landon Fuller.

Jednak centrum aplikacji jest dystrybuowane jako statycznie połączona biblioteka udostępniona, która jest opakowana w "grubą" fałszywą strukturę. Oznacza to, że zestaw SDK jest połączony w czasie kompilacji , a nie w czasie uruchamiania, aby uzyskać lepszą wydajność. Ładowanie wielu dynamicznych połączonych bibliotek udostępnionych zajmuje trochę czasu.

Firma Apple zaleca optymalizację uruchamiania aplikacji, aby nie przekraczała 400 ms w sesji WWDC. W szczególności zalecają statyczne biblioteki udostępnione za pośrednictwem dynamicznych udostępnionych, aby osiągnąć ten cel. Rozpowszechnianie zestawu SDK centrum aplikacji dla systemu iOS jako statycznie połączonej biblioteki udostępnionej jest zgodne z zaleceniem firmy Apple w celu zapewnienia najlepszej wydajności i minimalnego wpływu na aplikację obejmującą zestaw SDK.

Aby dowiedzieć się więcej na temat statycznie połączonych bibliotek udostępnionych a dynamicznych połączonych bibliotek udostępnionych, zalecamy ogólną dokumentację firmy Apple dotyczącą tego tematu.

Dlaczego pliki binarne zestawu SDK są tak duże? Martwię się o rozmiar aplikacji

Pliki binarne AppCenter są dystrybuowane jako struktury "fat", które zawierają wycinki dla wszystkich architektur iPhone'a i symulatora iPhone'a. Dlatego na przykład aplikacja AppCenter.framework to 10,5 MB do pobrania.

Skompilowany rozmiar plików binarnych zestawu SDK będzie znacznie mniejszy niż .framework rozmiar dodany do aplikacji w programie Xcode. Należy również pamiętać, że kompilacje wydania będą mniejsze niż kompilacje debugowania.

Aby to zilustrować, utworzyliśmy pustą aplikację Objective-C z kodem Xcode 9.2, dodaliśmy pliki binarne Centrum aplikacji do aplikacji i dystrybuowane kompilacje wydania do telefonu iPhone 7 z systemem iOS 11.3.

Uruchomiliśmy testy bez włączonego kodu bitowego i nie używaliśmy funkcji Rozrzedzenia aplikacji. Możesz użyć tych technik, aby zmniejszyć rozmiar binarny aplikacji jeszcze bardziej.

Poniższe liczby mogą się różnić i zależeć od ustawień kompilacji, dlatego należy wziąć pod uwagę ich przybliżony przewodnik. Oznacza to, że dodanie zestawu SDK centrum aplikacji do aplikacji ma minimalny wpływ na rozmiar pliku binarnego aplikacji.

Używane moduły usługi App Center Wyeksportowany rozmiar usługi IPA Rozmiar instalacji
Brak (pusta aplikacja) 24 KB 132 KB
Analiza w usłudze App Center 120 KB 377 KB
Awaria usługi App Center 239 KB 705 KB
Dystrybucja w usłudze App Center 163 KB 528 KB
Wszystkie moduły usługi App Center 314 KB 930 KB

Ochrona wartości wpisu tajnego centrum aplikacji

Jest app_secret to identyfikator aplikacji, który musi wiedzieć, której aplikacji dotyczy ruch, i nie można jej użyć do pobrania ani edytowania istniejących danych. Jeśli dane app_secret są narażone, największym ryzykiem jest wysłanie nieprawidłowych danych do aplikacji, ale nie będzie miało to wpływu na bezpieczeństwo danych.

Aby pobrać wszelkie poufne dane, należy podać token aplikacji/użytkownika, który jest generowany po stronie klienta. Nie ma możliwości całkowitego zabezpieczenia danych po stronie klienta.

Bezpieczeństwo aplikacji można poprawić przy użyciu zmiennej środowiskowej w celu wstrzyknięcia wpisu tajnego aplikacji do kodu. Dzięki temu wpis tajny nie jest widoczny w kodzie.