Linkuri | Engin Polat\'ın Windows 8 , Windows Phone 8 ve C# içerikli programcılık sitesi

Arşiv

Etiketlenen yazılar linkuri

Windows Phone ShareLinkTask ile uygulamanın Marketplace adresini paylaşma

20 August 2013 Yorum yapılmamış

Windows Phone 8 için Share Task’larının kullanımı makalesinde ele aldığımız ShareLinkTask sınıfını kullanarak Windows Phone uygulamaları içerisinden link paylaşabiliyoruz;

var task = new ShareLinkTask();
task.Title = "Programcıdan Programcıya";
task.Message = "Engin Polat'ın Programcıdan Programcıya Blog'u";
task.LinkUri = new Uri("http://www.enginpolat.com", UriKind.Absolute);
task.Show();

Kullanıcının telefonuna eklediği hesaplara bağlı olarak yukarıdaki kod parçası, Facebook, Twitter, LinkedIn, Outlook gibi platformlarda paylaşım yapabilir.

Peki uygulamamızın Windows Phone Marketplace‘deki sayfasını paylaşmak istiyorsak ne yapmalıyız?

Title ve Message özelliklerine uygun değerleri girmek kolay, işin karıştığı nokta LinkUri özelliğine girilecek değerde.

Örneğin, Programcıdan Programcıya uygulamasının linki, http://windowsphone.com/s?appid=20489228-9fe9-4bf9-b313-d81f31aa02ac

appid parametresine verilecek değer WMAppManifest.xml dosyası içerisindeki ProductID özelliğinden edinilmeli.

Fakat MSDN‘deki App manifest file for Windows Phone makalesinde ProductID için önemli bir bilgi veriliyor;

Orjinali; During the app submission process, a new product ID is inserted into the manifest file
Türkçesi; Uygulama gönderimi sırasında yeni product ID manifest dosyasında güncellenir

Yani biz uygulamayı geliştirirken WMAppManifest.xml dosyasında gördüğümüz ProductID uygulamayı Windows Phone MarketPlace‘e gönderirken değişecek.

Bu problemin üstesinden gelmek için çalışma zamanında WMAppManifest.xml dosyası içerisinden ProductID değerini okumalıyız. Bunun için aşağıda geliştirdiğim ManifestFileReader sınıfını kullanabiliriz;

public class ManifestFileReader
{
	public static string GetProductID()
	{
		var settings = new XmlReaderSettings { XmlResolver = new XmlXapResolver() };

		using (var reader = XmlReader.Create("WMAppManifest.xml", settings))
		{
			reader.ReadToDescendant("App");

			return reader.GetAttribute("ProductID");
		}
	}
}

Yukarıdaki kod parçasında öncelikle XmlReaderSettings sınıfından yeni bir değişken oluşturuyoruz ve XmlResolver özelliğine XmlXapResolver sınıfından yeni bir instance veriyoruz.

Ardından XmlReader sınıfının static Create() methodunu kullanarak WMAppManifest.xml dosyasını açıyoruz, ReadToDescendant() method’u ile App node’una gidip, GetAttribute() method’u ile ProductID değerini okuyoruz.

Bu sayede uygulamanın ProductID değerini okuyabilir ve paylaşmak için http://windowsphone.com/s?appid={ProductID} formatında link hazırlayabiliriz.