András Tóth‘s professional blog
banditoth.net

Hey there 👋, I’m banditoth a .NET MAUI developer from Hungary.
I write about software development with .NET technologies.

You can find me on:
LinkedIn | Github | StackOverflow | X / Twitter | Threads

  • Multilingual App Toolkit build fail Visual Studio Mac-en

    This content has 5 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.
    ProjectName is Multilingual build enabled, but the Multilingual App Toolkit is unavailable during the build
    

    Mivel a Mac-es VS-hez nincs Multilingual App Toolkit, ezért ideiglenesen ki kell kapcsolni a buildből a Toolkitet. Ezt a solution unloadolásával tehetjük meg, majd szerkesztjük a .csproj fájlt a következőek szerint:

    A fájl végén található Import tageket ki-XML-kommentezzük:

    <!-- <Import Project="$(MSBuildExtensionsPath)\Microsoft\Multilingual App Toolkit\Microsoft.Multilingual.ResxResources.targets" Label="MultilingualAppToolkit" Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\Multilingual App Toolkit\v$(MultilingualAppToolkitVersion)\Microsoft.Multilingual.ResxResources.targets')" /> -->
      <!-- <Target Name="MATPrerequisite" BeforeTargets="PrepareForBuild" Condition="!Exists('$(MSBuildExtensionsPath)\Microsoft\Multilingual App Toolkit\Microsoft.Multilingual.ResxResources.targets')" Label="MultilingualAppToolkit">
        <Warning Text="$(MSBuildProjectFile) is Multilingual build enabled, but the Multilingual App Toolkit is unavailable during the build. If building with Visual Studio, please check to ensure that toolkit is properly installed." />
      </Target> -->
    
  • Firebase Admin SDK C#: iOS-en nincs hang a PushNotification megérkezésekor.

    This content has 5 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.

    Androiddal ellentétben, iOS-en, amennyiben nem határozzuk meg expliciten azt, hogy a készülék hangot játsszon le a RemoteNotification megérkezésekor, a készülék némán kézbesíti az értesítést.

    Amennyiben a C#-os FirebaseAdmin SDK implementációt használjuk a PushNotificationok kiküldéséhez, platformspecifikus mezőket kell használni a Notification-ban.

    Forrás: https://firebase.google.com/docs/cloud-messaging/send-message#when-to-use-common-fields

    A hangot az apns objektumban kell meghatározni az iOS platform számára. C# implementációbanban a Notification osztály tartalmaz egy APNs obejktumot, amelynek a következők szerint kell értéket adni:

            var Message = new FirebaseAdmin.Messaging.Message()
                {
                    Notification = new FirebaseAdmin.Messaging.Notification
                    {
                        Title = title,
                        Body = message,            
                    },
                    Token = token,
                    Data = data,
                    Apns = new FirebaseAdmin.Messaging.ApnsConfig()
                    {
                        Aps = new FirebaseAdmin.Messaging.Aps()
                        {
                            Sound = "default"
                        }
                    }
                };
    

    A default paraméter az értesítések alapértelmezett hangját szólaltatja meg a telefonnal. Amennyiben saját hangot szeretnénk lejátszani, azt is itt kell meghatározni.

  • KeyboardFlags.CapitalizeWord nem működik iOS-en

    This content has 5 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.

    Ha úgy vesszük észre, hoyg a Keyboard.Create nem működik CapitalizeWord enumértékkel iOS-en, de Androidon igen, akkor gyanakodjunk a következőre:

    FullNameEntry.Keyboard = Keyboard.Create(KeyboardFlags.CapitalizeWord);
    

    A készülék beállításai között, az Általános / Billentyűzet menüpont alatt, ha nincs bekapcsolva az Auto-Capitalization, azaz az Automata nagybetűk funkció, az iOS figyelmenkívűl hagyja az általunk kódbol beállított értéket.

  • AppStore publish error: ITMS-90809 (Deprecated API Usage WebView-re [Xamarin])

    AppStore publish error: ITMS-90809 (Deprecated API Usage WebView-re [Xamarin])

    This content has 5 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.

    Alkalmazás publikálásánál az AppStore-ban a következőt jelzi vissza az Apple:

    ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs . See https://developer.apple.com/documentation/uikit/uiwebview for more information.
    

    Ez azért van, mert a Xamarin Forms WebView implementációja a Xamarin Forms 4.4-es verziójánál kisebb verziókban a UIWebView-t használja platformspecifikus implementációként. (Forrás: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/webview?tabs=windows#performance)

    "Therefore, since Xamarin.Forms 4.4, the Xamarin.Forms WebView is implemented on iOS by the WkWebView class, which supports faster browsing."
    

    Főverzió frissítése után nem szabad dobnia a hibát a publikálásnál. Az alkalmazás publikálása ettől függetlenül végbemegy, amennyiben csak ez a hiba

  • Xamarin Forms Maps: Nagyításra szánt gombok eltűntetése

    Xamarin Forms Maps: Nagyításra szánt gombok eltűntetése

    This content has 5 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.

    Androidon default megjelennek a Xamarin.Forms.Maps.Map használata esetén a nagyításra szánt + és – gombok, illetve a felhasználó aktuális pozíciójára mozgató gomb.
    Ezeknek eltűntetéséhez egy CustomMapRenderer-t kell létrehozni, és az Androidos rendererben be kell állítani a térképen, hogy ne jelenlítse meg ezeket a plusz gombokat.

    Xamarin Forms kód:

    public class CustomMap : Map
        {
            public CustomMap(MapSpan region) : base(region)
            {
            }
        }
    

    Xamarin.Android kód:

    [assembly: ExportRenderer(typeof(CustomMap), typeof(CustomMapRenderer))]
    
    namespace SampleApp.Droid.Renderers
    {
        public class CustomMapRenderer : MapRenderer
        {
    		protected override void OnMapReady(GoogleMap map)
    		{
    			base.OnMapReady(map);
    			// Nagyításhoz gombok 
    			map.UiSettings.ZoomControlsEnabled = false;
    			// Saját helyzet gombok
    			map.UiSettings.MyLocationButtonEnabled = false;
    		}
        }
    }