2016-04-08 30 views
0

Ben xamarin.android kullanarak bir android oyun geliştiriyorum. Oyunun arka uç mantığı smartfox sunucusunda barındırılıyor ve servisleri tüketmek için smartfox Unity client API kullanıyorum. Proje mimarim: Xamarin.android -> PCL (portal sınıf kitaplığı). Smartfox sunucu istemci API'si PCL'de uygulanmaktadır. Smartfox sunucusu arka uçtan geri arama yöntemlerini tetiklemeye devam ediyor ve geri arama olaylarını yakalamamız ve bunun için UI temelini değiştirmemiz gerekiyor. Artık, bu geri çağrıları yakalayıp UI'ye gönderebilen bir mimari uygulayamıyorum. PCL içinde geri arama yapabilirim ancak bunların UI'ye nasıl iletileceği hakkında hiçbir fikrim yok. Lütfen bana bir kemer ile yardım edin. Bu belirli senaryoya uyabilir. Tetikleyicileri uygulamaya çalıştım ancak PCL'deki bir UI yöntemine nasıl erişileceğini bilmiyorum. Bir PCL'de UI'ye erişemezsiniz. PCL'ler platform agnostiktir, yani bunu gerçekten yapamazsınız. Verileri bir kullanıcı arayüzüne veya kullanıcı arayüzünü kontrol eden bir şeye iletmenin birkaç yolunu düşünebilirim. API istemciniz, UI veya denetleyicinin dinlediği bazı Olayları uygulayabilir ve burada olayı işleyebilir. Bir MVVM modeli uygulayabilir ve bir elçi veya bir Görüntüleme Servisi aracılığıyla ViewModel'i geri bildirimler hakkında bilgilendirir ve ViewModel'i buna göre işlemden geçirebilirsiniz, ardından UI'de yansıtılır.mvvm mimarisi

cevap

0

Bu senaryolarda sıklıkla bir olay toplayıcı/elçi kullanırım. Bir haberci kullanmak için MVVM'yi benimsemenize gerek yok. TinyMessenger gibi bir şey sizin için işe yarayabilir. MVVM kullanmak istiyorsanız, bu çerçevelerin çoğunun kendi messenger'ı bulunacaktır.

Bu geri bildirimlerin UI iş parçacığı dışında bir iş parçacığı üzerinde sona ereceğini varsayalım, bu nedenle kullanıcı arabirimini değiştirmeye hazır olduğunuzda, RunOnUIThread()'u described here olarak kullanmanız gerekecektir.

+0

teşekkürler ama ben mvvm kullanmam gerektiğini biliyorum, bu çağrıyı geri almak zorunda olduğumu biliyorum –

+0

Tamam, evet, bahsettiğim gibi, mesajlaşma yapmak için MVVM framework'ünüze dahil olan elçiyi kullanabilirsiniz. Örneğin, MVVM Light araç kitini kullanıyor olsaydınız, (burada [https://msdn.microsoft.com/en-us/magazine/jj694937.aspx)] ve [burada] (https: https://msdn.microsoft.com/en-us/magazine/jj694937.aspx) belgelerine sahip olarak mesajlarını kullanabilirsiniz. //msdn.microsoft.com/en-us/magazine/d485e5b7-e6dc-4cbe-93fb-dc6311ef61a6). –

+0

Teşekkürler nate. Ama ios görüntü denetleyicisine mesaj gönderen arka uç olarak smartfox kullanılan xamarin ios için bir örnek var mı. –