Xamarin.Forms Projelerinize İhtiyaç Halinde iOS veya Android Platformlarını Dahil Etmek

Merhaba

Uzun bir başlık olduğunun farkındayım fakat anlatacağım konuyu da bu şekilde isimlendirebildim 🙂 Başladığımız bir Xamarin.Forms uygulamasına sadece Android veya sadece iOS platformu ile başlayabiliriz. Fakat t anında bizden eklemediğimiz platformlar için destek vermekmemiz istenebilir.

Örneklendirelim..

Resimde görüldüğü gibi bir Xamarin.Forms projesi açıyorum fakat sadece Android platformunu ekliyorum.

Bir sebepten dolayı, geliştirdiğimiz ürünü iOS kullanıcılarına da açmak istediğimiz güne geldiğimizi varsayalım.

Solution’a XFSample.iOS adında bir iOS projesi ekliyorum.

Blank App seçiyorum

Son proje yapısı görseli

Şu an Shared katmanımızın yeni eklenen iOS projesinden haberi yok. Önce bu arkadaşları tanıştırıp, ardından iOS projesinin Xamarin.Forms katmanına hizmet etmesini sağlayacağız.

Xamarin.Forms paketini iOS projemize de ekliyoruz.

iOS projemizin referanslarına Shared katman projemizi referans olarak ekliyoruz.

Şimdi sıra AppDelegate sınıfındaki yapacağımız değişikliklere geldi. Öncelikle AppDelegate sınıfının UIApplicationDelegate sınıfından miras aldığını görüyoruz. Xamarin.Forms yapısında çalışmasını istediğimiz için AppDelegate sınıfının miras aldığı sınıfı FormsApplicationDelegate olarak değiştireceğiz. Çünkü ihtiyacımız olan LoadApplication methodunu bu şekilde kullanabileceğiz.

Xamarin.Forms initialize işlemini de yaparak artık iOS projemizin UI ve Back-End kodlarının Shared katman üzerinden çalışması gerektiğini söyleyip, ihtiyacımız olan iOS platformunu da kazanmış oluyoruz.

        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            // create a new window instance based on the screen size
            Window = new UIWindow(UIScreen.MainScreen.Bounds);
            Window.RootViewController = new UIViewController();

            // make the window visible
            Window.MakeKeyAndVisible();

            return true;
        }

FinishedLanunching methodunu aşağıdaki şekilde değiştiriyoruz.

        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            global::Xamarin.Forms.Forms.Init();
            LoadApplication(new App());

            return base.FinishedLaunching(application, launchOptions);
        }

Yazımın başındaki o t anı sizin için 6 ay sonrası ise geliştirdiğiniz customrenderer, dependency services gibi platform spesifik işlemlerin ve resources klasörünün iOS özelinde hazırlanması gibi işlerin zaman alacağını unutmayın lütfen 🙂

Yiğit

Xamarin Developer, Consultant & Architect. Community Leader and Director of Xamarin Türkiye

2 Comments

You can post comments in this post.


  • Merhaba bugünlerde açık akademi için çektiğiniz yayınlarınızı izliyorum bu makaleyi yayınladığınıza göre bu sorunun pek anlamı olmayacak ama xamarin hala alternatiflerine göre iyi bir seçim mi? ve Maui ile ilgili bir makale yazarsanız bayıla bayıla okurum ayrıca galiba başlığı yanlış yazmışsınız Platforlarını yazmışsınız Platformlarını olacak galiba xamarin için emekleriniz için ayrıca teşekkürler

    Sami Gülen 3 sene ago Reply


    • Merhaba,
      Bu durumu ben bir sorun olarak değil ihtiyaçların değişimi olarak tanımlarım. Xamarin <3 MAUI ile ilgili yazılar gelecek 🙂

      Yiğit 3 sene ago Reply


Post A Reply