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();</pre>
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.
Senior Software Engineer, @Microsoft
Ada ve Ege'nin babası ;)
Makale Adedi: 484