06 Şub 2008 WAP – Mobil Aygıta Göre Sayfaların Render Edilmesi Kategori: Mobil Etiketler: Windows Phone 0 Yorum Merhaba arkadaşlar, bu makalemizde WAP kontrollerinden device specific kontrolünden bahsedeceğiz. Bu kontrol bize telefon modeline göre sonucun WML, HTML, XHTML, CHTML olarak render edilmesini sağlıyor.Daha önceki makalem de Wap kontrollerini anlatırken çok kısa da olsa bu kontrolün ne ise yaradıgını anlatmıstım. Hatırlatmak gerekirse; Cep telefonlarının destekledigi markup diline göre kodumuzun render edilmesini saglar. Örnegin html destekleyen bir telefonda sonuç html üretilir, WML destekleyen bir telefonda sonuç WML olarak üretilir. XHTML destekleyen telefonda da XHTML olarak üretilir. Bu kontrolü niçin kullanırım? Bir wap uygulaması gelistirdigimizde her ziyaretçinin uygulamayı sorunsuz sekilde kullanabilmesi için bu kontrolü kullanırız. Kullanıcı arka planda telefonun ne destekledigini bilemeyeceginden yada bu uygulama bu telefon da çalısmaz diyemeyecegimizden bu kontrol ile uygulamamızın tüm telefonlar da çalısmasını saglarız. Choice Render edilecek Markup dili belirliyor. WML render edilecekse içerisine WML'e göre kod yazıyoruz. Html ise Html'e göre yazıyoruz. ContentTemplate Her yerde oldugu gibi burada da ContentTemplate çıkıyor karsımıza. Content Template içerisine Choice'de seçilen dile göre content template içerisindeki kod render edilecek. DeviceSpecific Kullanımı Uygulamanın WML ve HTML destekleyen telefonlar da çalısabilmesi için asagıdaki gibidir; <mobile:Panel ID="Panel1" runat="server"> <mobile:DeviceSpecific ID="DeviceSpecificControl" Runat="server"> <Choice Filter="isWML11"> <ContentTemplate> <!- WML Render Edilecek --> </ContentTemplate> </Choice> <Choice Filter="isHTML32"> <ContentTemplate> <!-- HTML Render edilecek --> </ContentTemplate> </Choice> </mobile:DeviceSpecific> </mobile:Panel> Bu kodun çalısması için WebConfig dosyasına Tanımlı DeviceFilter'ları eklememiz gerekir. Genel olarak 2 DeviceFilter kullanılsa da farklı devicefitlerlar'da bulunmaktadır. Asagıda bazı device filter'lar gösterilmistir. <deviceFilters> <filter name="isWML11" compare="PreferredRenderingType" argument="wml11" /> <filter name="isHTML32" compare="PreferredRenderingType" argument="html32" /> <filter name="isCHTML10" compare="PreferredRenderingType" argument="chtml10" /> <filter name="isMyPalm" compare="Browser" argument="MyPalm" /> <filter name="isPocketIE" compare="Browser" argument="Pocket IE" /> <filter name="isJPhone" compare="Type" argument="J-Phone" /> <filter name="isEricssonR380" compare="Type" argument="Ericsson R380" /> <filter name="isNokia7110" compare="Type" argument="Nokia 7110" /> <filter name="supportsColor" compare="IsColor" argument="true" /> <filter name="supportsCookies" compare="Cookies" argument="true" /> <filter name="supportsJavaScript" compare="Javascript" argument="true" /> <filter name="supportsVoiceCalls" compare="CanInitiateVoiceCall" argument="true" /> </deviceFilters> Farklı bir Filter(örnegin CHTML ve PocketIE) ile render yapılmasını istiyorsak; asagıdaki gibi kullanırız. <mobile:Panel ID="Panel1" runat="server"> <mobile:DeviceSpecific ID="DeviceSpecificControl" Runat="server"> <Choice Filter=" isCHTML10"> <ContentTemplate> <!- WML Render Edilecek --> </ContentTemplate> </Choice> <Choice Filter=" isPocketIE "> <ContentTemplate> <!-- HTML Render edilecek --> </ContentTemplate> </Choice> </mobile:DeviceSpecific> </mobile:Panel> Örnek Konu ile basit bir örnek yapalım. Örnegimizde WML ve HTML destekleyen basit bir sayfa hazırlayacagız. Projemize yeni bir Mobile Form ekleyelim. Mobile Formumuza bir DeviceSpecific kontrolü ekleyelim. Yukarıda anlattıgım DeviceFilter'ları da webCofig'e ekleyelim. Formum yukarıdaki gibi bir görüntü olustu. Simdi html kısma gidelim; asagıdaki kodları yazalım. DeviceSpecific.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="DeviceSpecific.aspx.cs" Inherits="WAPSamples_DeviceSpecific" %> <%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile" %> <html xmlns="http://www.w3.org/1999/xhtml"> <body> <mobile:Form ID="Form1" Runat="server"> <mobile:Panel ID="Panel1" Runat="server"> <mobile:DeviceSpecific ID="DeviceSpecificControl" Runat="server"> <Choice Filter="isWML11"> <ContentTemplate> Bu Sayfa WML ile Render Edilmistir... </ContentTemplate> </Choice> <Choice Filter="isHTML32"> <ContentTemplate> Bu Sayfa HTML ile Render Edilmistir... </ContentTemplate> </Choice> </mobile:DeviceSpecific> </mobile:Panel> </mobile:Form> </body> </html> Gördügünüz gibi çok basit. Simdi sayfamızı test edelim. Evet; farklı telefonlar da farklı sonuçlar aldık. Birde Web'den bakalım Evet artık wap uygulamalarımızı her yerde çalıstırabiliyoruz J Bu makalenin de sonuna geldik. Bir sonraki makale de görüsmek üzere. Iyi çalısmalar dilerim Sem Göksusem.goksu@yazilimgunlugu.com www.semgoksu.com | www.yazilimgunlugu.com Kaynaklar http://www.w3schools.comhttp://www.msdn.com Yorum (0) Bu yazıya henüz yorum yapılmamış... Yorum Yaz * Ad Soyad: * Email: * Message: