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

Arşiv

Etiketlenen yazılar marketplace

MEA Influencer Community Platform

05 September 2013 Yorum yapılmamış

Sizleri MEA Influencer Community Program hakkında bilgilendirmek istiyorum.

MEA Influencer Windows 8 uygulaması sayesinde, Windows Azure, Windows Phone, Windows 8 konularında MEA bölgesinde (Ortadoğu ve Afrika) üretilen tüm blog yazılarına, webcast’lere ve uygulamalara kolaylıkla erişebilirsiniz.

MEA Influencer uygulamasını kullanarak takip etmek istediğiniz teknoloji ile ilgili üretilen tüm içeriklere tek bir yerden ulaşabilirsiniz.

Gelişmiş filtreleme özellikleri sayesinde, geçmiş veya gelecek webcast’leri, yayınlanmış uygulamaları ve makaleleri istediğiniz kategoriye göre filtreleyebilirsiniz.

Ayrıca paylaşımı yapana göre (MVP, MSP veya Influencer) veya paylaşımın diline göre (Türkçe, İngilizce veya Arapça) filtreleme yapabilirsiniz.

Kendi tercihlerinize göre filtrelerinizi varsayılan olarak kaydedebilirsiniz, böylece uygulamayı her kullandığınızda varsayılan tercihlerinize göre otomatik filtreleme yapılır.

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 için Bing arama uygulaması

02 August 2013 1 yorum

Windows Phone uygulamamıza internetten arama özelliği eklememiz gerektiği durumda, Bing arama motorunun API desteği olduğu için bunu yapabilmemiz çok zor olmayacaktır.

Windows Azure Markeplace üzerinden erişebileceğiniz Bing Search API – Web Results Only API sayfasından Bing Web Search API kullanım bilgilerine erişebiliriz, gerekli yetkiyi alabiliriz.

İlk olarak Sign In linkine tıklayarak oturum açalım ve aylık 5000 aramayı ücretsiz yapabilmemize olanak sağlayacak Sign Up butonuna tıklayarak gerekli yetkiyi alalım.

Sign Up butonuna tıkladığınızda ekrana sözleşme şartlarını kabul etmenizi sağlayacak bir ekran gelecek. Basitçe ileri-ileri diyerek geçebileceğiniz ekranlardan sonra aylık 5000 aramayı ücretsiz yapabileceğiniz yetkiyi almış olacaksınız.

Gelelim Windows Phone 8 projemize;

MainPage.xaml dosyasını açarak tasarımı aşağıdaki gibi olacak şekilde değiştirelim;

<phone:PhoneApplicationPage
	x:Class="BingSearchSample.MainPage"
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
	xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
	xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
	xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
	mc:Ignorable="d"
	FontFamily="{StaticResource PhoneFontFamilyNormal}"
	FontSize="{StaticResource PhoneFontSizeNormal}"
	Foreground="{StaticResource PhoneForegroundBrush}"
	SupportedOrientations="Portrait" Orientation="Portrait"
	shell:SystemTray.IsVisible="True">

	<StackPanel>
		<StackPanel Orientation="Horizontal" Margin="10,0,0,0">
			<Image Source="/Assets/bing-logo.png" Width="120" Height="45" />
			<TextBox Name="SearchKey" Width="350" InputScope="Search" KeyUp="SearchKey_OnKeyUp" />
		</StackPanel>

		<phone:LongListSelector Name="SearchResultList" Height="655" SelectionChanged="SearchResultList_OnSelectionChanged">
			<phone:LongListSelector.ItemTemplate>
				<DataTemplate>
					<StackPanel Margin="0,0,0,30">
						<TextBlock Text="{Binding Title}" Style="{StaticResource PhoneTextTitle2Style}" />
						<TextBlock Text="{Binding Description}" Style="{StaticResource PhoneTextSmallStyle}" TextWrapping="Wrap" />
						<TextBlock Text="{Binding DisplayUrl}" Style="{StaticResource PhoneTextAccentStyle}" />
					</StackPanel>
				</DataTemplate>
			</phone:LongListSelector.ItemTemplate>
		</phone:LongListSelector>
	</StackPanel>

	<phone:PhoneApplicationPage.ApplicationBar>
		<shell:ApplicationBar>
			<shell:ApplicationBarIconButton IconUri="/Assets/feature.search.png" Text="ara" Click="SearchButton_OnClick"></shell:ApplicationBarIconButton>
		</shell:ApplicationBar>
	</phone:PhoneApplicationPage.ApplicationBar>

</phone:PhoneApplicationPage>

Bir StackPanel içerisine Bing logosu ve arama kelimesinin girileceği TextBox nesnesini ekliyoruz;

<StackPanel Orientation="Horizontal" Margin="10,0,0,0">
	<Image Source="/Assets/bing-logo.png" Width="120" Height="45" />
	<TextBox Name="SearchKey" Width="350" InputScope="Search" KeyUp="SearchKey_OnKeyUp" />
</StackPanel>

SearchKey isimli TextBox nesnesinin InputScope özelliğine Search değerini veriyoruz, böylece TextBox‘a giriş yaparken klavye’de arama butonu gözüküyor olacak;

Sayfaya ApplicationBar, içerisine de ApplicationBarIconButton ekliyoruz, icon olarak feature.search.png dosyasını kullanacağız.

SDK ile birlikte bilgisayarınıza yüklenen örnek icon‘lara aşağıdaki yol ile ulaşabilirsiniz;

C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Icons

Arama kutusuna kelime girerken arama butonuna basıldığında veya ApplicationBar‘daki arama butonuna basınca Bing üzerinde arama yapacağız, TextBox‘ın KeyUp event’ini ve ApplicationBarIconButton‘ın Click event’ini yakalıyoruz;

private void SearchKey_OnKeyUp(object sender, KeyEventArgs e)
{
	if (e.Key == Key.Enter)
	{
		SearchBing();
	}
}

private void SearchButton_OnClick(object sender, EventArgs e)
{
	SearchBing();
}

Asıl arama olayının döneceği SearchBing() method’unu yazmadan önce projemizde yapmamız gereken düzenlemeler var.

Projenin References‘ına sağ tuşla tıklayıp Nuget Package Manager penceresini açalım ve Microsoft.Data.Services.Client paketini aratalım, OData Client for Windows Phone Apps paketini projeye ekleyelim;

Bing Search API – Web Results Only sayfasından bulabileceğiniz .NET C# Class Library class dosyasını indirip projeye ekliyoruz.

Gelelim SearchBing() method’una;

private void SearchBing()
{
	SystemTray.SetProgressIndicator(this, new ProgressIndicator
	{
		IsVisible = true,
		IsIndeterminate = true,
		Text = "Bing üzerinden arama yapılıyor..."
	});

	var searchUri = new Uri("https://user:[AccountKey]@api.datamarket.azure.com/bing/search");

	var container = new BingSearchContainer(searchUri);
	var query = container.Web(SearchKey.Text, null, null, null, null, null, null, null);

	query.BeginExecute(ar =>
	{
		var state = ar.AsyncState as DataServiceQuery<WebResult>;

		if (state != null)
		{
			var result = state.EndExecute(ar);

			if (result != null)
			{
				Dispatcher.BeginInvoke(() =>
				{
					SearchResultList.ItemsSource = result.ToList();

					SystemTray.SetProgressIndicator(this, null);
				});
			}
		}
	}, query);
}

İlk olarak SystemTray sınıfının static SetProgressIndicator method’unu çağırıyoruz, böylece arama başladığında ekranın üstünde ilerleme çubuğu belirecek;

Bing Search API – Web Results Only sayfasından elde edeceğiniz AccountKey ile Bing Search Uri oluşturuyoruz.

BingSearchContainer sınıfından yeni bir instance oluşturup, Web() method’unu çağırıyoruz, parametre olarak arama kelimemizi veriyoruz.

BeginExecute() method’u ile aramayı başlatıyoruz, gerekli kontrolleri yaptıktan sonra arama sonuç listesini Dispatcher.BeginInvoke içerisinde ekrandaki LongListSelector nesnesine bağlıyoruz.

Son olarak, LongListSelector içerisinde listelenen öğelerden birine tıklandığında ilgili adrese gitmesi için SelectionChanged event’ini yakalıyoruz;

var item = SearchResultList.SelectedItem as WebResult;

if (item != null)
{
	var webBrowserTask = new WebBrowserTask { Uri = new Uri(item.Url, UriKind.Absolute) };
	webBrowserTask.Show();
}

Windows Phone 8 Beta uygulama geliştirme ile ilgili sıkça sorulan sorular

16 July 2013 Yorum yapılmamış

Katıldığım etkinliklerde, twitter üzerinden ve mail adresime gönderilen sorulardan, Windows Phone 8 için geliştirilen uygulamanın beta test‘e açılmasına ilişkin olanları ve cevaplarını aşağıda toparlamaya çalıştım;

Beta olarak Windows Phone Marketplace’e gönderdiğim uygulama ne zamana kadar marketplace’de yer alır?
Gönderdiğiniz uygulama başarılı bir şekilde yayına girdikten sonra 90 gün boyunca marketplace’de yer alacaktır. Eğer hangi uygulamalarınızın beta test sürecinde olduğunu unutursanız her zaman developer hesabınızla giriş yapıp, uygulamalarım listesinden beta uygulamalarım seçeneğini işaretleyebilirsiniz

Süresi dolduktan sonra uygulamaya ne olur?
Siz ve beta test süresi boyunca uygulamayı telefonlarına yüklemiş olan kullanıcılar uygulamayı kullanamazlar. Beta test sürecine dahil olmuş kullanıcılar ya uygulamayı telefonlarından kaldırabilirler ya da size geribildirim yapabilirler

Beta test sürecinde olan uygulama yükleyenlerin telefonlarından silinebilir mi?
Hayır, developer hesabınız üzerinden bunu yapabilmeniz mümkün değil. Sadece uygulamayı yüklemiş olan kullanıcılar telefonlarından uygulamayı kaldırabilirler

Developer hesabımdan beta test sürecindeki uygulamayı kaldırsam ne olur?
Beta tester olarak tanımlanmış kişilerden uygulamayı o ana kadar yüklemeyenler artık uygulamayı göremezler ve telefonlarına yükleyemezler. Yüklemiş olanların telefonlarından kendiliğinden silinmez

Bir uygulamaya beta tester olabilmek için Microsoft Live hesabı sahip olmak zorunlu mu?
Evet, beta tester listesine sadece Microsoft Live hesaplar dahil edilebiliyor

Beta test sürecine alınmış uygulama ücretli olabilir mi?
Hayır, beta test sürecindeki uygulamalar ücretli olamaz

In-App Purchase özelliği beta test sürecinde test edilebilir mi?
Evet, hatta Microsoft In-App Purchase özelliğinin en doğru beta test sürecinde test edileceğini söylüyor

Beta test sürecindeki uygulamalar Windows Phone Marketplace’de gizli midir?
Evet, beta test sürecindeki tüm uygulamalar marketplace’de gizlidir. Aranarak bulunamazlar, sadece beta tester listesine dahil olan kullanıcılar ilgili uygulamayı görebilir ve telefonuna yükleyebilir

90 günlük beta test süresi değiştirilebilir mi?
Hayır, süreyi kısaltmak veya uzatmak mümkün değil. Beta süresi’ni uzatmak için tek yapabileceğiniz, uygulamayı tekrar beta test sürecine sokup, 90 gün daha kazanmak

Beta test sürecindeki uygulamaya güncelleme çıkabilir mi?
Evet, beta test sürecindeki uygulamalar güncellenebilir. Telefonlarına yüklemiş olan beta tester listesinde kullanıcılar güncellemeyi görüp uygulamayı güncelleyebilirler

Kısa Sınav – 19

29 May 2013 Yorum yapılmamış

Windows Phone Marketplace‘e gönderebileceğiniz en büyük XAP dosyası boyutu nedir?

  • 100 MB
  • 1 GB
  • 2 GB
  • Limit yoktur

Sorunun doğru cevabı için; Devamını oku…