Deep linking, türkçe ifade etmeye çalışırsak: derin bağlantılama;
Bildiğiniz gibi, bağlantıları web sitelerin içeriğine ulaşmak için kullanırız,
http://www.ftorun.com gibi veya site içerisindeki bir bağlantı
http://www.ftorun.com/programlama/c-sharp/webconfigde-deger-tutmak.aspx gibi.
Bu adresler sizin direk olarak istediğiniz web sayfayasına ulaşmanızı sağlar.
Ancak bir mobil uygulama geliştirdiysek ve uygulama içerisindeki bir sayfaya direk ulaşma ihtiyacımız olursa ne yapacağız, bu tarz durumlar için URL şemaları tanımlamamız gerekiyor. Uygulamamızı oluştururken mesela myapp şemasını kullanmayı seçtiğimiz zaman myapp:// yazarak herhangi bir başka uygulama üzerinden veya web sitesinden uygulamanızı kolayca açabilirsiniz.
Peki uygulamanızın içerisindeki özel bir içeriğe bu adresten direk ulaşmak istersek ? O zaman da myapp://takvim yazarak içerisine takvim parametresini göndermiş oluruz, burada gönderdiğimiz parametre tamamen bize kalmış bu noktada hiyerarşik düzenli bir yapı kullanarak uygulamanın bütün alanlarına kolayca dışarıdan erişim sağlayabiliriz.
Peki ama bizim bir web sitemiz var ve bu web sitesine uyumlu bir de mobil uygulama yaptık. Mobil uygulama üzerinden web sitesine girmeye çalışıldığında da uygulama yüklüyse uygulamanızın ilgili kısmının açılmasını istiyoruz. Eminim bu şekilde çalışan bir çok uygulama görmüşsünüzdür. Şimdi kendi uygulamanızda bunu nasıl gerçekleştirebileceğinizi anlatmaya çalışacağım.
IOS 9dan önce web sitenizi uygulamanız ile entegre etmek için webden mobil cihazı algılayıp kendi custom şemanıza yönlendirme yapmanız gerekiyordu, IOS 9 ile birlikte apple “IOS Universal Link” sistemini getirdi, böylelikle uygulamanız ve web siteniz ortak bir şemayı kullanabilecek.
Peki neler yapmamız gerekiyor.
1. Apple geliştirici sitesinden App Id Associated Domains düzenlemesi: developer.apple.com sitesine girip App IDs kısmından uygulamanızı daha önceden oluşturmuş olmalısınız, oradan edit seçeneğini seçerek Associated Domains özelliğini aktif yapalım.
2. XCode projemizden uygulamamızın Capabilities kısmını aktif edip ardından aşağıda yer alan domains kısmından applinks:www.mywebsite.com şeklinde ekleyelim.
3.Web sitemizde yapmamız gereken düzenlemeler: web sitemizin bize ait olduğunu ve onu mobil uygulamanın yansıması olarak kullanacağımızı apple’a (bir nevi) inandırmak için uygulamamızın ana dizinine apple-app-site-association isimli bir dosya oluşturmamız gerekiyor.
Kısaca AASA (apple-app-site-association) dosyası da denilen bu dosyanın yapısı şu şekilde olmalı:
{
"applinks": {
"apps": [],
"details": [
{
"appID": “JHGFJHHYX.com.facebook.ios",
"paths": [
"*"
]
}
]
}
}
Dosyayı oluşturduktan sonra uygulamanın ana dizinine eklediğinizde ve şu adrese girdiğinizde dosyayı gördüğünüzden emin olun
https://<<sitenizin_adresi>>/apple-app-site-association
ayrıca şunlara dikkat edin:
- Dosyanın uzantısı olmadığından emin olun, adı direk “apple-app-site-association” olsun.
- Siteniz HTTPS üzerinde çalışmalı.
- Sunucunuzda application/json MIME tipi tanımlanmış olsun.
- dosyanın büyüklüğü 128kb ı geçmemeli.
işiniz bittiğinde bu siteden kontrol edebilirsiniz:
https://branch.io/resources/aasa-validator/#resultsbox
Artık uygulamamıza IOS evrensel bağlantılarını neredeyse kurduk ve web sitemiz ile bağladık geriye bir tek bunu uygulamanın içerisinden yakalamak kaldı.
Uygulama içerisinde appdelegate içinden
application:continueUserActivity:restorationHandler
metodunu kullanarak gelen adres içeriğine ulaşabiliriz,
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
print("Continue User Activity called: ")
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
let url = userActivity.webpageURL!
print(url.absoluteString)
}
return true
}
Goood day!Do you uuse Twitter? I’d loke to foollow you iif that would bee ok.
I’m definitepy enjoying your blog andd look forward to new posts.
Somebody essentially assis tto make significantly articles I wkuld state.
This is tthe very first tije I frequented your website paghe and thnus far?
I suprised witgh thhe redsearch you maqde tto create tis actual ublish incredible.
Grea activity!
Attractive section of content. I just stumbled upon your weblog andd iin accession capital to assert that I get in fact enjoyed accolunt your blog posts.
Anyway I’ll bbe subscribing too your feeds and evn I achievement you access consistently
rapidly.
Hey there would you mind sharing which blog plattorm you’re working with?
I’m planniing to stsrt my oown blog soon but I’m haviing a
tough timje choosing berween BlogEngine/Wordpress/B2evolution and Drupal.
The reaskn I ask iis because your design and style seems diffferent
tgen most blogs and I’m looking ffor something unique.
P.S Sorry ffor getting off-topic but I had to ask!
Very nice post. I just stumbed upon your weblog and wished to say that I’ve truly enjoyed browsing youhr blog posts.
After all I’ll bbe subscribing to ypur fsed and I
hope you wrire again soon!
Sppot on with this write-up, I absolutely believe this amazing site needs much more attention. I’ll probably be
back again to read through more, thanks for the information!
Hi, I do think this is an excellent blog.
I stumbledupon it 😉 I am going to come back once again since I saved as a favorite it.
Money and freedom is the best way to change, may you be
rich and continue to guide others.