Günümüz mobil uygulama ekosisteminde, kullanıcı deneyimini artırmak ve uygulamalar arası etkileşimi güçlendirmek büyük önem taşımaktadır. Bu noktada Deep Linking (Derin Bağlantı) teknolojisi, Unity geliştiricileri için vazgeçilmez bir araç haline gelmiştir. Deep linking, bir mobil uygulamanın belirli bir bölümüne veya içeriğine doğrudan bağlantı kurmayı sağlayan bir yöntemdir. Bu makalede, Unity motorunu kullanarak mobil uygulamalarınızda deep linking’i nasıl uygulayacağınızı ve uygulama dışından veri transferini nasıl yöneteceğinizi adım adım inceleyeceğiz.
Deep Linking Nedir ve Neden Önemlidir?
Deep linking, kullanıcıları uygulamanızın ana ekranı yerine, belirli bir içeriğe veya fonksiyona yönlendiren özel URL’ler oluşturma sürecidir. Örneğin, bir kullanıcıya paylaşılan bir ürün bağlantısı tıklandığında uygulamanızın doğrudan o ürünün sayfasına açılmasını sağlamak deep linking’in temel işlevidir. Bu, hem kullanıcı deneyimini önemli ölçüde iyileştirir hem de pazarlama kampanyalarının etkinliğini artırır.
Unity oyunları ve uygulamaları için deep linking’in önemi birkaç ana başlıkta toplanabilir:
- Kullanıcı Etkileşimi: Kullanıcıları doğrudan ilgi alanlarına yönlendirerek uygulama içinde kalma sürelerini artırır.
- Pazarlama ve Yeniden Etkileşim: E-posta kampanyaları, sosyal medya paylaşımları veya reklamlar aracılığıyla kullanıcıları belirli bir promosyona, seviyeye veya özelliğe çekmek için idealdir.
- Uygulama İçi Paylaşım: Kullanıcıların oyun skorlarını, başarılarını veya oluşturdukları içerikleri diğerleriyle kolayca paylaşmasını sağlar. Paylaşılan bağlantılar tıklandığında, uygulama ilgili içeriğe açılır.
- Analitik ve Ölçümleme: Hangi kanallardan gelen kullanıcıların hangi içeriklere yönlendirildiğini takip ederek pazarlama stratejilerini optimize etmeye yardımcı olur.
Özellikle oyunlarda, bir arkadaşın davetiyle belirli bir çok oyunculu maça katılma veya bir görevde kalmış bir oyuncuyu o göreve geri döndürme gibi senaryolarda deep linking kritik bir rol oynar. Bu, Unity tabanlı mobil uygulamaların ve oyunların modern beklentileri karşılaması için olmazsa olmaz bir özelliktir.
Unity’de Deep Linking Nasıl Çalışır?
Unity’de deep linking uygulamak, temelde işletim sisteminin (Android veya iOS) uygulamanızı belirli bir URL ile başlatma mekanizmasını kullanmak ve bu URL’yi Unity uygulamanız içinde yorumlamaktan ibarettir. Bu süreç genellikle iki ana bileşen üzerinden yürütülür: URI Şemaları ve Universal Links (iOS) / App Links (Android).
- URI Şemaları: Bu, uygulamanız için özel olarak tanımladığınız bir protokoldür (örneğin,
mygame://veyaunityapp://). Bir kullanıcı bu şema ile başlayan bir bağlantıya tıkladığında, işletim sistemi bu şemayı hangi uygulamanın işleyeceğini bilir ve uygulamanızı bu bağlantıyla birlikte başlatır. - Universal Links (iOS) / App Links (Android): Bu yöntemler, standart HTTP/HTTPS bağlantılarını kullanarak uygulamanızı açar. Daha güvenli ve kullanıcı dostu bir yaklaşımdır, çünkü uygulamanız yüklü değilse web sitesine yönlendirilir, yüklüyse doğrudan uygulamaya açılır. Bu, web siteniz ile uygulamanız arasında kesintisiz bir deneyim sunar.
Unity, bu bağlantıları yakalamak için Application.deepLinkActivated olayını sunar. Uygulamanız bir deep link ile başlatıldığında veya zaten çalışırken bir deep link alındığında bu olay tetiklenir. Bu olay, deep link’in tam URL’sini bir string olarak sağlayarak, uygulamanızın bu URL’yi ayrıştırmasına ve ilgili içeriği yüklemesine olanak tanır.
Unity’nin esnek yapısı sayesinde, hem platforma özel ayarları (Android Manifest, iOS Info.plist) yapılandırarak hem de C# betikleriyle bu bağlantıları işleyerek deep linking işlevselliğini kolayca entegre edebilirsiniz. Bu, uygulama dışından gelen verilerin (örneğin, bir ürün ID’si, bir kullanıcı ID’si veya bir kampanya kodu) uygulamanızın içine sorunsuz bir şekilde aktarılmasını sağlar.
Unity’de Deep Linking Uygulaması Adım Adım
Unity projenize deep linking eklemek, platforma özel ayarlar ve C# kodlama adımlarını içerir. İşte temel bir rehber:
1. URI Şeması Tanımlama
Uygulamanızın deep link’leri tanıması için öncelikle işletim sistemine hangi URL şemasını işleyeceğini bildirmeniz gerekir.
- Android İçin:
AndroidManifest.xmldosyanıza (genellikleAssets/Plugins/Androidaltında yer alır) bir<intent-filter>eklemeniz gerekir. Bu filtre, uygulamanızın belirli bir şemayı (örneğin,unityapp) ve host’u (örneğin,com.unityegitim) dinlemesini sağlar.
<activity android:name="com.unity3d.player.UnityPlayerActivity" ...>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="unityapp" android:host="com.unityegitim" />
</intent-filter>
</activity>
Bu yapı, unityapp://com.unityegitim/path?param=value gibi bağlantıların uygulamanız tarafından yakalanmasını sağlar.
Info.plist dosyanıza (Xcode projenizde bulunur) bir URL Type eklemeniz gerekir. Bu, uygulamanızın hangi özel şemaları (örneğin, unityapp) işleyeceğini belirtir. Xcode’da projenizi açıp ‘Info’ sekmesine giderek ‘URL Types’ bölümünden kolayca ekleyebilirsiniz.2. Unity Kodunu Yazma
Platforma özel ayarları yaptıktan sonra, Unity uygulamanızda deep link’leri işleyecek C# kodunu yazmanız gerekir. Bu genellikle bir başlangıç sahnesindeki bir GameObject üzerine eklenen bir betik ile yapılır.
using UnityEngine;
public class DeepLinkManager : MonoBehaviour
{
void Start()
{
// Uygulama zaten çalışırken deep link geldiğinde tetiklenir
Application.deepLinkActivated += OnDeepLinkActivated;
// Uygulama bir deep link ile başlatıldığında ilk deep link'i yakala
if (!string.IsNullOrEmpty(Application.absoluteURL))
{
OnDeepLinkActivated(Application.absoluteURL);
}
}
private void OnDeepLinkActivated(string url)
{
Debug.Log("Deep Link Activated: " + url);
// URL'yi ayrıştır ve ilgili işlemleri yap
// Örnek: unityapp://com.unityegitim/product?id=123
// URI sınıfı ile kolayca ayrıştırılabilir
Uri uri = new Uri(url);
string path = uri.Segments.LastOrDefault(); // "product"
string productId = HttpUtility.ParseQueryString(uri.Query).Get("id"); // "123"
if (path == "product" && !string.IsNullOrEmpty(productId))
{
// Ürün ID'sine göre ürün sayfasını aç
Debug.Log($"Ürün ID {productId} ile ürün sayfasını açılıyor...");
// GameManager.Instance.LoadProductPage(productId);
}
// Diğer deep link senaryoları için if/else if blokları eklenebilir.
}
void OnDestroy()
{
Application.deepLinkActivated -= OnDeepLinkActivated;
}
}
Bu kod parçacığı, Application.deepLinkActivated olayına abone olarak deep link’leri dinler ve gelen URL’yi ayrıştırarak uygulamanız içinde ilgili eylemleri tetikler. Gelen URL’deki yol ve sorgu parametrelerini kullanarak uygulamanızın belirli bir bölümüne yönlendirme yapabilirsiniz.
3. Test Etme ve Hata Ayıklama
Deep linking uygulamanızı test etmek için farklı yöntemler kullanabilirsiniz:
- Android: ADB komutlarını kullanarak deep link’leri tetikleyebilirsiniz. Örneğin:
adb shell am start -W -a android.intent.action.VIEW -d "unityapp://com.unityegitim/product?id=456" com.unityegitim.mygame - iOS: Safari tarayıcısından veya bir not uygulamasından özel şemalı bağlantıya tıklayarak test edebilirsiniz. Universal Links için
apple-app-site-associationdosyasını doğru yapılandırdığınızdan emin olun.
Testler sırasında Unity’nin konsolunu ve cihaz loglarını dikkatlice takip ederek olası hataları tespit edip düzeltebilirsiniz.
Deep Linking ile Veri Transferi Senaryoları
Deep linking, sadece belirli bir sayfaya gitmekten çok daha fazlasını sunar. Uygulama dışından veri transferi için güçlü senaryolar yaratır:
- Oyun İçi Öğe ve Paket Tanıtımı: Bir reklam kampanyasında belirli bir oyun içi paketi tanıtmak için deep link kullanabilirsiniz. Kullanıcı bağlantıya tıkladığında, oyun doğrudan o paketin satın alma ekranına yönlendirilir.
- Arkadaş Daveti ve Çok Oyunculu Maçlar: Arkadaşlarınızla paylaşabileceğiniz bir deep link oluşturarak, onların doğrudan sizinle aynı çok oyunculu maça veya lobiye katılmasını sağlayabilirsiniz. Link, oyuncunun ID’sini veya maçın benzersiz kodunu içerebilir.
- Özel Kampanyalar ve Promosyon Kodları: E-posta ile gönderilen bir deep link, kullanıcıyı doğrudan bir indirim kodu ile etkinleştirilmiş bir alışveriş sepetine yönlendirebilir veya özel bir görevi başlatabilir.
- Kullanıcı İçeriği Paylaşımı: Bir kullanıcı oyun içinde oluşturduğu özel bir seviyeyi veya tasarımı arkadaşlarıyla paylaşmak istediğinde, deep link bu içeriğin kimliğini taşıyarak diğer kullanıcıların doğrudan o içeriğe erişmesini sağlayabilir.
- Kimlik Doğrulama ve Hesap Kurtarma: Web tabanlı kimlik doğrulama akışlarından sonra kullanıcıları mobil uygulamanıza geri yönlendirmek ve oturum bilgilerini güvenli bir şekilde aktarmak için deep link’ler kullanılabilir.
Bu senaryolar, deep linking’in sadece navigasyon aracı olmaktan öte, uygulamanızın dış dünyayla etkileşimini derinleştiren ve kullanıcıya özel deneyimler sunan bir veri transfer mekanizması olduğunu göstermektedir.
Sonuç
Unity’de deep linking uygulamak, mobil uygulamalarınızın ve oyunlarınızın kullanıcı erişilebilirliğini, etkileşimini ve pazarlama potansiyelini önemli ölçüde artırır. Gerek basit URI şemaları gerekse daha gelişmiş Universal Links/App Links yöntemleriyle, uygulamanız dış dünyadan gelen verileri akıllıca işleyebilir ve kullanıcılara kişiselleştirilmiş bir deneyim sunabilir. Geliştiricilerin, bu güçlü özelliği projelerine entegre ederek kullanıcılarınıza daha zengin ve kesintisiz bir mobil deneyim sunmaları, günümüz rekabetçi mobil pazarında fark yaratmalarını sağlayacaktır. Unutmayın, iyi tasarlanmış bir deep linking stratejisi, uygulamanızın başarısı için kritik bir yatırım olabilir.



