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

Arşiv

Etiketlenen yazılar sharelinktask

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.

Windows Phone 8 SaveRingtoneTask ile melodi kaydetme

19 August 2013 Yorum yapılmamış

Windows Phone 8 için geliştirdiğiniz uygulamada, kullanıcıya telefonun çalma melodisi kaydetme özelliği vermek istiyorsunuz. Örneğin bir bankaya ait olacak uygulama geliştiriyorsunuz ve uygulamanın kullanıcısının telefonun çalma melodisi olarak bankanın reklam jingle‘ını seçebilmesini istiyorsunuz.

Windows Phone SDK ile gelen SaveRingtoneTask sınıfı sayesinde bunu başarabilirsiniz. SaveRingtoneTask sınıfının kullanımı oldukça basit, Windows Phone 8 için Share Task’larının kullanımı makalesinde bahsettiğim share task‘ların kullanımına çok benziyor;

var task = new SaveRingtoneTask();
task.Completed += delegate(object _sender, TaskEventArgs _e)
{
	if(_e.TaskResult == TaskResult.OK)
	{
		MessageBox.Show("Ringtone kaydedildi!..");
	}
};
task.Source = new Uri("appdata:/cemilusta.wma");
task.DisplayName = "cemil usta akçaabat köftesi :)";
task.Show();

cemil usta akçaabat köftesi reklam jingle indir

Windows Phone 8 için Share Task’larının kullanımı

20 December 2012 Yorum yapılmamış

Windows Phone 8 için share task‘ları kullanacağımız bir uygulama geliştireceğiz.

Bu uygulamanın geliştirilmesi sırasında ShareStatusTask, ShareLinkTask, ShareMediaTask, CameraCaptureTask gibi yapıları kullandığımız kodlar yazacağız.

Öncelikle ShareTasks isimli yeni bir Windows Phone App projesi oluşturalım;

Share Tasks Windows Phone Application Project

Proje oluşturduktan sonra gelen Windows Phone Platform versiyon seçim penceresinde Windows Phone OS 8.0 seçeneğinin seçili olduğundan emin olmalıyız;

Windows Phone 8.0 SDK

Ekran tasarımı için MainPage.xaml dosyasını aşağıdaki gibi güncelleyelim;

<Grid x:Name="LayoutRoot" Background="Transparent">
	<Grid.RowDefinitions>
		<RowDefinition Height="Auto" />
		<RowDefinition Height="Auto" />
		<RowDefinition Height="Auto" />
		<RowDefinition Height="Auto" />
		<RowDefinition Height="Auto" />
		<RowDefinition Height="Auto" />
		<RowDefinition Height="Auto" />
		<RowDefinition Height="Auto" />
		<RowDefinition Height="Auto" />
		<RowDefinition Height="Auto" />
		<RowDefinition Height="Auto" />
	</Grid.RowDefinitions>

	<Grid.ColumnDefinitions>
		<ColumnDefinition Width="125"  />
		<ColumnDefinition Width="*" />
	</Grid.ColumnDefinitions>

	<TextBlock Text="SHARE TASKS" Style="{StaticResource PhoneTextNormalStyle}" Margin="15,0" Grid.Row="0" Grid.ColumnSpan="2" />

	<TextBlock Text="share status" Margin="10,0,0,10" Style="{StaticResource PhoneTextExtraLargeStyle}" Grid.Row="1" Grid.ColumnSpan="2" />
	<TextBlock Text="STATUS" Margin="30,20,0,0" Style="{StaticResource PhoneTextTitle3Style}" Grid.Row="2" Grid.Column="0" />
	<TextBox Margin="0,0,0,0" Name="txtShareStatus_Status" Grid.Row="2" Grid.Column="1" />
	<Button Content="PAYLAŞ" Name="btnShareStatus" Margin="0,0,0,0" Grid.Row="3" Grid.ColumnSpan="2" Click="btnShareStatus_Click" />

	<TextBlock Text="share link" Margin="10,0,0,0" Style="{StaticResource PhoneTextExtraLargeStyle}" Grid.Row="4" Grid.ColumnSpan="2" />
	<TextBlock Text="TITLE" Margin="30,20,0,0" Style="{StaticResource PhoneTextTitle3Style}" Grid.Row="5" Grid.Column="0" />
	<TextBox Margin="0,0,0,0" Name="txtShareLink_Title" Grid.Row="5" Grid.Column="1" />
	<TextBlock Text="MESSAGE" Margin="30,20,0,0" Style="{StaticResource PhoneTextTitle3Style}" Grid.Row="6" Grid.Column="0" />
	<TextBox Margin="0,0,0,0" Name="txtShareLink_Message" Grid.Row="6" Grid.Column="1" />
	<TextBlock Text="LINK URL" Margin="30,20,0,0" Style="{StaticResource PhoneTextTitle3Style}" Grid.Row="7" Grid.Column="0" />
	<TextBox Margin="0,0,0,0" Name="txtShareLink_Url" InputScope="Url" Grid.Row="7" Grid.Column="1" />
	<Button Content="PAYLAŞ" Name="btnShareLink" Margin="0,0,0,0" Grid.Row="8" Grid.ColumnSpan="2" Click="btnShareLink_Click" />

	<TextBlock Text="share media" Margin="10,0,0,0" Style="{StaticResource PhoneTextExtraLargeStyle}" Grid.Row="9" Grid.ColumnSpan="2" />
	<Button Content="KAMERA ÇEK ve PAYLAŞ" Name="btnShareMedia" Margin="0,0,0,0" Grid.Row="10" Grid.ColumnSpan="2" Click="btnShareMedia_Click" />
</Grid>

Butonlara basıldığında tetiklenecek method’ları MainPage.xaml.cs dosyasına ekleyelim;

private void btnShareStatus_Click(object sender, RoutedEventArgs e)
{
	var Status = txtShareStatus_Status.Text;

	ShareStatusTask task = new ShareStatusTask();
	task.Status = Status;

	task.Show();
}

private void btnShareLink_Click(object sender, RoutedEventArgs e)
{
	var Title = txtShareLink_Title.Text;
	var Message = txtShareLink_Message.Text;
	var Url = txtShareLink_Url.Text;

	ShareLinkTask task = new ShareLinkTask();
	task.Title = Title;
	task.Message = Message;
	task.LinkUri = new Uri(Url, UriKind.RelativeOrAbsolute);

	task.Show();
}

private void btnShareMedia_Click(object sender, RoutedEventArgs e)
{
	CameraCaptureTask task = new CameraCaptureTask();
	task.Completed += CameraCaptureTask_Completed;

	task.Show();
}

private void CameraCaptureTask_Completed(object sender, PhotoResult e)
{
	ShareMediaTask task = new ShareMediaTask();
	task.FilePath = e.OriginalFileName;

	task.Show();
}

ShareStatusTask, ShareLinkTask, ShareMediaTask sınıflarından yeni bir örnek oluşturulup, Show() method’u çağırıldığı zaman, telefonuna bağlı hesaplardan oluşan bir liste ekrana gelir ve seçilen hesap üzerinden paylaşım gerçekleştirilir.

Uygulamayı çalıştırdığımızda ve Paylaş butonlarından birine bastığınızda aşağıdaki aşağıdaki ekran görüntülerini görüyor olmamız lazım;

Share Tasks Windows Phone 8 Application Share Tasks Windows Phone 8 Application

Projenin kodlarını buradan indirebilirsiniz.