Huawei Ability Gallery — Card Ability Account Binding Solution 1

Begum Avci Kocaman
Huawei Developers - Türkiye
5 min readJul 6, 2021

Merhabalar, gün geçtikçe akıllı telefonlar hayatımızda daha fazla rol almaya başlıyor. Merak ettiğimiz içeriklere artık daha hızlı ulaşım sağlayabiliyoruz. İçeriklere hızlı ulaşma isteğimiz gün geçtikçe artıyor hatta bazen içeriğe ulaşabilmek için mobil uygulamayı açmak bile zaman kaybı gelebiliyor. Bu hızlı erişim ihtiyacımıza çözüm yolu Huawei Ability Gallery’nin ‘-1 ekranı’ ndaki Card ve Content Ability de gösterilen içeriklerdir. Card ve Content Ability içerikleri genel olarak kullanıcılara gösterilebileceği gibi kişiselleştirilmiş içerikler olarak da gösterilebilme şansı sunuyor. Biz bu işleme Account Binding diyoruz.

Account Binding işlemini 2 farklı senaryoya uygulayabiliyoruz.

  1. Huawei geliştiriciye yetki verir : Geliştirici push event’i Huawei kullanıcısına gönderme yetkisi kazanır. Örneğin; otel rezervasyonumuzu uygulamaya gitmeden telefonumuzun eksi bir ekranında görmemizi sağlar. Olay akışı şu şekilde olur: Kullanıcı o uygulamayı yetkilendirdikten sonra bilgiler Huawei kimliğine iletilir. Ardından bu bilgiler Huawei Assistant’ta etkinlik hatırlatıcısı olarak bir card üzerinde gösterilir.
  2. Geliştirici Huawei’ye yetki verir: Huawei kullanıcısı bir geliştirici sunucusuna erişim yetkisi kazandırır. Örneğin bir uygulama hesabı Huawei kullanıcısına yetki verdikten sonra uygulama içindeki bilgilere erişebilir.

Bugün size Huawei geliştiriciye nasıl yetki verir bunu anlatacağım. Biz bu account binding işlemini iki farklı şekilde uygulayabiliyoruz;

  1. Kart üzerinde gösterilecek uygulamanın kendisine ait giriş servisini kullanarak
  2. Kart üzerinde gösterilecek uygulama Huawei’nin giriş servisini kullanarak

Biz bu makalede ilk maddeyi ele alacağız (İkinci madde için: link). Yani uygulamamızın kendisine ait bir giriş servisinin olduğu senaryo. Bu kısmı backend, client ve console olmak üzere üç ana başlıkta inceleyeceğiz.(Backend kısmı için: link).

Account Binding işlemi nasıl olur ?

Kullanıcı ability’e abone olduktan sonra Huawei kullanıcının OpenID’sine erişim sağlar. Sonrasında Huawei Ability Gallery özelleştirilmiş bir giriş metodu tanımlandığına karar verir. Ability Gallery tarafından kullanıcının OpenID’si ile birlikte geliştirici sunucusuna istek atılır. Bu istekten sonra uygulamanın giriş sayfası açılır ve kullanıcı uygulamada kendi bilgilerini doğru bir şekilde girdikten sonra uygulamadaki hesabı ile Huawei kimliği bağlanmış olur ve artık kişiselleştirilmiş içerik almaya başlayabilir. Account Binding’in genel olarak işleyişi bu şekildedir. Şimdi bunu nasıl uygulayabiliriz ona bakalım.

Konsol Kısmı :

Kurumsal geliştirici hesabımızdan Smart Services kısmına geliyoruz. Yeni bir ability oluşturma seçeneğine tıklıyoruz ve ardından Custom Model deyip devam ediyoruz.

Uygulamanın temel bilgilerini girdikten sonra ‘Configure’ kısmından intent oluşturmamız gerekiyor. Kullanıcının kişiselleştirilmiş bildirimleri card üstünde alabilmesi için event intent oluşturmalıyız.

İki tip event intent oluşturabiliyoruz. Custom event’te tetiklenme metodlarını, tetiklenme süresini ve event adı gibi özellikleri kendimiz belirleyebiliyoruz. Present event denilen olayda ise durum biraz daha kısıtlı. Bu sebepten dolayı custom event kullanmayı tercih ediyorum. Üç çeşit event tipi var. Oluşturacağımız event’in hangi kategoriye ait olacağını belirliyoruz. İkinci kısımda ise event’imize bir isim vermemiz gerekiyor. Burada isim backend tarafında Huawei Ability Gallery’ye istek atarken hangi event olduğunu tanınması için giriliyor.

Bizim senaryomuzda push to specified users kısmına yes dememiz gerkiyor ki account binding özelliği enable olabilsin. Duration kısmında ability’e abone olduktan sonra gösterilecek kart süresi bilgisi yer almaktadır. Yani temel olarak bize event push bildirimi gelene kadar kartın gösterilmesini sağlar. Type ise custom model’i seçtiğimiz için custom card tipi karşımıza çıkıyor. Intent’imizi oluşturduktan sonra fulfillment oluşturmak gerekiyor. Çünkü ileride gerçekleştireceğimiz account binding işlemi sonucunda alacağımız kişiselleştirilmiş mesajları kullanıcıya gösterebilelim. Fulfillment kartta göstermek istediğimiz bilgilerin alınıp kart üzerinde gösterileceği kısımdır.

Fulfillment kısmı ise telefonumuzun eksi bir ekranındaki gösterilecek kartı temsil eder. Setting mode’da Huawei Quick App IDE’de oluşturduğumuz widget’ın rpk dosyasını ekleriz.Event Push bildirimi almak için bu yolu kullanmalıyız. Çünkü backend’den bize gelen veriler kart ile burada bağlanırç Bunu IDE kısmında detaylı anlatacağım. Eğer istersek kart üzerine tıkladığımızda 3 farklı seçenek ile kullanıcıyı yönlendirebiliriz. Benim kullanmış olduğum uygulama Android projesi olduğundan link url’e oluşturduğum deeplink’i , App package kısmına ise uygulamanın paket adını yazdım. Şimdi önemli bir kısımdayız. Card seçme kısmı. Yüklediğimiz .rpk içerisinde oluşturduğumuz kartlar burada gözükür. Bizim kartta veri gösterebilmemiz için konfigure ettiğimiz kart ile buradaki kart aynı olmalı.

Konsolda ayarlarımı tamamladık. Şimdi ise sıra da ‘Account Linking’ işlemi var.

Receiving url kısmında backend’de giriş sayfasının urlini yazmamız gerekiyor. Access key ve secret key ise Account linking isteğiden güvenliği sağlamak için.

OpenID gönderme işlemi :

Kullanıcı abone olduğu zaman bizim OpenID’yi alıp backend kısmına göndermemiz lazım. Bunun için ise client tarafını kullanacağız. Bize Huawei Ability Gallery tarafından gelen OpenID alabilmemiz için brodcast receiver kullanmamız gerekli. Haydi gelin kullanımını inceleyelim.

Manifest.xml dosyasına receiver eklememiz gerekiyor.

Deeplink’ten gelen veriyi alabilmemiz için BrodcastReceiver() class’ı oluşturmamız gerekli.

Uygulamada Huawei Applinking kullanıldığı için deeplink ile gelen datalar AGConnectApplinking fonksiyonunun içine düşer. BrodcastReceiver değişkenini ve filterı’ı oluşturduktan sonra registerReceiver ile oluşturduğumuz filtre ile alınacağını belirtiriz. Deeplink içerisinde OpenID bize “openid=xxxxxxxxxxxxxxxxxxxxxxxxx” formatında geleceği için split ile ayırarak aldım ve kullanıcının giriş yapacağı yerdeki openId değişkenine eşitledim.

Uygulamada MVP mimarisi kullanıldığı için Presenter kısmındaki performLogin() fonksiyonu içerisine openId değişkenini nullable değer olarak girdim.

Kullanıcı bilgilerinin backend’e yollanacağı kısımda ise openId dolu gelirse durumunu değerlendirdim.

Bu işlemler sonucunda Huawei Ability Gallery tarafından bize gönderilen OpenID’yi client tarafında yakalamış olduk. Backend kısmında yapılan bind işleminden sonra bize gelen verileri card üzerinde gösterebiliriz.

Not: .rpk dosyası Huawei Quick App IDE’de uygulamanın release olabilmesi için paketlenmiş halidir.

Yaptıklarımızı özetlersek: eğer bir ability’e abone olduktan sonra kişiye özel içerikleri kullanıcıya nasıl gösterebiliriz ve bunun için hangi adımlar gerçekleştirmemiz gerekli bunu öğrenmiş olduk.

UYARI : Bu çözümü uygulayabilmek için uygulamanızın kendine ait bir login service’i olması gerekmektedir.

Sorularınız için lütfen iletişime geçin!

--

--