2017-04-20 17 views
5

Znalazłem dwie opcje otworzenia mojej aplikacji ze strony internetowej Safari: niestandardowy schemat URL utworzony w projekcie aplikacji Info.plist lub Universal Linking firmy Apple. Oczywiście schemat niestandardowego adresu URL jest najłatwiejszy do skonfigurowania, ale mam problem z tym, że Safari pokazuje okno potwierdzenia z pytaniem "Otwórz myapp?" Najpierw należy dotknąć OK przed otwarciem aplikacji. Chcę, aby moja aplikacja otwierała się automatycznie po otwarciu schematu i powiedziano mi, że jedynym sposobem na to jest przejście przez Universal Linking (proszę poprawić mnie, jeśli to nie jest prawdą). Jeśli to prawda, chciałbym się jednak dowiedzieć, czy w jakikolwiek sposób można umieścić wymagany plik apple-app-site-association w domenie http:// zamiast https://? Zgodnie z oficjalną dokumentacją firmy Apple format prawidłowego linku Universal Link zaczyna się od https://, ale moja nazwa domeny nie może być załadowana na numer https:// bez kilkukrotnego przekierowania, a to zakłóca działanie usług internetowych, które napisałem, aby wykonywać inne zadania w mojej aplikacji . Dwa główne pytania, które pozostały po tym wydaniu:Niestandardowy schemat adresu URL bez potwierdzenia (Swift)

1) Czy naprawdę nie można obejść monitu o potwierdzenie przy użyciu niestandardowego schematu URL (myscheme://)? Jeśli nie jest to niemożliwe, jak mogę to zrobić?

2) Jeśli muszę korzystać z Apple Universal Linking, czy mogę korzystać z domeny http://? Jeśli tak, jak to zrobić? Teraz, jeśli załaduję link uniwersalny, to po prostu pokazuje słownik wewnątrz pliku apple-app-site-association, który jestem pewien, że nie powinno się zdarzyć. Powiedziano mi, że ma wysłać obiekt NSUserActivity do mojego delegata aplikacji. Jak mogę to zrobić za pomocą linku http://?

+1

Czy byłeś w stanie to osiągnąć? Jeśli tak, opublikuj go tutaj. Z góry dziękuję. –

+0

@ mark-carols, mam również ten sam przypadek użycia: klient ma aplikację na iOS, jest przekierowywany do przeglądarki w celu zapłaty, a następnie po dokonaniu płatności muszę automatycznie przekierować klienta z przeglądarki do aplikacji, aby zakończyć płatność bez potwierdzenia. Jeśli klient zobaczy potwierdzenie i anuluje przekierowanie z przeglądarki do aplikacji, nie mogę prawidłowo zrealizować płatności. Więc byłeś w stanie znaleźć rozwiązanie? – WallTearer

Odpowiedz

5

Nie można wywołać niestandardowego schematu identyfikatora URI bez wyświetlania ostrzeżenia dla użytkownika. Było to możliwe w systemie iOS 8, ale system iOS 9 zaczął wyświetlać alert dla wszystkich aplikacji. I iOS 10.3 rozszerzył to nawet na sam App Store. Nie można tego obejść. Powszechne łącza zostały utworzone w celu zastąpienia schematów URI dla tego zachowania, więc trzeba z nich korzystać.

Z Twojego opisu wynika, że ​​możesz nie wiedzieć, jak działają łącza uniwersalne. Aby odpowiedzieć na dosłowne pytania, które zadałeś jako pierwsze, adres URL linku uniwersalnego nie musi być , a nie, musi być w protokole https://, a tak, musi być apple-app-site-associationmusi być serwowany przez https:// bez przekierowań.

Jednak, wygląda na to, że próbujesz wyświetlić zawartość pliku apple-app-site-association dla każdego łącza uniwersalnego. To nie jest poprawna implementacja - plik AASA jest hostowany pod numerem tylko pod adresem https://example.com/apple-app-site-association, a system iOS automatycznie pobiera go po zainstalowaniu aplikacji. Następnie dowolny URL pod adresem example.com, który pasuje do kryteriów w pliku AASA, będzie uprawniał do korzystania z łączy uniwersalnych.

Wszystko to powiedziane, you really don't want to built out this system on your own. Proponuję zajrzeć do Firebase Dynamic Links lub Branch.io (pełne ujawnienie: Jestem w zespole Branch).

+1

OK, myślę, że powinienem wskazać mój przypadek użycia trochę lepiej. Moja sytuacja nie jest wcale tak skomplikowana: mam przycisk w mojej aplikacji, który otwiera URL w Safari, aby zakończyć płatność na stronie internetowej. Po zakończeniu przez użytkownika, wstępnie ustalony adres URL powinien się otworzyć, a ten adres URL (schemat lub łącze uniwersalne?) Musi ponownie otworzyć aplikację i kontynuować od miejsca, w którym użytkownik poszedł na stronę internetową. Nie chcę, aby użytkownik zobaczył monit potwierdzający po dokonaniu płatności. To przejście ze strony internetowej z powrotem do aplikacji powinno nastąpić automatycznie. –

+1

Zasadniczo potrzebuję tylko prawidłowego adresu URL, który mogę przekazać jako adres URL, który zostanie otwarty po zakończeniu procesu płatności. Ten adres URL powinien otworzyć aplikację bez pytania o potwierdzenie. Wydaje się bardzo mało prawdopodobne, aby proces ten był tak skomplikowany, że musiałbym użyć do tego Firebase lub Branch, ponieważ jest to dosłownie tylko jeden URL prowadzący mnie z jednego wcześniej ustalonego punktu początkowego do jednego wcześniej ustalonego celu. –

+0

Podejrzewam, że do tego celu należy użyć wbudowanej przeglądarki internetowej. Nigdy nie zwracałem na to uwagi, ale uważam, że tak właśnie widziałem to w innych aplikacjach. –

Powiązane problemy