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
- W konsoli poszukaj dziennika asertywnego z komunikatem "Zestaw SDK centrum aplikacji został pomyślnie skonfigurowany". Komunikat oznacza, że zestaw SDK został pomyślnie skonfigurowany.
- 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 AppCenter
uruchom poleceniepod repo update
, aby zaktualizować lokalne repozytorium Cocoapods, a następnie uruchom ponownie.pod install
- 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
. - 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
Upewnij się, że moduły zestawu SDK zostały poprawnie zintegrowane.
Upewnij się, że prawidłowy wpis tajny aplikacji jest uwzględniony wraz z
start:withServices:
wywołaniem metody. Możesz skopiować dokładnystart:withServices:
kod, otwierając aplikację w portalu i przechodząc do strony Wprowadzenie.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.
Upewnij się, że urządzenie jest w trybie online.
Czasami dzienniki mogą potrwać kilka minut, aby wyświetlić je w portalu. Poczekaj trochę czasu, jeśli tak jest.
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
Upewnij się, że moduły zestawu SDK zostały poprawnie zintegrowane.
Upewnij się, że prawidłowy wpis tajny aplikacji jest uwzględniony wraz z
start:withServices:
wywołaniem metody. Możesz skopiować dokładnystart:withServices:
kod, otwierając aplikację w portalu i przechodząc do strony Wprowadzenie.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.
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.
Nie używaj żadnych innych bibliotek, które zapewniają funkcję raportowania awarii. W aplikacji można zintegrować tylko jeden zestaw SDK raportowania awarii.
Upewnij się, że urządzenie jest w trybie online.
Czasami dzienniki mogą potrwać kilka minut, aby wyświetlić je w portalu. Poczekaj trochę czasu, jeśli tak jest.
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.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.