Makale Özeti

Bu makalemde sizlere Microsoft Tag'dan ve yeni çıkmış olan API'sinin nasıl kullanılabildiğinden bahsedeceğim. Microsoft tarafından geliştirilen ve henüz Beta olan Microsoft Tag, temelde bir barkod gibi çalışmaktadır. Ancak barkoddan farklı olarak renkli olduğundan daha fazla bilgi barındırabilmektedir. Bu bilgiler bir web sitesi adresi, bir contact kartı, bir metin veya bir telefon numarası olabilmektedir. Ayrıca bu bilgiler şifre ile korunabilmekte veya sadece bir geçerlilik tarihi kapsamında erişilebilir olmaktadır. Tüm bunların yanısıra Bir Tag'ı okuyabilmek için sadece bir cep telefonunuz olması yeterli olacaktır. Birçok cep telefonu modelinde başarıyla çalışan Tag'ın okuyucusu monitör gibi ortamlardan da etiketi kolaylıkla yakalayabilmektedir. Gelecekte kartvizitlerin üzerinde, marketteki fiyat etiketlerinin yanında, reklam borşürlerinde sıklıkla görüyor olmalız olasıdır.

Makale

         Merhabalar

         Bu makalemde sizlere Microsoft Tag'dan ve yeni çıkmış olan API'sinin nasıl kullanılabildiğinden bahsedeceğim.

         Microsoft tarafından geliştirilen ve henüz Beta olan Microsoft Tag, temelde bir barkod gibi çalışmaktadır. Ancak barkoddan farklı olarak renkli olduğundan daha fazla bilgi barındırabilmektedir. Bu bilgiler bir web sitesi adresi, bir contact kartı, bir metin veya bir telefon numarası olabilmektedir. Ayrıca bu bilgiler şifre ile korunabilmekte veya sadece bir geçerlilik tarihi kapsamında erişilebilir olmaktadır. Tüm bunların yanısıra Bir Tag'ı okuyabilmek için sadece bir cep telefonunuz olması yeterli olacaktır. Birçok cep telefonu modelinde başarıyla çalışan Tag'ın okuyucusu monitör gibi ortamlardan da etiketi kolaylıkla yakalayabilmektedir. Gelecekte kartvizitlerin üzerinde, marketteki fiyat etiketlerinin yanında, reklam borşürlerinde sıklıkla görüyor olmalız olasıdır.

         Microsoft Tag'ı internet üzerinden kullanmak için http://tag.microsoft.com adresine girmeniz ve üye olmanız gerekmektedir. Oldukça kolay ve kullanışlı bir arayüze sahip olduğundan bu makalemde daha çok biz programcıları ilgilendiren API'nin nasıl kullanıldığına değineceğim.

         Api'yi kullanabilmek için öncelikle http://tag.microsoft.com/ws/accessrequest.aspx?wa=wsignin1.0 adresine girip kullanım için aşağıdaki gibi bir form doldurmanız gerekiyor.


         Bu formu doldurarak başvurunuzu tamamladıktan sonra 1 veya 2 gün içerisinde size web servisinin adresini ve size özel token'ı içeren bir mail gelecektir. Bu mail geldikten sonra web servisi kullanmaya başlayabilirsiniz. Makalemin içinde verdiğim kod örneklerinde bana ait token'ı sizlerle paylaşamayacağım için token'ı "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00" olarak kullanacağım.

         İsterseniz uygulamamızı yazmaya başlayalım.

         Öncelikle uygulamamıza mail ile gelen web servisinin referansını ekliyoruz.


         Yeni bir kategori oluşturma:
            try
            {
                TagService.MIBPContractClient insMIBPContractClient = new MicrosoftTagAPISample.TagService.MIBPContractClient();
                TagService.UserCredential insUserCredential = new MicrosoftTagAPISample.TagService.UserCredential();
                insUserCredential.AccessToken = "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00";
                TagService.Category insCategory = new MicrosoftTagAPISample.TagService.Category();
                insCategory.Name = "Dummy_Category";
                insCategory.UTCStartDate = DateTime.Now;
                insCategory.UTCEndDate = DateTime.Now.AddDays(10);//Tarih atanmazsa bitiş tarihi olmayan bir kategori yaratmış olursunuz.
                bool result = insMIBPContractClient.CreateCategory(insUserCredential, insCategory);
                if (result)
                {
                    MessageBox.Show("Category Successfully Created");
                }
                else
                {
                    MessageBox.Show("An Error Occured While Creating Category");
                }
            }
            catch (Exception ex)
            {
 
                MessageBox.Show(ex.ToString());
            }
         Microsoft Tag'ın Api'lerini kullanarak işlem yapmak için öncelikle MIBPContractClient class'ının bir instance'ını almamız gerekmektedir. Sonrasında ise bize mail ile gelen token'ı UserCredential nesnesinin bir instance'ına atarayarak servise yaptığımız her istekte göndermemiz gerekmektedir.

         Bunun devamında yeni bir kategori oluşturmak için öncelikle Category nesnesinin bir instanece'ını almalı, bu instance üzerinde tüm değerlerini atamalıyız. Oluşturduğumuz kategorinin bir son geçerlilik tarihi olmasını istemiyorsak UTCEndDate property'sine değer atamamamız gerekiyor. Bunun hemen ardından ise MIBPContractClient nesnesinin örneğinin CreateCategory isimli metoduna Credential bilgisi ve oluşturmak istediğimiz kategoriyi temsil eden nesne örneğini geçirmeliyiz. Bu metod işlemimizin başarılı olup olmadığı bilgisini geri döndürmektedir.

         Bir kategoriyi düzenleme :
            try
            {
                TagService.MIBPContractClient insMIBPContractClient = new MicrosoftTagAPISample.TagService.MIBPContractClient();
                TagService.UserCredential insUserCredential = new MicrosoftTagAPISample.TagService.UserCredential();
                insUserCredential.AccessToken = "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00";
                TagService.Category insCategory = new MicrosoftTagAPISample.TagService.Category();
                insCategory.Name = "Dummy_Category_New";
                insCategory.UTCStartDate = DateTime.Now;
                insCategory.UTCEndDate = DateTime.Now.AddDays(10);//Tarih atanmazsa bitiş tarihi olmayan bir kategori yaratmış olursunuz.
                bool result = insMIBPContractClient.UpdateCategory(insUserCredential,"Dummy_Category", insCategory);
                if (result)
                {
                    MessageBox.Show("Category Successfully Updated");
                }
                else
                {
                    MessageBox.Show("An Error Occured While Updating Category");
                }
            }
            catch (Exception ex)
            {
 
                MessageBox.Show(ex.ToString());
            }
         Kategori düzenlemenin çalışma mantığı kategori eklemek ile aynıdır. Burada dikkat edilmesi gereken tek bir nokta var o da değiştirilmek istenen kategorinin adının UpdateCategory metoduna 2. parametre olarak geçilmesi ve 3. parametre olarak bu isimdeki kategorinin yeni bilgilerinin gönderilmesidir.

         Bir kategoriyi pasif etme:
            try
            {
                TagService.MIBPContractClient insMIBPContractClient = new MicrosoftTagAPISample.TagService.MIBPContractClient();
                TagService.UserCredential insUserCredential = new MicrosoftTagAPISample.TagService.UserCredential();
                insUserCredential.AccessToken = "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00";
                bool result = insMIBPContractClient.PauseCategory(insUserCredential,"Dummy_Category_New");
                if (result)
                {
                    MessageBox.Show("Category Successfully Paused");
                }
                else
                {
                    MessageBox.Show("An Error Occured While Pausing Category");
                }
            }
            catch (Exception ex)
            {
 
                MessageBox.Show(ex.ToString());
            }
         Bir kategoriyi pasif etmek için MIBPContractClient nesnesinin PauseCategory metoduna kategorinin adını ve credential'ları göndermek yeterlidir.

         Bir kategoriyi aktive etme:
            try
            {
                TagService.MIBPContractClient insMIBPContractClient = new MicrosoftTagAPISample.TagService.MIBPContractClient();
                TagService.UserCredential insUserCredential = new MicrosoftTagAPISample.TagService.UserCredential();
                insUserCredential.AccessToken = "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00";
                bool result = insMIBPContractClient.ActivateCategory(insUserCredential,"Dummy_Category_New");
                if (result)
                {
                    MessageBox.Show("Category Successfully Activated");
                }
                else
                {
                    MessageBox.Show("An Error Occured While Activating Category");
                }
            }
            catch (Exception ex)
            {
 
                MessageBox.Show(ex.ToString());
            }
         Aynı şekilde bir kategoriyi aktive etmek için MIBPContractClient nesnesininActıvateCategory metoduna kategorinin adını ve credential'ları göndermek yeterlidir.

         Yeni bir tag oluşturma:
            try
            {
                TagService.MIBPContractClient insMIBPContractClient = new MicrosoftTagAPISample.TagService.MIBPContractClient();
                TagService.UserCredential insUserCredential = new MicrosoftTagAPISample.TagService.UserCredential();
                insUserCredential.AccessToken = "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00";
                TagService.URITag insURITag = new MicrosoftTagAPISample.TagService.URITag();//DialerTag, FreeTextTag, VCardTag nesnelerinin örnekleri alınarak bu tiplerde de tag'lar aynı mantıkla oluşturulabilir
                insURITag.Title = "New_URI_Tag";
                insURITag.MedFiUrl = "http://www.tameroz.com";
                insURITag.UTCStartDate = DateTime.Now;
                insURITag.UTCEndDate = DateTime.Now.AddDays(10);//Tarih atanmazsa bitiş tarihi olmayan bir tag yaratmış olursunuz.
                bool result = insMIBPContractClient.CreateTag(insUserCredential,"Dummy_Category_New", insURITag);
                if (result)
                {
                    MessageBox.Show("Tag Successfully Created");
                }
                else
                {
                    MessageBox.Show("An Error Occured While Creating Tag");
                }
            }
            catch (Exception ex)
            {
 
                MessageBox.Show(ex.ToString());
            }
         Yeni bir tag oluşturmak için öncelikle oluşturmak istediğimiz tag tipinden bir nesnenin örneğini almamız gerekmektedir. Bu tip DialerTag, FreeTextTag, VCardTag veya URITag tiplerinde olabilmektedir. Instance'ını aldığımız bu nesnenin ilgili property'lerinin doldurduktan sonra bu nesneyi MIBPContractClient nesnesinin CreateTag metoduna göndermemiz gerekmektedir. Bu metod ayrıca bizden oluşturulacak tag'ın hangi kategori altında oluşturulacağına dair bir parametre de almaktadır. Burada yine tag'ın geçerlilik bitiş tarihini belirlemek istemiyorsak bu özelliğe değer atamamamız gerekmektedir.

         Bir Tag'ı güncelleme:
            try
            {
                TagService.MIBPContractClient insMIBPContractClient = new MicrosoftTagAPISample.TagService.MIBPContractClient();
                TagService.UserCredential insUserCredential = new MicrosoftTagAPISample.TagService.UserCredential();
                insUserCredential.AccessToken = "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00";
                TagService.URITag insURITag = new MicrosoftTagAPISample.TagService.URITag();//DialerTag, FreeTextTag, VCardTag nesnelerinin örnekleri alınarak bu tiplerde de tag'lar aynı mantıkla oluşturulabilir
                insURITag.Title = "New_URI_Tag";
                insURITag.MedFiUrl = "http://www.yazgelistir.com";
                insURITag.UTCStartDate = DateTime.Now;
                insURITag.UTCEndDate = DateTime.Now.AddDays(10);//Tarih atanmazsa bitiş tarihi olmayan bir tag yaratmış olursunuz.
                bool result = insMIBPContractClient.UpdateTag(insUserCredential,"Dummy_Category_New","New_URI_Tag", insURITag);
                if (result)
                {
                    MessageBox.Show("Tag Successfully Updated");
                }
                else
                {
                    MessageBox.Show("An Error Occured While Updating Tag");
                }
            }
            catch (Exception ex)
            {
 
                MessageBox.Show(ex.ToString());
            }
         Tag güncellemede ki mantık temelde bir kategorinin güncellenmesindeki mantık ile aynıdır. Güncellenmek istenen tag'ın adı, kategorisi ve yeni hali UpdateTag metoduna gönderilerek tag'ın sistemde güncellenmesi sağlanır.

         Bir Tag'ı pasif etme : 
            try
            {
                TagService.MIBPContractClient insMIBPContractClient = new MicrosoftTagAPISample.TagService.MIBPContractClient();
                TagService.UserCredential insUserCredential = new MicrosoftTagAPISample.TagService.UserCredential();
                insUserCredential.AccessToken = "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00";
                bool result = insMIBPContractClient.PauseTag(insUserCredential, "Dummy_Category_New", "New_URI_Tag");
                if (result)
                {
                    MessageBox.Show("Tag Successfully Paused");
                }
                else
                {
                    MessageBox.Show("An Error Occured While Pausing Tag");
                }
            }
            catch (Exception ex)
            {
 
                MessageBox.Show(ex.ToString());
            }
         Bir tag'ı pasif etmek için MIBPContractClient nesnesinin PauseTag metodunun kullanılması gerekmektedir.

         Bir Tag'ı aktive etme :
            try
            {
                TagService.MIBPContractClient insMIBPContractClient = new MicrosoftTagAPISample.TagService.MIBPContractClient();
                TagService.UserCredential insUserCredential = new MicrosoftTagAPISample.TagService.UserCredential();
                insUserCredential.AccessToken = "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00";
                bool result = insMIBPContractClient.ActivateTag(insUserCredential, "Dummy_Category_New", "New_URI_Tag");
                if (result)
                {
                    MessageBox.Show("Tag Successfully Activated");
                }
                else
                {
                    MessageBox.Show("An Error Occured While Activating Tag");
                }
            }
            catch (Exception ex)
            {
 
                MessageBox.Show(ex.ToString());
            }
         Bir tag'ı aktive etmek için MIBPContractClient nesnesinin ActivateTag  metodunun kullanılması gerekmektedir.

         Bir Tag'ı Windows uygulamasında görüntüleme:
            try
            {
                TagService.MIBPContractClient insMIBPContractClient = new MicrosoftTagAPISample.TagService.MIBPContractClient();
                TagService.UserCredential insUserCredential = new MicrosoftTagAPISample.TagService.UserCredential();
                insUserCredential.AccessToken = "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00";
                byte[] b=insMIBPContractClient.GetBarcode(insUserCredential, "Main", "Tamer Vcard",MicrosoftTagAPISample.TagService.ImageTypes.jpeg,2, MicrosoftTagAPISample.TagService.DecorationType.HCCBRP_DECORATION_FRAMEPLAIN,false);
                MemoryStream ms = new MemoryStream(b);
                Image i=Image.FromStream(ms);
                PictureBox pb = new PictureBox();
                pb.SizeMode = PictureBoxSizeMode.Zoom;
                this.Controls.Add(pb);
                pb.Dock = DockStyle.Fill;
                pb.Image = i;
            }
            catch (Exception ex)
            {
 
                MessageBox.Show(ex.ToString());
            }
         Bir tag'ı görüntülemek için MIBPContractClient nesnesinin GetBarcode metodunun kullanılması gerekmektedir. Bu metod bizden sırasıyla credential'ları, bastırmak istediğimiz barkodun kategori adını ve barkod adını, output olarak gelecek resmin biçimini(Jpg, gif, pdf, png vs vs.), inç olarak tag'ın boyutunu ve tag'ın gözükme şeklini alacaktır. Tag'ın gözükme şekli ile ilgili örnekleri makalemin en sonunda vereceğim.

         Bir Tag'ı Web uygulamasında görüntüleme :
        try
        {
            Response.Clear();
            TagService.MIBPContractClient insMIBPContractClient = new TagService.MIBPContractClient();
            TagService.UserCredential insUserCredential = new TagService.UserCredential();
            insUserCredential.AccessToken = "00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00";
            byte[] b = insMIBPContractClient.GetBarcode(insUserCredential, "Main", "Tamer Vcard", TagService.ImageTypes.jpeg, 2, TagService.DecorationType.HCCBRP_DECORATION_DOWNLOAD, false);
            Response.BinaryWrite(b);
            Response.ContentType = "Image/JPEG";
        }
        catch (Exception ex)
        {
 
            Response.Write(ex.ToString());
        }
 

            Şimdi isterseniz tag'ın görüntülenme şekli ile hangi parametre geçilirse nasıl bir değer çıkacağına dair örnekleri aşağıda verdim.
DecorationType.HCCBENCODEFLAG_STYLIZED
DecorationType.HCCBRP_DECORATION_DOWNLOAD
DecorationType.HCCBRP_DECORATION_FRAMEPLAIN
DecorationType.HCCBRP_DECORATION_NONE


Umarım faydalı bir makale olmuştur.
Tamer Öz
         tamer.oz@yazgelistir.com
         oztamer@hotmail.com
   
How To