Eski Bağımlılıklara Elveda Deyin: Unity’nin HMS AGC Hizmetlerinden HMS Unity Plugin’e Geçiş

Hilal Tepecik
Huawei Developers - Türkiye
9 min readFeb 17, 2023
三峰 张 tarafından Pixabay Görseli

Giriş✈️

HMS Unity Plugin’in kullanıma sunulmasıyla, mobil oyun geliştiricileri artık çok daha geniş bir araç ve özellik yelpazesine erişebilir durumda. Ancak daha önce HMS için eski Unity varlık deposu çözümüne güvendiyseniz, yeni eklentiye geçiş yapmanız gerekmekte. Bu yazıda, eski çözümü kaldırmak ve HMS Unity Plugin’e geçiş yapmak için adım adım bir kılavuz sunacağız.

HMS AGC Hizmetleri

HMS Unity Plugin Nedir?🥁

HMS Unity Eklentisi, Huawei Mobil Servislerinin en son özelliklerine ve servislerine erişim sağlayan güçlü bir araçtır. Unity projenize sorunsuz bir şekilde entegre olur ve hesap yönetimi, reklamcılık, uygulama içi satın almalar ve daha fazlasını içeren bir dizi özelliğe erişmenizi sağlar. HMS Unity Plugin ile Huawei’nin kapsamlı geliştirici kaynaklarından ve desteğinden yararlanarak projenizin sorunsuz ve güvenilir bir şekilde çalışmasını sağlayabilirsiniz.

HMS-UNITY-PLUGIN

İster Unity’de yeni başlıyor olun, ister yıllardır Unity’de çalışıyor olun, HMS Unity Eklentisi mobil uygulamalarını HMS Services ile geliştirmek isteyen herkes için mükemmel bir çözümdür.💌

Bu yazıda, Unity’nin eski Asset Store çözümünü kaldırma ve desteklenen HMS Unity Plugin’e geçiş sürecini adım adım anlatacağız.
Bu geçişi yaparak, Huawei Uygulama galerisi bağlantı API’lerinden en son güncellemeler dahil olmak üzere bir dizi yeni ve geliştirilmiş işleve erişebileceksiniz.

Ayrıca en son Hesap Kiti(Account), Reklam Kiti(Ads) ve Uygulama İçi Satın Alma Kiti(IAP) işlevlerinden yararlanarak geliştirme sürecinizi kolaylaştırabilirsiniz; başlayalım!

Küçük bir açıklama; gerçek bir projeden kod örnekleri kullanarak Unity’nin Asset Store’undaki eski çözümden desteklenen HMS Unity Plugin’e geçişi göstereceğim.

PopTheBalloons Game Project

Geçiş yapmak isteyenler için iyi bir başlangıç ​​noktası olacağını düşünüyorum. Süreci açıklamaya yardımcı olmak için, yaklaşım ve uygulamadaki farkı görebilmeniz için biri Unity çözümüyle diğeri HMS Unity Plugin ile yapılan iki projenin bağlantılarını vereceğim.

⚠️Kodu projenize uyacak şekilde düzenlemeyi unutmayın ve her türlü değişikliği yayınlamadan önce baştan sona test edin.

İşte adım adım geçiş süreci. Her adımı daha sonra örnek ekran görüntüleri ile açıklayacağım.

  1. Huawei Service Klasörünü silin. 🧼
  2. Çakışan kodları devre dışı bırakın.🎏
  3. HMS Unity Plugin’in son versiyonunu indirin.📲
  4. agconnect.json dosyasını streaming assets dosyasına taşıyın.🛸
  5. Android klasörünü silin (Assets -> Plugin -> Android).📤
  6. Kodlarınızı HMS Unity Plugin’e göre yeniden düzenleyin.📚

🧼Huawei Service Klasörünü silin.🧼

Eski çözümü kaldırmanın ilk adımı, projenizdeki Assets klasörü altında bulunan “Huawei Service” klasörünü silmektir.

Huawei Service Klasörü

Bu yapıldıktan sonra, proje artık gerekli bağımlılıkları bulamayacağı için çakışmalarla karşılaşabilirsiniz.

Error Log

🎏Çakışan kodları devre dışı bırakın🎏

Bu çakışmaları çözmek için, doğrudan SDK’ya bağlı olan tüm komut dosyalarını geçici olarak devre dışı bırakmak üzere bir yorum satırına koymanız gerekir.

Örneğin, doğrudan ve tamamen Asset Store Solution’a bağlı olduğu için AccountTest.cs komut dosyamı sileceğim.

AccountTest.cs scripti

Bunu yaparak, RegisterEvent() işlevi için AccountTest.cs’ye ulaşamadığı için AccountManager bir hata verecektir.

AccountTest referansları

Bu yüzden, gelecekte Plugini çağırdığım yeri hatırlamak için onları bir yorum satırına koyacağım.

Account Manager kod düzenleme

Hata Log’larına bakarak veya bağımlı komut dosyalarını diğer komut dizilerinden ayırarak hangi komut dosyalarının çakışmalara neden olduğunu kontrol edebilirsiniz. Bunu yaparak, HMS Unity Plugin’i entegre etmenin bir sonraki adımına geçmeden önce tüm sorunları hızlı bir şekilde tespit edip çözebililirsiniz.

Artık Ads kiti için başka komut dosyalarım var. Tamamen bağımlı bir kodu silip referanslarını devre dışı bırakarak aynısını yapacağım. Ads Kit için, AdsTest.cs ve AdsListener tamamen bağımlı 2 komut dosyasıdır(script). Onları silelim.

AdsTest.cs ve AdsListener.cs

UIController.cs, beklendiği gibi AdsTest’e referans konusunda bana bir hata verdi. Ve Ads Kiti tekrar çağırdığımda hatırlamam için onu bir yorum satırına koydum.

UIController referans düzenleme

Şimdi aynısını IAP Kit için yapalım. Tamamen bağımlı 2 scriptim var. IAPTest.cs ve IAPListener.cs. IAPManager.cs’deki referansları ve komut dosyasını sileceğim.

IAPListener.cs ve IAPTest.cs
IAPManager.cs referans düzenleme

HMS-Unity-Plugin için ihtiyacım olmayacağı için LocationListener.cs dosyasını da sileceğim.

Ayrıca scriptiniz için tüm library çağrılarını sildiğinizden emin olun.

Kütüphane çağrıları silme

Hala ilgisiz dosyalardan (örneğin Cinemachine veya Plastic SCM) kaynaklanan hatalarla karşılaşıyorsanız endişelenmeyin.

Bağımsız Hatalar

Projenizi yeniden başlatın ve bu hatalar kaybolmalıdır. Unity, yeniden başlatmanın ardından güvenli moda girmenizi isterse, bu istek için Ignore(yok say)’ı tıklayın. Projeyi yeniden başlattıktan sonra, başka scriptlerin bağımlılıkları olup olmadığını kontrol edin ve sorunları buna göre çözün.

📲HMS Unity Plugin’in Son Versiyonunu İndirin.📲

Tüm çakışmaları ve bağımlılıkları çözdükten sonra, HMS Unity Plugin’in en son sürümünü indirmenin zamanı geldi. Eklentiyi burada bulabilirsiniz.

Assets klasöründe sağ tıklayıp Import Package -> Custom package seçeneğini seçip indirdiğiniz Hms Unity paketini seçmelisiniz.

HMS Unity Plugin İndirme

Ayrıca sahip olduğu her bağımlılığı import etmeyi de unutmayın.

🛸agconnect.json Dosyasını Streaming Assets Dosyasına Taşıyın.🛸

Bir Streaming Assets klasörü ile gelmediyse, assets altında yeni bir klasör oluşturabilir ve buna StreamingAssets adını verebilirsiniz. Adın “StreamingAssets” ile tamamen aynı olduğundan emin olun.

App Gallery Connect’e zaten bir geliştirici olarak kaydolduğunuz ve uygulamanıza ve projenize sahip olduğunuz için. agconnect.json dosyanız zaten var. Şimdi ikisinden birini seçebilirsiniz;

🔹 agconnect.json dosyasını Assets -> Plugin -> Android’den Streaming Assets.’e taşıyın ya da;

🔸App Gallery Connect’ten agconnect.json indirip StreamingAssets Klasörüne yerleştirin.

📤Android Dosyasını silin📤

Daha sonra, artık bir Android klasörüne ihtiyacınız olmayacak, bu yüzden onu silebilirsiniz. Assegts -> Plugin -> Android altında olmalı.

📚Kodlarınızı HMS Unity Plugin’e göre yeniden düzenleyin.📚

Şimdi çoğunlukla taşıma ile işimiz bitti! Sadece en iyi kısım kaldı🧛🏻

Ardından, projenizde kullandığınız kitleri etkinleştirmelisiniz. Editör -> Huawei -> Kit Ayarları’na gidin ve Enable Plugin’in açık olduğundan emin olun.

HMS Unity Plugin Kit Ayarları

Ve kullandığınız kitleri açın. 📖

HMS Unity Plugin Kit Ayarları

Artık projemiz sadece HMS Unity Plugin kullanıyor ve kodlarınızı HMS-Unity-Plugin’e göre yeniden yazmaya başlayabiliriz.

Bu proje için göstereceğim 3 Kit kullandım;

  • Account(Hesap) Kiti
  • Ads(Reklam) Kiti
  • IAP(Uygulama içi satın alımlar) Kiti

Account Kit;

HMS Unity Plugin’in Hesap Kiti, kullanıcıların Huawei hesaplarını kullanarak uygulamanızda oturum açmaları için kullanışlı ve güvenli bir yol sağlar. Kullanıcıların uygulamanız için ayrı bir kullanıcı adı ve şifre oluşturma ve hatırlama ihtiyacını ortadan kaldırır.

HMS Account Kit

Unity için HMS Unity Plugin’in Hesap Kitini oluşturmaya devam edelim.

Account Manager scriptimize HMS kütüphanelerini ekleyerek başlayacağım;

Kütüphane çağrıları

Artık AccountTest.cs’ye sahip olmadığımız için, AccountManager’ı HMS Unity Plugin ile çalıştığı şekilde uygulayacağım.

İşte AccountManager.cs’ye kısa bir bakış. Buton Tıklama Dinleyicileri eklemek yerine, seçenekleri göstermek için butonları editör’deki komut dosyasına bağlayacağız.

Editör Referansları

Buraya editörden On Click Listener’ı ekledim ve Test Btn’yi sileceğim çünkü artık ona ihtiyacımız yok. Aynı işlemi SignOut butonuna da yapacağım ve Accont Kit projemize eklendi! ✔️

Ads Kit;

Ads Kit, HMS Unity Plugin’in önemli bir parçasıdır ve uygulamanızdan reklamlar yoluyla para kazanmanıza olanak tanır. Reklam Kiti ile reklamları uygulamanıza kolayca entegre edebilir ve gelir elde etmeye başlayabilirsiniz.💰

HMS Ads Kit

Başlamadan önce Ads Kit için doğru ayarları yaptığınızdan emin olun.

Ads Kit Ayarları

Hatırlarsanız AdListener ve AdsTest’i tamamen Asset Store Solution’a bağlı oldukları için sildik. Ancak HMS Unity Plugin ile editör arasında köprü kurmamıza yardımcı olacak bir komut dosyasına ihtiyacımız var. Bu amaçla AdsManager.cs oluşturacağım ve ilgili Reklamları oradan çağıracağım.

Bu, istediğimiz reklamları almak için kullanacağımız ana AdsManager.cs’dir. Ama verimli kullanabilmek için diğer scriptlerden doğru referansları vermemiz gerekiyor.

Şimdi yorum satırına koyduğumuz kodları hatırlayın. Artık onların zamanı geldi. Referanslarımızı oldukları yerde yapmalıyız.

Örneğin burada video reklamları göstermek yerine reklam yöneticisinden ShowAds() yöntemini etkinleştirdik. Yukarıyı incelerseniz, ihtiyacınız olan her tür reklam vardır. Ayrıca, HMS Unity Plugin kullanırken Splash Ad’ı etkinleştirmemize gerek yoktur. Bu, Start() üzerinde eklenmiş bir özelliktir ancak istenildiği zaman devre dışı bırakılabilir.

ShowAds() fonksiyonu

Reklam kiti için yeterli olduğunu düşünüyorum. AdsKit adına herhangi bir sorunuz varsa projeyi indirebilir ve son halini kontrol edebilirsiniz.

IAP Kit;

Uygulama İçi Satın Alma (IAP) kiti, geliştiricilerin Unity projelerinde uygulama içi satın alımları kolayca uygulamalarına yardımcı olmak için tasarlanmış, HMS Unity Plugin’in önemli bir bileşenidir. Geliştiriciler, IAP kitiyle ürünlerini kolayca yönetebilir ve satın alma sürecini kullanıcılar için basit ve sorunsuz hale getirebilir.

HMS IAP Kit

Artık projelerimiz adına IAP Kit kullanımı başlamıştır. Öncelikle, IAP Kit’in etkinleştirildiğinden ve ürünlerin hem Kit Ayarları’nda hem de App Gallery Connect’te bildirildiğinden emin olmanız gerekir.

HMS IAP ürünleri
IAP Ürünleri Unity Kit Ayarları

App Gallery Connect’te oluşturduğunuz gibi doğru bir şekilde bildirildiyse, bir sabitler sınıfı oluşturmalısınız. Ayrıca, Initialize on Start’ı işaretlemeyi etmeyi unutmayın.

Kodlamaya hazırız! 🦖

Hatırlayacağınız gibi, uygulama içi satın alımlardan sorumlu bir komut dosyamız vardı; Yeterli kapsama sahip olmadığı için IAPManager.cs’nin güncellenmiş sürümü çok farklı olacaktır ancak kapsamı da Asset Store Solution’ın ötesinde olacaktır.

Karmaşık görünebilir ama lütfen daha büyük resme bakın ve projeyi bir bütün olarak anlamaya çalışın.

İşte iki Eklentinin benzerliği. Asset Store Solution’da ürününüzün bilgilerini şu şekilde arayabilirsiniz;

  Debug.Log("product info currency is " + info.getCurrency());
Debug.Log("product info micros price is " + info.getMicrosPrice());
Debug.Log("product info getOfferUsedStatus is " + info.getOfferUsedStatus());
Debug.Log("product info getOriginalLocalPrice is " + info.getOriginalLocalPrice());
Debug.Log("product info getOriginalMicroPrice is " + info.getOriginalMicroPrice());
Debug.Log("product info price is " + info.getPrice());
Debug.Log("product info price type is " + info.getPriceType());
Debug.Log("product info product desc is " + info.getProductDesc());
Debug.Log("product info product id is " + info.getProductId());
Debug.Log("product info product name is " + info.getProductName());

HMS Unity Plugin’de bu parametrelerin karşılıkları;

  Debug.Log("product info currency is " + info.Currency());
Debug.Log("product info micros price is " + info.MicrosPrice());
Debug.Log("product info getOfferUsedStatus is " + info.OfferUsedStatus());
Debug.Log("product info getOriginalLocalPrice is " + info.OriginalLocalPrice());
Debug.Log("product info getOriginalMicroPrice is " + info.OriginalMicroPrice());
Debug.Log("product info price is " + info.Price());
Debug.Log("product info price type is " + info.PriceType());
Debug.Log("product info product desc is " + info.ProductDesc());
Debug.Log("product info product id is " + info.ProductId());
Debug.Log("product info product name is " + info.ProductName());

Gördüğünüz gibi, Unity’nin Asset Store Çözümünden HMS Unity Plugin’e geçiş yapmak çok kolay ve anlaşılır.

Adımları doğru bir şekilde takip ettiyseniz, başarılı bir build almaya hazır olmalısınız!

Sonuç🌅

Sonuç olarak, HMS Unity Plugin’e geçmek, projenizin en yeni özellikler ve araçlarla donatılmasını sağlamak için çok önemli bir adımdır. Eski çözümü Unity varlık deposundan kaldırmak göz korkutucu bir görev gibi görünebilir, ancak bu makalede belirtilen adımları izleyerek HMS Unity Plugin’e sorunsuz bir şekilde geçiş yapabileceksiniz.

Bu makaleyi okuduğunuz için teşekkür ederiz, umarız bağımlılıkları kaldırma ve HMS Unity Plugin’e geçiş sürecinde size rehberlik etmede yardımcı olmuştur. Geliştirme deneyiminizi geliştirmek için en son özelliklerin ve araçların tümünü yararlı bulacağınızı umuyoruz.🫀

Yeni bir yazıda görüşmek üzere!

Referanslar:

Projeinin Asset Store Solution Versiyonu;

HMS Unity Plugin ile tamamlanan proje;

--

--

Hilal Tepecik
Huawei Developers - Türkiye

Game and SDK Developer, ex @Huawei - Unity, Unreal, HMS Unity Plugin, XR Interactions Toolkit