Xamarin: FirebaseMessaging update = breaking production

Az alapvető probléma az az, hogy az Apple megszünteti Áprilistól a UIWebView használatát, és minden olyan binárist, ami ezt az implementációt tartalmazza, elfogják utasítani a Store-ba való publikálásnál. Erre léptek egyet a Xamarin fejlesztők, és kijelentették, hogy a Xamarin Forms 4.4-től felfelé megváltoztatták WebView implementációt iOS-en , hogy az új iOS VKWebView implementációját használja. Felfrissítettem minden csomagot úgy, hogy 4.4 legyen a Forms verzió, de ez nem hozta a várt eredményt, mert a csomagba ugyanúgy belecsomagolja a fordító a UIWebView-t. Erről egy Microsoftos srác blogján olvastam, hogy a visszafelé kompatibilitás miatt a linkerbe is belekellet nyúlniuk (https://devblogs.microsoft.com/xamarin/uiwebview-deprecation-xamarin-forms/), de hoyg hatása legyen az alkalmazásra csak a Xamarin Forms 4.5 verziójától érvényes. Viszont a Xamarin Forms 4.5-ös verziójába behozták Androidhoz az AndroidX libraryt, aminek a hatására egy csomó androidos szívás jött cserébe, mert a visszafelé kompatibilitás miatt az android 10 alatti libekhez is kellenek NuGet csomagok, és az android 10 és feletti AndroidX könyvtárakhoz is kellenek NuGet csomagok, úgyhogy végtelen NuGet installba kezdtem. Nem maradt már végül olyan csomag a Solutionben, amit ne kellett volna a függőségek miatt updatelni. Ezzel csak az volt a baj, hogy mivel minden csomag frissült, a Xamarin Firebase iOS bindingban pedig el van szúrva jelenleg is valami, méghozzá az, hogy az appokat az apple kapásból visszautasítja, mert olyan metódusnevet használ az egyik Xamarin.Firebase.IOS framework, ami blacklistes az apple szerint, éppen ezért a te appodat élből dobják vissza. Erre persze nekünk a PushNotificationök miatt van szükségünk, ezért nem hagyhatjuk figyelmen kívül a funkcionalitást egy kis időre. Szerencsére mások is észrevették, hogy ez a hiba nem jó így, és a hiba már ki is van javítva, de a pull request ott áll még a Xamarin előtt, mert a srác 16 órája még módosítást eszközölt a kódban. (https://github.com/xamarin/GoogleApisForiOSComponents/pull/388https://github.com/xamarin/GoogleApisForiOSComponents/pull/388)

Erre még rájött az, hogyha minden csomagot a Pre-Releasere updatelsz, vagy csak szimplán hagyod a 4.5-ös Formsot, a hozzáfrissített Xamarin.IOSFirebase implementációval hogy iOS-re releasebe forduljon, lazán kifordítja az appot, és miután elindul az app kivágja a usert a főképernyőre. Szerencsére debug windowban ott a hiba, hogy : “dyld: symbol ‘OBJC_CLASS$_GULUserDefaults’ not found, expected in ‘/private/var/containers/Bundle/Application/ID/APPLICATIONNAME/Frameworks/GoogleUtilities.framework/GoogleUtilities’, dyld: symbol ‘OBJC_CLASS$_GULUserDefaults’ not found, expected in ‘/private/var/containers/Bundle/Application/ID/APPLICATIONNAME/Frameworks/GoogleUtilities.framework/GoogleUtilities’, ” ami remélhetőleg szintén javítva lesz ebben a pull requestben, mert ez már a Google frameworkje miatt lehet (abból sejtem, mert ezt már maga az XCode mondja, és nem a VisualStudio/Xamarin)

Úgyhogy egyetlen megoldásunk az maradt, hogy az ügyfélnek úgy tesszük ki testflightra az appokat, hoyg elviseljük az Apple warningjait, hogy deprecated a UIWebView. Aztán mivel ez egy időzített bomba, hamarosan berobban, és majd nem fogják ezeket elfogadni, akkor viszont a Xamarin.IOS.Firebase csomag frissítésétől fogunk függeni.

This content has 4 years. Some of the information in this post may be out of date or no longer work. Please, read this page keeping its age in your mind.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.