iOS Evrensel Bağlantıları uygulama içi açılmıyor


109

Bu yüzden bu öğreticiyi tam olarak takip ettim ve sağlananlarla aynı değerleri kullandım: https://blog.branch.io/how-to-setup-universal-links-to-deep-link-on-apple-ios-9

Apple Association dosyası da bağlantı dizininde hazırdır:
WEB_PAGE:PORT_NUMBER/apple-app-site-association

Her şey bu tarafta kurulmuş gibi görünüyor.

Yetkileri ekledim, ön hazırlık profilini güncelledim ve her şey ayarlandı.

Uygulamayı cihazımda çalıştırdığımda ve bağlantıyı açtığımda http://WEB_PAGE:PORT_NUMBER, bu her zaman Safari'yi açıyor.

Aşağıdaki yöntemde bile kesme noktalarım var:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler

Ama hiç.

Bunu mükemmelleştiren oldu mu? Eksik bir şey mi var?


2
Emin herhangi adım kaçırmayın yapmak için buraya ödeme stackoverflow.com/questions/35609667/...
Vineet Choudhary

Yanıtlar:


189

Birkaç olası sorun var.

  1. : Emin hiçbir sorun olmadığından bu bağlantı validator içine alan adınızı yapıştırarak deneyin ve yapmak https://limitless-sierra-4673.herokuapp.com/ (- bkz ShortStuffSushi kredi repo )

  2. Yetkilerinizde belirtilen etki alanında TLS'yi düzgün şekilde ayarlamadıysanız, iOS sistem günlüklerine bir hata iletisi kaydeder. Uygulama günlüklerine değil, işletim sistemi günlüklerine gömülüdür. Hata mesajı şöyle görünecek Sep 21 14:27:01 Derricks-iPhone swcd[2044] <Notice>: 2015-09-21 02:27:01.878907 PM [SWC] ### Rejecting URL 'https://examplecustomdomain.com/apple-app-site-association' for auth method 'NSURLAuthenticationMethodServerTrust': -6754/0xFFFFE59E kAuthenticationErr. Hata mesajı çıkarılmış burada , TLS için CloudFlare kullanarak hızlı (eksik) talimatları burada .

  3. Kişisel testlerimde, Safari'de bir bağlantıya tıklamak / yazmak, uygulamayı bir kez bile doğrudan açmadı. Diğer uygulamalar (iMessage, Posta, Slack vs.) tıklamak etmiştir çalıştı. Diğerleri, Google arama sonuçlarındaki bağlantıların tıklanmasının uygulamayı doğrudan açtığını bildirdi.

  4. Bir Evrensel Bağlantı uygulamanızı açmayı başarırsa ve ardından Safari'ye tıklarsanız (uygulamadaki gezinme çubuğunun sağ üst köşesindeki sitenize dokunarak), iOS'un bu URL'yi ziyaret ettiğinizde uygulamayı açmayı durduracağını unutmayın . Ardından Safari'de, "Aç" ile sayfanın üst kısmında bir başlık görüntülemek için aşağı çekebilirsiniz. Bunun için çok zaman harcadım. Apple-app-site-assocation dosyasında belirttiğiniz yollara bağlı olarak siteye tıklandığında => UL'nin devre dışı bırakılmasının yola özgü göründüğünü unutmayın. Yani ayrı rotalarınız varsa yoursite.com/a/*ve yoursite.com/b/*tıklarsanız uygulamada değil tarayıcıda açılacaktır. Ancak, etkilenmemeli ve yine de uygulamanızı doğrudan açmalısınız.yoursite.com/a/* ve ardından tıklayarak ilerlemeniz Uygulamanın sağ üst köşesindeki seçeneğine sahip, doğrudan uygulamasını açar yoursite.com/a/*. Bunu yaparsanız, sonraki ziyaretleryoursite.com/a/*yoursite.com/b/*

Sorunun ne olduğunu keşfederseniz bana bildirin. Kişisel olarak Evrensel Bağlantıların nasıl çalıştığını ve hangi uç durumların var olduğunu çok merak ediyorum. İyi şanslar.


1
Aynı şey. Çok garip. Bazen uygulamayı doğrudan açar, bazen de webView'ı açar. Keşke belgeleri netleştirseler. Bu özelliğin çalışması düzensiz
Legolas

4
1) ile ilgili olarak, https üzerinden sunuyorsanız apple-app-site-ilişkilendirme dosyanızı imzalamanıza gerek yoktur.
Jeremy Hicks

11
İOS Cihazınızı yeniden başlatmak da yardımcı olabilir. Tüm ayarları ve yapılandırmayı üç kez kontrol ettim ve her şeyin doğru olduğundan kesinlikle emindim ama yine de işe yaramayacaktı. Sonra başka bir cihazla denedim ve mükemmel çalıştı. Daha sonra uygulamayı orijinal cihazdan sildim, cihazı yeniden başlattım ve uygulamayı yeniden
yükledim

4
Birisi yanlışlıkla uygulamanın sağ köşesindeki web sitesi bağlantısına basarsa, safari yerine uygulamaya nasıl geri dönülür?
iEngineer

3
Hiçbir yerde Uygulamada Aç banner'ı almadım. Uzun aramanın ardından, işte bir çözüm: Notes uygulamasında siteniz için herhangi bir bağlantı yazın (bu evrensel bir bağlantıdır). Şimdi Bitti'yi tıklayın. Bir bağlantı haline geldiğinde, üzerine uzun tıklayın ve "AppNAME-HERE Uygulamasında Aç" ı seçin!
kishorer747

64

Bunun ters gidebileceği birçok yol var. İki nokta başımı belaya soktu:

  • Xcode'da, Associated Domains yetkisini eklediğinizde, her girişin başlaması applinks:ve ardından alan adınız gerekir. Örn applinks:www.apple.com.

  • Xcode benim için bir yetki dosyası oluştursa da, bu benim yapıma dahil etmedi: Bu kutuya manuel olarak tıklamam gerekiyordu.

Ve evet, bunu yaptıktan sonra apple-app-site-associationdosyayı imzalamak gerekli değildi : bu sadece düz metindir ve HTTPS üzerinden sunulduğu sürece çalışır. (Yine de iOS 8'i destekliyorsanız imzalamanız gerekecek.)


4
Ayrıca uygulamayı test cihazından tamamen silmem ve sonunda çalışmadan önce tekrar oluşturup çalıştırmam gerekiyordu.
Phil Andrews

14
günümü kurtardın, bu benim sorunumdu, ancak XCode benim için bir yetki dosyası oluşturdu, bu benim yapıma dahil etmedi: Bu kutuya manuel olarak tıklamam gerekiyordu.
cham

12
Yetkiler dosyasını derlemeye dahil etmek sorunu benim için de çözdü. Xcode 8'de File Inspector'daki hedef üyelik onay kutularının aslında devre dışı bırakıldığını belirtmek gerekir. Derleme ayarlarına gitmem ve yetki dosyasını Kaynakları Kopyalama aşamasına eklemem gerekiyordu.
Charles A.

5
@cham: "XCode benim için bir yetki dosyası oluşturmuş olsa da, bu benim yapıma dahil etmedi: Bu kutuya manuel olarak tıklamam gerekti."
Thang Pham

6
@AwaisFayyaz Derleme Aşamaları> Paket Kaynaklarını Kopyala'ya gidin. Artı işaretini tıklayın ve ardından yetki dosyanızı ekleyin.
s.zainulabideen

36

Görünüşe göre , Evrensel Bağlantılar için ilişkilendirme dosyasını yapmak için belgelerde bir hata var .

Nerede söylüyor:

AppID anahtarının değeri, uygulamanın ekip kimliği ve paket kimliğidir

söylemeli

AppID anahtarının değeri, uygulamanın Öneki ve paket kimliğidir

Çoğu uygulama için, Ekip Kimliği ve uygulama önekleri aynı görünüyor, ancak uygulamanız uzun yıllardır mağazadaysa bu değerler farklı olabilir.

Bu değeri bulmak için https://developer.apple.com adresindeki Üye Merkezini açın ve "Sertifikalar, Tanımlayıcılar ve Profiller" e bakın, "Tanımlayıcılar" ı ve ardından "Tanımlayıcılar" altındaki tabloda "Uygulama Kimlikleri" ni tıklayın. Uygulamanızı bulun ve ilişkilendirme dosyası için AppID'nizi oluşturmak üzere Önek değerini ve Paket Kimliğini kullanın.


2
+1, Bu bana çok yardımcı oldu. Bunun neden işe yaramadığını anlamak için yarım gün geçirin ve bu benim için böyleydi
Ivo Beckers

Günümü kurtardınız, aslında uygulamam uzun zaman önceydi ve uygulama öneki ekip kimliğinden farklı.
Ti3t

bu benim için çalışan tek şey. teşekkür ederim!
dhin

Bu benim için çözümdü. Harika tavsiye.
vincenth

33

Bu sorunu gidermeye yardımcı olmak için, uygulamanızı yüklerken evrensel bağlantınızın çalışıp çalışmadığını görmek için cihazınızın konsol çıktısında "swcd" araması yapın.

  1. Simülatörü değil gerçek bir cihazı kullanın.
  2. Uygulamayı cihazınızdan silin.
  3. Cihazı bilgisayarınıza bağlayın ve cihazın konsol çıkışını xcode'da görüntüleyin. (pencere -> cihazlar -> [cihazınız] -> konsolu açın). Bu pencereyi açık tutun.
  4. Uygulamanızı yükleyin ve başlamasına izin verin.
  5. Konsol çıktısını "swcd" olarak filtreleyin. Başarılı olursa, aşağıdaki ekran görüntüsü gibi bir şey göreceksiniz. Başarısız olursa başka bir şey göreceksiniz. Hiçbir şey görmüyorsanız, Associated Domains yetkisi eklemek gibi temel bir şeyi karıştırmışsınızdır.

Uygulama bağlantısı başarıyla eklendi


2
Mükemmel ipucu! Applinks: authlement'a https: // ekliyor ve ayrıca dinlemek istediğim tam yolu belirliyordum ki bunların her ikisi de hata. Ben belirterek oldu example.com/path sadece belirtme olması gereken yerde * benim domain.com ve example.com de Aasa dosya daha sonra benim uygulamanın paket id karşı yolunu belirtir
Numan Tarık

3
Sana nakit bonus havale edebilir miyim? Bu korkunç evrensel bağlantı kurulumunun her adımını 2 gün boyunca geçirdim, yaklaşımınızı deneyene kadar hiçbir şey yardımcı olmadı. İlişkilendirme dosyamı etki alanım için bir firebase'in kök klasöründe barındırma konusunda gerçekten talihsiz bir durumla karşılaştım ve Apple'ın önce. İyi bilinen / alt dizini sorguladığı ve firebase'in buna kendi (!) Doğru ilişkilendirme dosyasıyla yanıt verdiği ortaya çıktı. bağlı uygulaması yok. Tanrım, bunu nasıl öğrenebilirim, Apple?
nalexn

Ahhh büyük ipucu! Bu cihaz konsolunu bilmiyordum, sadece Xcode konsolu çıkışına bakıyordum. Benim sorunum, 3 derin bağlantı alanından 2'sinin işe yaramasıydı, ancak bu sonuncusu değil. Ve orada konsolda, son etki alanım için onu "appllinks: <domain>" (2 L) ile yanlış yazdığımı gördüm. Oh adamım… Her neyse, Universal Links'in gerçekten kayıtlı olup olmadığını kontrol etmenin harika bir yolu için tekrar teşekkürler! (Konsol günlüklerini de uygulamayı kaldırırken bağlantıların kaldırıldığını buldum: +1)
Arno Teigseth

1
varsayılan olarak bu kadar ayrıntılı mı olması gerekiyor? Bu kadar detaylı kayıt alamadığım için .. bu işlemin başarılı olmadığı anlamına mı geliyor?
Nicholas Allio

26

St.derrick en Cevap bilgilendirici.

Ancak evrensel bağlantıların safari yerine uygulamada açılmasını sağlamak için aşağıdakileri yapmamız gerekiyor.

  • Mail veya iMessage'da Evrensel bağlantıya uzun basın, ardından safaride veya Uygulamada açılıp açılmayacağını göreceksiniz.

2
Hiçbir seçeneği yoktur app, sadece açık kopyalama, vb okuma listesi eklemek
iEngineer

1
Neredeyse bu problemde hata ayıklamak çılgınca gitti, ama çözüm BU ya da bendim. Belki doğru kurulmamışsa ve Mail uygulaması bağlantıyı safaride açıyorsa, her zaman safaride açılıyor? hiçbir fikrim yok, ama bir kez uzun basmayı yaptım -> 'uygulamam'da aç ... ve şimdi bağlantılar doğru bir şekilde açılıyor!
herbert

1
Bu çözüm için çok teşekkürler. Neredeyse bir gün boyunca bu işin içinde kaldım. Günümü kurtardın.
Andrew


18

Benim için sorun olduğunu fark ettim, a (örn. http://example.com/) Kök dizinine bağlantıların uygulamamı açmaması, ancak bir yol eklersem (örn. http://example.com/mypath) İşe yaradı. Ekleme "/"yolları listesine sovled:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAM_ID.BundleIdentifier",
                "paths": [ "*", "/" ]
            }
        ]
    }
}

Bu Apple Geliştirici Forumları başlığında slutsker tarafından yanıtlandığı gibi .


17

Evrensel Bağlantıyı doğru şekilde uygulayıp uygulamadığınızı kontrol etmek için hızlı adımlar.

  • Uygulamayı başlatmayı beklediğiniz bağlantıya dokunun ve basılı tutun. Bağlam Menüsünde "[uygulamanızın adında] aç" görmelisiniz.

  • Notes uygulamasını açın, uygulamayı açmayı beklediğiniz bağlantıyı yazın. Bitti'ye dokunun. Bağlantı sarıya dönecek ve bağlantıya dokunduğunuzda Safari değil uygulamanız açılacaktır.

  • Http://yourDomain.com bağlantısı uygulamayı başlatmıyorsa, http://yourDomain.com/yourFolder/

  • Safari'de, Safari'de Bağlam Menüsü'nde "[uygulamanızın adında] aç" gösteriliyorsa, ancak bağlantıya dokunduğunuzda bağlantı, uygulamayı başlatmak yerine safaride açılıyor ise,

    a. Bağlantı tıklandığında açılan safari sayfasını 'yenilemek için çektiğiniz gibi' aşağı çekmeyi deneyin. Uygulamanızı açabilecek bir başlık görünmelidir. Uygulamayı açmak için başlığa dokunun, ana sayfa düğmesine basarak uygulamayı kapatın, safariye dönün ve bağlantıya tekrar dokunarak uygulamayı başlatmayı deneyin. Bu sefer, uygulama başlatılmalıdır, çünkü başlığa dokunulduğunda bağlantıyı uygulamada açma tercihi kaydedilmiş olmalıdır.

    b. Uygulama a. Adımından sonra hala başlatılmazsa, bağlantıyı gmail gibi bir web postasına postalamayı deneyin ve web posta sitesini safari'de açın ve bağlantıyı tıklamayı deneyin. Bu işe yararsa, uygulamayı bağlantıyla aynı alandan başlatmaya çalışıyor olabilirsiniz. Gördüğüm kadarıyla , uygulamayı aynı alan adından başlatmak çoğunlukla başarısız oluyor . Muhtemelen safari, bağlantı kullanıcının bulunduğu etki alanına girdiğinde, hedef url'nin evrensel bir bağlantı olup olmadığını kontrol etmeyecektir. Bu yüzden uygulamayı başka bir alandan başlatmayı deneyin.


3
İşte bu, saatlerce bu konuyla uğraşmak, UYGULAMAYI AYNI ALAN ADINDAN BAŞLATMAK ÇOK BAŞARISIZ OLDU. Teşekkürler :)
maledr53

12

Evrensel bağlantıları entegre ettikten sonra proje sürümünü artırmak veya yapı numarasını artırmak da çok önemlidir. Silseniz / yeniden yükleseniz bile iOS, sürümü çarpmadıkça bağlantıları almayacaktır.


1
Bu! Paket sürümü, tümüyle testimin başarısız olmasına neden olan şeydi, çünkü yukarıdaki tüm tavsiyeleri gözden geçirecektim ve iOS, önceki sürümün önbelleğe alınmış sonucunu apple-app-site-associationyanlış appId önekine sahip olduğu için bağlantılarım Safari'yi başlatmaya devam edecekti
zai chang

Kyle, sanırım seni seviyorum! Bu cevap günü kurtarır, teşekkürler!
neiker

Bu benim için gizli sosdu! Teşekkürler teşekkürler teşekkürler!
nurider

10
  • Bağlantıyı tarayıcının URL alanına yapıştırırsanız Evrensel Bağlantılar çalışmayacaktır.

  • Evrensel Bağlantılar işi bir kullanıcı odaklı ile <a href="...">eleman tıklama etki alanları arasında . Örnek: google.com'da bnc.lt'yi gösteren bir Evrensel Bağlantı varsa, uygulamayı açacaktır.

  • Evrensel Bağlantılar , aynı etki alanında kullanıcı tarafından yönlendirilen bir öğe tıklamasıyla çalışmaz . Örnek: google.com'da google.com'da farklı bir Evrensel Bağlantıya işaret eden bir Evrensel Bağlantı varsa, uygulamayı açmayacaktır.<a href="...">

  • Evrensel Bağlantılar, <a>bir kullanıcı eyleminin parçası olmadığı sürece Javascript aracılığıyla (window.onload içinde veya bir öğede .click () çağrısı yoluyla) tetiklenemez .

kaynak: https://dev.branch.io/getting-started/universal-app-links/support/ios/#appsbrowsers-that-support-universal-links

3. mermi anlamam yaklaşık bir güne mal oldu.


1
3. kurşun, burada da aynı: Bunu anlamak için saatler harcadım. Apple'ın bunun için çok güzel, aptalca bir açıklaması bile var: "iOS, kullanıcının en olası niyetine saygı duyar ve bağlantıyı Safari'de açar" burada kendinizi görün .
jox

3. mermi ÜST!
Byteros

10

Açılış (Evrensel) Bağlantılarını kolayca test etmesi gereken herkes için Simülatörünüzdeki bağlantıyı şu komutla terminalden de açabilirsiniz:

xcrun simctl openurl booted yourapp_or_http://yourlink

Örneğin:

xcrun simctl openurl booted https://www.google.com


1
Bunu çalıştırmıyorum, her zaman Safari'yi açıyor. Yine de gerçek bir cihazda çalıştırdığımda çalışıyorlar. Simülatör olmadan biraz daha zahmetli hata ayıklama / geliştirme olduğu için herhangi bir fikir takdir edilecektir.
chib

7

Buradaki insanlar başka çözümler arıyorlarsa, çok sayıda baş ağrısına neden olan birçok sorunun ortaya çıktığını gördüğümüz için Evrensel Bağlantılarda hata ayıklama konusunda adım adım bir araya getirdik.

Bunu kontrol et:

Evrensel Bağlantılar Hata Ayıklama Kılavuzu

Hata Ayıklama Kılavuzu önizlemesi

Evrensel Bağlantıları yeni bir şekilde kurmak istiyorsanız, bu kılavuz gerçekten yararlıdır:

iOS Derin Bağlama Kurulum Kılavuzu

Umarım yardımcı olurlar!


Çok yardımcı oldu, teşekkürler! Gerçek bir cihazda çalışırken benim için çalıştı, ancak iOS Simulator'da çalışmadı.
Josh Sklar

6

Gelecekte daha fazla insanın benimle aynı sorunlarla karşılaşması durumunda keşfettiğim bazı şeyleri ekleyeceğimi düşündüm. Bunlar çoğunlukla kimlik doğrulama hatalarıyla ilgilidir.

Apple bunu açıkça belirtmese de, apple-app-site-associationdosyanın imzalanmış olsa bile https üzerinden sunulması gerekir. Https için kullanılan sertifika da apple tarafından güvenilir olmalıdır. Dolayısıyla, Ayarlar -> Genel -> Profiller'de cihaza eklenen bir sertifika safaride https'ye izin verirken, evrensel bağlantıların çalışmasına izin vermeyecektir.

Cihaz günlüklerinde, cihaz ile sunucu arasındaki bir kimlik doğrulama hatası üzerine, gibi yazdırılan bir değer olacaktır "TrustResultValue" : 4. A TrustResultValue5, sertifikanın yanlış alan adı için olduğu anlamına gelir (Ör. Test.com, www.test.com'dan sunulur). A TrustResultValue4, bu kullanım için sertifikaya güvenilmediği anlamına gelir.

Ayıklama için bazı yararlı adımlar olabilir burada . "Apple-uygulama-site-ilişkilendirmesine erişimi test etme" bölümü, aygıtın apple-app-site-associationdosyayı aldığından nasıl emin olacağınıza ilişkin adım adım bir kılavuzdur . Adımlar şu şekilde kaynar:

  1. Uygulamayı kaldırın. Bu, dosya kurulum sırasında indirildiği için gereklidir.

  2. Sunucunun düzgün şekilde hizmet vermesini durdurun apple-app-site-association.

  3. Xcode'da Pencere -> Cihazlar'ı açın ve ardından cihazınızı seçin.

  4. Pencerenin altındaki üçgene tıklayarak cihaz günlüklerini açın.

  5. İlgili olabilecek önceki günlükleri temizlemek için çöp tenekesine tıklayarak günlükleri temizleyin.

  6. Oynat düğmesine tıklayarak uygulamayı xcode ile yeniden yükleyin.

  7. Uygulama başlatıldıktan sonra, cihaz dosyayı doğru bir şekilde istiyorsa, cihaz günlükleri "apple-app-site-Association" aramasıyla bulunabilecek bir hata içermelidir.

Eğer apple-app-site-associationdosya gerektiği (adım 2 dışarı bırakılır) servis edilir o zaman hiçbir hata olmamalıdır. Sorun buysa, bunun yerine bir kimlik doğrulama hatası görüntülenebilir.


1
Charles Proxy kullanarak SSL sahtekarlığı yapıyordum ve bu 4'lük bir güven değeriyle sonuçlanıyordu. Proxy'yi kapattığımda başarılı oldu.
Ben Flynn

6

En yaygın neden, kullanıcının sağ üste dokunduğunda iOS'a gelecekte uygulamayı (bu durumda Uber) AÇMAMASINI söylemesidir.

Düzeltmek için, akıllı başlığı ortaya çıkarmak için aşağı çekin ve AÇ'a dokunun:

Safari'de aşağı çekin ve tekrar AÇIN

Bu daha sonra uygulamayı açmayı "hatırlayacaktır".


5

Bu konuma apple-app-site-ilişkilendirme dosyasını ekledik :

https://example.com/apple-app-site-association

İOS 9'da iyi çalıştı, ancak iOS 10'da işe yaramadı.

Görünüşe göre problem. İyi bilinen yoldan kaynaklanıyordu:

https://example.com/.well-known/apple-app-site-association

Çünkü https://example.com/.well-known/apple-app-site-association yolu yönlendirildi https://example.com

<Notice>: Allowing redirect 'https://example.com/.well-known/apple-app-site-association' -> 'https://example.com/'
<Notice>: ### Rejecting AASA file size 154466 for URL https://example.com/.well-known/apple-app-site-association

Bana göre eğer bir şekilde iyi bilinen yol doğru çalışmazsa evrensel bağları koparır.


Kılavuz açıkça "Dosyanın HTTPS üzerinden herhangi bir yeniden yönlendirme olmadan erişilebilir olması gerekiyor" diyor.
eonil

Kılavuz ayrıca açıkça şunu da belirtiyor: "iOS 9.3.1 ve sonraki sürümlerde çalışan uygulamalar için, apple-app-site-ilişkilendirme dosyasının sıkıştırılmamış boyutu, dosyanın imzalanmış olup olmadığına bakılmaksızın 128 KB'den büyük olmamalıdır." Bu dosya 154 KB'dir.
Roberto

İOS11'de sunucunuz açıkça 404 durumu döndürmelidir: example.com/.well-known/apple-app-site-association, ardından swcd, root: example.com/apple-app-site-association için geri dönüşü kullanır . Hızla Postman'a gibi araçlarla dönen HTTP durumunu kontrol edebilirsiniz
Max Odnovolyk

4

Çalışmasını sağlamayı başardım, ama epey zaman aldı ve uğraştım. O Not İmzalamanız sürece apple-app-site-association dosyayı (imzalama isteğe bağlıdır!) Safari'nin bir bağlantıyı dokunarak değil uygulamanızı açın (bana çok baş ağrısı neden oldu).


1
Bu merak. Apple, belgelerde tamamen Evrensel Bağlantılar ve iOS9'da kullanım için imzalamanıza gerek olmadığını belirtir. Yalnızca iOS 8 Handoff / Paylaşılan Web Kimlik Bilgilerini desteklemek istiyorsanız imzalamanız gerekir. İlginç! Bende de aynı sorun var, bu yüzden imzalamayı deneyeceğim.
wrtsprt

İmzalama gerçekten isteğe bağlıdır. Yerel iOS uygulamasının açılmasını tetiklemek için Mobile Safari'de bir bağlantıya dokunmak "Web Tarayıcısından Yerel Uygulamaya Handoff" olarak adlandırılır, bu durumda json dosyasına activitycontinuationözellik eklemeniz gerekir apple-app-site-association. developer.apple.com/library/ios/documentation/UserExperience/…
Devy

3

Bunu anlamam bir güne yaklaştı. Karşılaştığım sorun, güncellenmiş sağlama profillerini XCode'da indirmiyordu (bundan sonra XCode'u da yeniden başlattım).

(Tercihler> Hesaplar> Ayrıntıları Görüntüle> Tümünü İndir)


3

Evrensel bağlantıları simülatörde test edebilirsiniz

Gönderen Destek Evrensel Bağlantılar: Uygulama Arama Programlama Kılavuzu


6
Bir simülatörde çalışmak için evrensel bağlantılar alan var mı? Sayısız kez denedim ve asla işe yaramadı. Yine de aynı akışlara sahip gerçek bir cihaz kullanarak çalışır.
Tony

Ben de bunu test edemedim. Safari'nin simülatördeki evrensel bağlantıları tetiklemesini sağlamaya çalışmak, fiziksel bir cihazda düzgün çalışmasına rağmen boşuna oldu.
Albert Bori

Simülatörde de çalıştırmayı başaramadım. @AlbertBori bunu çalıştırdın mı?
chib

Simülatörde çalışmadıklarına neredeyse eminim . Diğer tüm tuzaklara aşinayım ve onları asla simülatörde çalıştıramıyorum ..
Şişko

3

İki gün sonra, bu tür bağlantıların (şubeden)

applinks: xxxx.app.link

yalnızca uygulamayı Arşivledikten sonra (ayrıca Ad-hoc) çalışır ve telefona yükler.


3

Eğer barındırma varsa apple-app-site-associationüzerine Firebase , koyun emin olun /.well-known/alt dizini! Görünüşe göre Xcode önce bu URL'yi sorgular ve başarılı olursa apple-app-site-association, kök dizinde sorgulama girişiminde bulunmaz. Bazı nedenlerden dolayı, firebase mühendisleri, barındırılan web sitelerini /.well-known/apple-app-site-associationboş (ancak doğru oluşturulmuş) bir ilişkilendirme dosyasıyla otomatik olarak yanıtlayacak şekilde yaptılar, bu da sizin özel olanınızı geçersiz kılar ve hiçbir şeyin neden işe yaramadığına dair size hiçbir ipucu vermez!


2
En sonunda! Çok teşekkürler. Bir yerde mi yazılmış? Firebase bir yerde belgelendirmelidir.
Berkay Turancı

2

Developer.apple.com adresine gidin ve dağıtım profillerinizden birini düzenleyin. Düzenleme sayfasında , uygulama adlarınızın bir listesini gösteren ve uygulama adının arkasındaki () yuvarlak parantezler içinde tüm gerçek Uygulama Kimliklerinizi gösteren Uygulama Kimlikleri için bir açılır pencere açabilirsiniz . Bazı uygulamalar ön ek olarak ekip kimliğine sahip olabilir ama bazı yapmak değil . () İçindeki açılır menüde tam olarak gördüklerinizi kullandığınızdan emin olun ve apple-app-site-ilişkilendirme ayrıntıları appID alanına yerleştirin. Bir uygulamayla ve evrensel bağlantılarıyla tam olarak bu sorunu yaşadım.


2

Benim için sorun apple-app-site-associationdosya oldu. Apple'ın belgelerine göre, yalnızca applinks parametresi gereklidir. activitycontinuationParametreyi ekledim ve işe yaradı.

{
  "activitycontinuation": {
    "apps": [
      "9JA89QQLNQ.com.apple.wwdc"
    ]
  },
  "applinks": {
    "apps": [],
    "details": [{
        "appID": "9JA89QQLNQ.com.apple.wwdc",
        "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*" ]
      }]
  }
}

3 yıl sonra ve tam da bu konuya çarptık. Eklemek activitycontinuation, bizim için sorunu çözen şeydi.
readyornot

2

Benim için çalışmasını sağlayan aynı sorun / çözüm kombinasyonunu gerçekten görmedim, bu yüzden birinin aynı sorunu yaşaması durumunda benimkini de ekleyebilir!

Uygulamam için özel bir URL şeması kullanıyorum ( APP_TARGET > Info > URL Types ) ve buradan URL şemasını eşleşecek şekilde Firebase konsoluna ayarlıyorum, ancak yine de çalışmıyordu.

Benim problemim aslında iki problemdi:

İmzalamayı Otomatik Yönet seçeneğini işaretleyip işaretlemediğinize dikkat edin

Hızlı bir demo uygulaması yapmaya çalıştığım için Xcode'un "İmzalamayı otomatik olarak yönet" ayarını kontrol ediyorsanız, kullanılan TeamID'nin Firebase konsolunuzdakiyle eşleştiğinden emin olmak isteyeceksiniz. Başlangıçta Apple Geliştirici Hesabıma gittim ve Üyelik sayfamdan ekip kimliğini kopyaladım, ancak daha sonra Xcode tarafından kullanılan gerçek kimliğin farklı olduğunu gördüm. (Bunu APP_TARGET > General > Signing > Signing Certificate.Benim için göründüğü gibi bulabilirsiniz iPhone Developer: My Name (TEAM_ID)).

TeamID'nizi URL Türlerinizde Paket Tanımlayıcınıza ekleyin

Bunların Firebase konsolumda ve Xcode'da eşleşmesini sağladıktan sonra, sonraki sorunum URL şemamın tanımlayıcısı oldu. Paket tanımlayıcınızı burada kullanmanız normaldir, ancak Firebase aslında bunu Firebase konsolunuzda verdiğiniz Ekip Kimliğiyle ön ekler; bu nedenle, Xcode'daki URL türleri bölümündeki tanımlayıcının önüne de eklemek zorunda kaldım.

Bu iki düzeltmeden ve GoogleService-Info.plistdosyayı yeniden indirdikten sonra hiçbir sorun yaşamadım dinamik bağlantılarımı açtım.


2

İki günlük çaresizliğin ardından, sanırım sonunda düzelttim. İşte benim çözümüm:

Görünüşe göre eski uygulamalar, yeni uygulamalardan farklı bir uygulama öneki kullanıyor. Daha yeni uygulamalar yalnızca bu amaç için Ekip Kimliğini kullanır. Uygulama öneki ve ekip kimliği aynı değilse, apple uygulama site ilişkilendirme dosyasında etkinlik devam alanını belirtmeniz gerektiği anlaşılıyor:

{
    "activitycontinuation": {
        "apps": [
            "YOUR_APP_PREFIX.de.company.app"
        ]
   },
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "YOUR_APP_PREFIX.de.company.app",
        "paths": ["/*"]
      }
    ]
  }
} 

Cehennem yolculuğum sırasında yaşadığım bir başka şey de, uygulamayı silmenin ve cihazı yeniden başlatmanın, bu dosyayı yenilemeye zorlamanın tek yolu gibi görünmesiydi.


1

Benim için hatam, sitemizin www.domain.com'u domain.com'a yönlendirmesiydi, bu nedenle tüm www.domain.com/* bu nedenle başarısız olacak. Umarım yardımcı olur.


1

Takvim uygulamasını kullanarak iOS Simulator'da Evrensel Bağlantıları test edebildim.

Az önce bir etkinlik oluşturdum ve test etmek istediğim URL'yi etkinliğin URLalanına ekledim . Ardından, oluşturulan etkinliği görüntülerken, URL bağlantısına dokunmanız yeterlidir ve uygulamanız açılmalıdır.


Bu benim için işe yaramıyor gibi görünüyor, onların simülatörde işe yaramaması için her şeyi denedim. Gerçek cihazda iyi çalışıyorlar, ancak bu geliştirme / hata ayıklama için ideal değil. Bağlantıya uzun süre basmayı denedim ve "Uygulamada aç" seçeneği yok.
chib

1

Bunu çalıştırmaya çalışarak bir gün geçirdikten sonra, telefonumu yeniden başlatmak sorunu çözdü.

Uygulamanın Kaldırılması / Yeniden Yüklenmesi de işe yaramadı.


1

İos13 için yeni bir format var - https://developer.apple.com/documentation/safariservices/supporting_associated_domains_in_your_app?language=objc adresine bakın

Dosyamı şöyle görünecek şekilde güncelledim:

{
  "applinks": {
      "details": [
           {
             "appIDs": [ "ABCDE12345.com.example.app" ],
             "components": [
               {
                  "/": "/my-link/*",
                  "exclude": true,
                  "comment": "Matches any URL whose path starts with /my-link/ and instructs the system not to open it as a universal link"
               }
             ]
           }
       ]
   },
   "webcredentials": {
      "apps": [ "ABCDE12345.com.example.app" ]
   }
}

Doğru olabilmek "exclude": trueiçin componentsnesneye eklemeniz gerekircomment
skornos

@skornos iyi nokta. cevabımı değiştireceğim.
Anita

0

Bu sayfayı bulan gelecekteki okuyucular için ...

Ben de benzer bir durum yaşadım. Ancak benim durumumda, iOS10 AOK ile çalışıyordu ve ne yaparsam yapayım (yapı numaralarını çarpma, silme / yeniden yükleme vb.) İOS9 çalışmayı reddediyor gibi görünüyordu.

Buna iOS10'dan geliyordum ve iOS9'u desteklemem gerekiyordu. O sırada buradaki belgeler - https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html - dosyanın web sunucusunun kök dizinine yerleştirilebileceğini açıkça belirtir. (örn. /apple-app-site-association) veya. iyi bilinen klasörde (örn./.well-known/apple-app-site-association ). Benzer bir dosya için. İyi bilinen klasörü de kullanan Android'i de desteklediğim için, ikisini de oraya koymaya karar verdim.

İOS10'da yeni kurulumlar için, açıkça kök dosyayı ister, başarısız olur, sonra. İyi bilinen dosyayı ister ve başarılı olur.

İOS9 için, açıkça kök dosyasını istedi, başarısız oldu ve başka hiçbir şey yapmadı.

Çözüm: iOS9'u destekliyorsanız, dosyayı /apple-app-site-association.


0

Benim durumumda benim hatam sorgu parametrelerini yollara yerleştirmekti:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAM_ID.BundleIdentifier",
                "paths": [ "/auth-ui/hub?target=confirm&*" ]
            }
        ]
    }
}

yollardan '? target = confirm & *' öğesini kaldırdığımda çalışmaya başlıyor

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.