Xamarin (Android/iOS) Deep Linking — открытие приложения по URL-адресу (пользовательскому или нет)

Я создал сеть с помощью Sharepoint и Office365, а также приложение с Xamarin для Android и iOS. Пользователи получают уведомления по электронной почте с прикрепленными к ним URL-адресами из моей сети. Открывая эти URL-адреса с мобильного устройства, я хочу открыть их в приложении, но мне пришлось столкнуться с множеством проблем, чтобы реализовать это.

Я знаю, что есть 2 способа открытия ссылок: внедрение прямых ссылок с универсальными ссылками (iOS) — ссылки на приложения (Android) или использование пользовательских схем URL.

  • При попытке внедрить пользовательские схемы URL-адресов я обнаружил, что Outlook, Gmail и другие почтовые приложения не распознают, что такое пользовательская ссылка, и отображают пользовательскую ссылку в виде простого текста, поэтому на мобильных устройствах нельзя щелкнуть ссылку. Итак, example://something, это не кликабельно из электронной почты. Любые идеи о том, как решить эту проблему?

  • При попытке внедрить универсальные ссылки (iOS) вам необходимо загрузить в свой домен файл AASA (apple-app-site-association), который должен находиться либо в корне вашего домена, либо в ./well-known / папка. Проблема в том, что вы не можете размещать файлы в этом месте при создании сети с помощью Sharepoint и Office365. Служба поддержки Apple сказала мне, что единственным решением является изменение сети, что в моем случае невозможно.

Мне удалось реализовать открытие ссылок из электронной почты только с моим приложением для Android, используя фильтры намерений. Это работает нормально, но мне нужно открыть ту же ссылку в Android и iOS.

Я могу изменить формат ссылки, отправляемой по электронной почте, с https://mywebbexample.com на myapp: //example.com , это не проблема.

Любая идея о том, как действовать?

Спасибо.


person sesitosVDX    schedule 20.08.2018    source источник
comment
Единственный способ решить эту проблему — зарегистрировать пользовательский URL-адрес, который Outlook определяет как гиперссылку. Я нашел эти префиксы здесь: stackoverflow.com/a/934504/10097791 Мы зарегистрировали пользовательскую схему в Android/iOS для wais ://example.com, и он отлично работает. Я знаю, что это обходной путь, но это первое рабочее решение после нескольких недель исследований.   -  person sesitosVDX    schedule 30.08.2018


Ответы (1)


Очень сложно скопировать из первого источника. Вот как зарегистрировать схему Uri на странице xamarinhelp.com. Примеры создания запустить мобильное приложение по URL-адресу:

Device.BeginInvokeOnMainThread(() => {
    Xamarin.Forms.Device.OpenUri(new Uri("skype://555-1111"));
});

Пользовательские схемы фильтруются Gmail и т. д., поэтому вы можете сделать это следующим образом:

<a href="my-app://deep-link" href="https://example.com/?link=123" href="my-app://deep-link">Open in app</a>

Если вы используете обычную ссылку https, разделите устройства Android и iOS с помощью пользовательского агента, а затем перенаправьте с помощью HTTP-перенаправления 301 или 302 на my-app://deep-link. Или версию Android, если это user-agent. Я делаю это на работе, и это работает нормально, значит, и у вас тоже должно быть?

person Community    schedule 20.08.2018
comment
Я не об этом спрашиваю, может я не правильно объяснил. Мне не нужно, чтобы мое приложение открывало другое приложение через и URL-адрес, отображаемый внутри моего приложения. Мне нужно, чтобы мое приложение открывалось с помощью внешних ссылок из других приложений (Gmail, Outlook и т. д.) или браузерной версии этих приложений. - person sesitosVDX; 20.08.2018
comment
Вам все еще нужно зарегистрировать uri, чтобы сообщить Android / iOS, что это ваше приложение? Из почты вы должны использовать обычный URL-адрес своего API, а затем из API отправить перенаправление (301/302) на правильный? - person ; 20.08.2018
comment
На тот случай, если вы хотите работать с пользовательским URL. В этом случае да, вам нужно зарегистрировать uri (в Manifest для Android и Inflo.plist для iOS). Опять же, у меня нет проблем с этим, у меня проблема с отображением URL-адреса в электронном письме (не в моем приложении), который не активен при использовании пользовательского URL-адреса. - person sesitosVDX; 20.08.2018
comment
Да, и к тому же я сказал вам присылать https-ссылку в ваши информационные бюллетени / электронные письма. - person ; 20.08.2018
comment
Если я отправляю ссылку и https в свои информационные бюллетени / электронные письма, я могу открыть их только с Android, а не с iOS. Для iOS вы не можете зарегистрировать https в качестве пользовательского URL-адреса в info.plist. - person sesitosVDX; 20.08.2018