2015-06-09 3 views
2

У меня есть приложение с 4 различными видами деятельности., ссылающийся на активность приложения с url по электронной почте

  • активность 1 для живого экрана
  • активность 2 для экрана воспроизведения

Я сценарий деле внедрения начать деятельность с URL отправки в почтовый клиент (Gmail).

Пользователь получить электронную почту, и она имеет 2 ссылки:

  • Link 1, чтобы открыть Живой экран (активность 1)
  • Link 2, чтобы открыть экран воспроизведения (деятельность 2)

В моем приложении файл манифест, я создал фильтр намерений для деятельности 1 и активности 2.

<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="http" /> 
    </intent-filter> 

Вопросы

  1. Когда я использую пользовательскую схему (например, «myapp»), ссылка внутри Gmail не может быть нажата. Я могу только щелкнуть ссылку, если добавить схему как «http». это недостаток на почтовых клиентах Android? Как преодолеть эту проблему и использовать кликабельный настраиваемый URL-адрес.
  2. , так как я добавил два фильтра намерения внутри моего файла манифеста, когда я нажимаю ссылку url в письме, он открывает диалог выбора, чтобы выбрать приложение. Внутри этого приложения значок приложения отображается 2 раза. Я хочу, чтобы мой значок приложения отображался только один раз. и на основе ссылки он должен открыть активность 1 или 2. Кажется, что значок появляется несколько раз в соответствии с фильтрами намерений, указанными внутри файла манифеста. Как я могу преодолеть эту проблему

ответ

1

, когда я использую собственную схему (например «MYAPP») ссылка внутри Gmail не является интерактивной. Я могу только щелкнуть ссылку, если добавить схему как «http». это недостаток на почтовых клиентах Android? Как преодолеть эту проблему и использовать кликабельный настраиваемый URL-адрес.

К сожалению, дело доходит до GMail независимо от того, хочет ли он играть хорошо с пользовательскими схемами URL.

Одним из распространенных решений является ссылка на веб-сайт, который перенаправляет пользователя на схему пользовательских URL-адресов.

, так как я добавил два фильтра намерения внутри моего файла манифеста, когда я нажимаю ссылку url в письме, он открывает диалог выбора, чтобы выбрать приложение. Внутри этого значок приложения отображается 2 раза. Я хочу, чтобы значок моего приложения показывался только один раз. и на основе ссылки он должен открыть активность 1 или 2. Кажется, что значок появляется несколько раз в соответствии с фильтрами намерений, указанными внутри файла манифеста. Как я могу решить эту проблему?

Только зарегистрировать один фильтр намерений для каждой уникальной схемы URI, которую вы хотите перехватить.

Если вашему приложению необходимо проанализировать данные, чтобы определить, куда идти, вы можете либо поместить эту логику в свою основную деятельность, либо создать специальное действие с единственной целью разбора ссылок и поместить фильтр намерений в манифест этого Действия запись.

Если вы действительно используете <data android:scheme="http" />, то ваши <data> теги просто слишком расплывчаты. Вы можете сделать их более конкретными, добавив атрибуты хоста или пути, чтобы ваши ссылки разрешали только один из ваших фильтров намерений, а не все из них.

0

Отказ от ответственности: Я работаю за branch.io и думаю о мобильном соединении примерно 18 часов в день.

Вопрос 2 Во-первых, поскольку это проще. Он показывает значок дважды, потому что вы дважды зарегистрировали свое приложение для того же URI. Так же, как если у вас есть несколько браузеров на вашем телефоне, все они регистрируются для схемы http, так что при нажатии ссылки http в окне выбора отображаются отдельные значки браузера.

выпуск 1, относительно открытия вашего приложения из электронной почты. Прежде всего, вы можете использовать Branch link, чтобы сделать все это автоматически для вас. Это очень просто, и я очень рекомендую его. Однако, если у вас есть бесконечные ресурсы и вы хотите сами их построить или просто хотите понять, как это работает, позвольте мне объяснить ниже.

Прежде всего, с точки зрения наилучшей практики вы никогда не хотите просто размещать свою схему URI (myapp: //) в общедоступном сообщении, потому что все браузеры выдает сообщение об ошибке, если приложение не установлено. Вам нужно немного javascript на стороне клиента, чтобы вернуться в Play Маркет. Хуже всего то, что почти все браузеры обрабатывают это по-другому. Например, веб-просмотр Twitter отличается от Chrome.

Вот пример JS на стороне клиента, чтобы открыть приложение Facebook и глубокую ссылку на сообщение, но должным образом вернуться в Play Store, если он не установлен. Он обрабатывает некоторые из наиболее распространенных браузеров.

<script type="text/javascript"> 
    window.onload = function() { 
     var method = 'iframe'; 
     var fallbackFunction = function() { 
      if (method == 'iframe') { 
       window.location = "market://details?id=com.facebook.katana"; 
      } 
     }; 
     var addIFrame = function() { 
      var iframe = document.createElement("iframe"); 
      iframe.style.border = "none"; 
      iframe.style.width = "1px"; 
      iframe.style.height = "1px"; 
      iframe.src = "fb://page/838619192839881"; 
      document.body.appendChild(iframe); 
     }; 
     var loadChromeIntent = function() { 
      method = 'intent'; 
      document.location = "intent://page/838619192839881#Intent;scheme=fb;package=com.facebook.katana;end"; 
     }; 
     if (navigator.userAgent.match(/Chrome/) && !navigator.userAgent.match("Version/")) { 
      loadChromeIntent(); 
     } 
     else if (navigator.userAgent.match(/Firefox/)) { 
      window.location = "fb://page/838619192839881"; 
     } 
     else { 
      addIFrame(); 
     } 
     setTimeout(fallbackFunction, 750); 
    }; 
</script> 

Опять же, Отделение делает все это для вас, и позволяет Вам глубокую связь через Play Маркета для персонализации нового пользовательского опыта.