Я получил запрос на беспроводную связь два дня назад. Будучи новичком, я был занят несколько дней... На странице есть ссылка. Если пользователь установил приложение, нажмите, чтобы открыть соответствующее приложение. не установлен, нажмите, чтобы открыть соответствующее приложение. Настройка соединения. Я поискал в Интернете и в основном сказал, что это возможно, но реальная ситуация не является оптимистичной.
Конечно, это всего лишь одно из требований. В настоящее время также существуют различные приложения. На общих страницах H5 обычно есть кнопка для немедленного открытия. Если приложение установлено локально, то локальное приложение будет вызвано напрямую. не установлено, затем перейдите к загрузке. Это вполне нормальная стратегия продвижения и перенаправления трафика. Недавно продакт-менеджер выдвинул такое требование, сделать панель загрузки с открытым приложением типа функции Toutiao и т. д., а про остальное говорить не буду!
Теперь перейдем к основной теме сегодняшнего дня: как H5 открывает или активирует локальное приложение на мобильном телефоне. Судя по ответам Baidu и Google, есть только два типа:
Первый способ:Настраивая схему непосредственно на стороне Android в теге href HTML, конечно, если есть другие конфигурации хоста, просто следуйте им. Конфигурация и код на стороне Android следующие:
Конфигурация стороны Android:
<activity android:name = .MainActivity> <intent-filter> <action android:name = android.intent.action.MAIN /> <category android:name = android.intent.category.LAUNCHER /> </intent-filter> <intent-filter> <action android:name=android.intent.action.VIEW/> <категория android:name=android.intent.category.DEFAULT/> <category android:name=android.intent.category.BROWSABLE/> <data android:host=jingewenku.com android:scheme=abraham/> </intent-filter> </активность>
Примечание. Если это настроено на стартовой странице, его необходимо разместить рядом с меткой, иначе после запуска не будет значка мобильного приложения. Обратите внимание, что протокол схемы должен быть написан строчными буквами, иначе возникнет исключение; что не может ответить!
HTML-код:
<html> <head> <meta http-equiv=Content-Type content=text/html; charset=UTF-8> <title>Вставьте сюда заголовок</title> </head> <body> <a href=abraham: //jingewenku.com/?pid=1>Открыть приложение</a><br/> </body></html>
Здесь мы рассмотрим формат протокола сращивания схемы:
< a href=[scheme]://[host]/[path]?[query]>Запустить приложение</a>
Смысл каждого пункта следующий:
Схема: определить запущенное приложение. ※Подробности описаны позже.
хост: соответствующее описание
путь: необходимый ключ при передаче значения. ※Если он недоступен, это нормально.
запрос: получите ключ и значение значения. ※ Ничего страшного, если у вас его нет.
Вышеупомянутое можно использовать для открытия локального приложения, конечно, если приложение существует, иначе ответа не будет.
Вы можете спросить, разве протокол схемы, настроенный в Android, не настроен в приведенном выше HTML-коде? Я явно не настроил pid, зачем мне это писать? Это связано с тем, что иногда, когда мы вызываем локальное приложение, мы можем передать ему некоторые параметры. Мы можем настроить эти параметры здесь. Нам нужно только получить их в oncreate. Код выглядит следующим образом.
Намерение намерение = getIntent(); Uri uri = Intent.getData(); if (uri != null) { String pid = uri.getQueryParameter(pid)
Если вы все еще хотите настроить протокол схемы в Android, вы также можете сделать это:
Uri uri = getIntent().getData();if(uri != null) { // Полная информация об URL String url = uri.toString(); Log.e(TAG, url: + uri // часть схемы String); схема = uri.getScheme(); Log.e(TAG, схема: + схема); // часть хоста String host = uri.getHost(); Log.e(TAG, хост: + хост); // часть порта int port = uri.getPort(); Log.e(TAG, хост: + порт); //Путь доступа String path = uri.getPath(); Log.e(TAG, path: +). path); List<String> pathSegments = uri.getPathSegments(); // Часть запроса String query = uri.getQuery(); Log.e(TAG, query: + query); //Получаем указанное значение параметра StringgoodsId = uri.getQueryParameter(goodsId); Log.e(TAG,goodsId: +goodsId);}
Как определить, действительна ли схема:
PackageManager packageManager = getPackageManager();Намерение намерения = newIntent(Intent.ACTION_VIEW, Uri.parse(abraham://jingewenku.com:8888/goodsDetail?goodsId=10011002));List<ResolveInfo> действия = packageManager.queryIntentActivities(intent, 0);booleanisValid = !activities.isEmpty();if(isValid) { startActivity(intent);}
Этот метод также является самым популярным в Baidu, но он вызывает проблему. Вышеупомянутое требование заключается в наличии соединения на странице. Если пользователь устанавливает приложение, нажмите, чтобы открыть соответствующее приложение. Если это не так. установлен, нажмите, чтобы открыть соответствующее соединение настроек. Это явно не соответствует требованиям и может использоваться только для некоторых индивидуальных нужд.
Второй способ:Поскольку настройка протокола схемы в href невозможна, это можно сделать только с помощью js-кода. Только таким образом приложение можно будет открыть на основании суждения, когда оно доступно, и перейти по ссылке для загрузки, если оно недоступно.
Мы знаем, что js не может определить, установлено ли определенное приложение на телефоне, поэтому мы можем сохранить страну только через кривые. Мы можем получить время. Если приложение не может быть вызвано в течение длительного времени, оно будет установлено по умолчанию. не устанавливается, а затем перейдите к загрузке страницы. Конечно, это не я придумал, это то, что думают большие парни в Интернете. Здесь нам придется разделить это на две ситуации.
1. Просыпайтесь прямо сейчас
Примечание. Вы можете изменить приложение через h5. Например, посетите URL-адрес, нажмите кнопку и откройте приложение. Если приложение приложения не установлено, перейдите непосредственно на страницу загрузки приложения в App Store. лучше, щелкнув. Если приложение установлено, его можно активировать в основных мобильных браузерах (браузер 360, браузер uc, браузер Sogou, браузер QQ, браузер Baidu) и клиенте QQ. WeChat, клиент Sina Weibo и клиент Tencent Weibo не могут быть разбужены.
Код выглядит следующим образом:
<html xmlns=http://www.w3.org/1999/xhtml><head><meta http-equiv=Content-Type content=text/html;charset=utf-8><head><script src=http://libs.baidu.com/jquery/1.9.0/jquery.js></script><title>Нажмите, чтобы активировать демо</title></head><body><style>#zjmobiliestart {font -size:40px;</style><! --Описание: вы можете изменить приложение с помощью h5. Например, откройте URL-адрес, нажмите кнопку и откройте приложение. Если приложение приложения не установлено, перейти непосредственно к приложению. Страница загрузки приложений магазина, нажав. Совместимость хорошая. Если приложение установлено, его можно активировать во всех основных мобильных браузерах (браузер 360, браузер UC, браузер Sogou, браузер QQ, браузер Baidu) и клиенте QQ. WeChat, клиент Sina Weibo и клиент Tencent Weibo не могут быть разбужены. --><a href=zjmobile://platformapi/startapp id=zjmobiliestart target=_blank>Просыпайтесь, Zhejiang Mobile Mobile Business Hall! </a><script type=text/javascript> function applink(){ return function(){ var clickedAt = +new Date; setTimeout(function(){ !window.document.webkitHidden && setTimeout(function(){ if ( +новая дата – clickedAt <2000){ window.location = 'https://itunes.apple.com/us/app/zhe-jiang-yi-dong-shou-ji/id898243566#weixin.qq.com'; } }, 500 }, 500) }; .getElementById(zjmobiliestart).onclick = applink() </script> </body></html>;
2. Нажмите, чтобы разбудить
Примечание. Вы можете активировать приложение через h5. Если вы посещаете URL-адрес, вы можете напрямую открыть приложение. Если приложение приложения не установлено, перейдите непосредственно на страницу загрузки приложения в App Store. Общая совместимость: его можно активировать в основных браузерах мобильных телефонов (браузер 360, браузер UC, браузер Sogou, браузер QQ и браузер Baidu). WeChat, клиент QQ, клиент Sina Weibo и клиент Tencent Weibo не могут быть разбужены.
Код выглядит следующим образом:
<!Doctype html><html xmlns=http://www.w3.org/1999/xhtml><head><meta http-equiv=Content-Type content=text/html;charset=utf-8><head> <скрипт src=http://libs.baidu.com/jquery/1.9.0/jquery.js></script><title>Пробуждение демо-версии напрямую</title></head><body><style>#zjmobiliestart{ шрифт -size:40px;</style><! --Описание: Вы можете разбудить приложение через h5. Если вы посещаете URL-адрес, вы можете напрямую открыть приложение. Если приложение приложения не установлено, перейдите напрямую. в приложение. Страница загрузки приложения в Магазине имеет общую совместимость: ее можно активировать во всех основных мобильных браузерах (браузер 360, браузер UC, браузер Sogou, браузер QQ, браузер Baidu). Клиент WeChat QQ, клиент Sina Weibo, клиент Tencent Weibo не могут быть разбужены. --><p id=zjmobiliestart>Просыпайтесь, Чжэцзянский мобильный мобильный бизнес-зал! </p><script type=text/javascript> function applink(){ window.location = 'zjmobile://platformapi/startapp'; var clickedAt = +new Date; setTimeout(function(){ !window.document.webkitHidden && setTimeout(function(){ if (+new Date - clickedAt <2000){ window.location = 'https://itunes.apple.com/us/app/zhe-jiang-yi-dong-shou-ji/id898243566#weixin.qq.com'; } }, 500 }, 500) }applink()); ;</script> </body></html>
Таким образом, наши потребности были удовлетворены. В ходе этого процесса мы также столкнулись с объяснениями многих восторженных людей. Я запишу их здесь. Сначала некоторые люди не поняли моих потребностей и подумали, что я реализую это на стороне Android. Меня попросили передать имя пакета. Чтобы проверить, установлено ли приложение, запишите здесь метод, код следующий:
Дополнительные методы можно найти в моем классе инструментов: CommonUtilLibrary.
Другие думают, что я хочу вызвать локальное приложение, загрузив веб-просмотр в приложении. Я также запишу это здесь. Код выглядит следующим образом:
webView.setWebViewClient(new WebViewClient(){ @Override public boolean mustOverrideUrlLoading(представление WebView, URL-адрес строки) { Uri uri=Uri.parse(url); if(uri.getScheme().equals(abraham)&&uri.getHost(). Equals(jingewenku.com)){ String arg0=uri.getQueryParameter(arg0); arg1 = uri.getQueryParameter(arg1); } else { view.loadUrl (url); return true }});
Также следует отметить, что если в WeChat вызывается локальное приложение, WeChat на мобильном телефоне использует встроенный браузер WeChat (вы можете отправить адрес ранее полученной страницы на сервере любому из ваших контактов, нажмите Отправьте сообщение, чтобы открыть веб-страницу. Откройте эту простую HTML-страницу. Невозможно напрямую открыть схему://хост/строка данных. WeChat не будет анализировать эту строку символов в URL-адрес. страница для просмотра с помощью WeChat. Устройство включено. После входа вы увидите страницу, которую мы только что разработали. В настоящее время нажатие кнопки запуска приложения не приведет к запуску ранее установленного приложения. Поскольку WeChat заблокировал его, вам необходимо выбрать его открытие в браузере из меню в правом верхнем углу. В это время некоторые браузеры могут проснуться, а некоторые нет. Например, если встроенный браузер на тестовой машине автора MX4 не работает, UC Browser может проснуться. Некоторые браузеры невозможно разбудить. Я просмотрел много информации и не могу полностью решить эту проблему. Единственное, о чем я могу сейчас думать, - это позволить интерфейсу вынести суждение о браузере, который столкнулся с проблемой. он не поддерживается и какой браузер следует использовать. Если у кого-то из читателей есть решение, пожалуйста, оставьте сообщение, спасибо!
постскриптум:
Почему я не могу активировать приложение в WeChat и мне нужно открыть его в браузере?
Поскольку WeChat внедрил защиту схемы для всех соединений общего доступа, то есть все вызовы схемы в соединениях общего доступа блокируются WeChat.
Так почему же могут вызываться некоторые приложения, такие как Dianping и Didi Taxi?
С нетехнической точки зрения, благодаря Dianping и Didi Taxi, они являются одновременно крестниками и биологическими сыновьями WeChat. Он проявляет особую заботу о своем сыне.
С технической точки зрения, у WeChat есть белый список, и вызовы схемы не будут блокироваться для общих подключений в белом списке.
Не понимаете? Приведем пример.
Например, ссылка для обмена Dianping — http://dazhongdianping.share.1.com.
В соответствии с белым списком WeChat будет пункт http://dazhongdianping. Любой обмен данными, исходящий из этого соединения, не будет блокировать схему.
Например http://dazhongdianping.share.2.com.
http://dazhongdianping.share.3.com
Даже дочерняя компания Dianping может использовать http://zigongsi.dazhongdianping.share.3.com. Имя корневого домена также находится в белом списке, поэтому его можно использовать.
На этом этапе каждый должен понимать, что невозможно обойти эту проблему, заимствовав схему Дяньпина, если ваша ссылка для обмена не может быть связана с корневым доменным именем Дяньпина.
Этот вопрос следует четко объяснить. Еще следует упомянуть, что когда дело доходит до загрузки apk, WeChat блокирует любое приложение, и сыновья не являются исключением. Поэтому, если вы хотите предоставить ссылку для скачивания, независимо от того, являетесь ли вы сыном или нет. , вы не можете избежать его открытия с помощью браузера. Среди простых способов.
Приложение: Схемы URL-адресов для распространенных приложений
1. Системное приложение по умолчанию
имя | URL-схема | Идентификатор пакета |
---|---|---|
Сафари | http:// | |
карты | http://maps.google.com | |
Телефон | тел:// | |
SMS | SMS:// | |
Почта | почта:// | |
iBooks | ibooks:// | |
Магазин приложений | itms-apps://itunes.apple.com | |
Музыка | музыка:// | |
Видео | видео:// |
2. Часто используемое стороннее программное обеспечение.
имя | URL-схема | Идентификатор пакета |
---|---|---|
mqq:// | ||
Вичат | Вэйсин:// | |
Тенсент Вейбо | TencentWeibo:// | |
Таобао | Таобао:// | |
Алипей | alipay:// | |
Вейбо | синавейбо:// | |
Weico Weibo | Вейко:// | |
QQ-браузер | mqqbrowser:// | com.tencent.mttlite |
UC браузер | дельфин:// | com.dolphin.browser.iphone.chinese |
Открыть браузер | оhttp:// | com.oupeng.mini |
Браузер Согоу | СогоуMSE:// | com.sogou.SogouExplorerMobile |
Карта Байду | баидумап:// | com.baidu.map |
Хром | Гуглхром:// | |
Ёку | тыку:// | |
Цзиндун | openapp.jdmobile:// | |
каждый | Ренрен:// | |
Мейтуан | имеитуань:// | |
Магазин №1 | wccbyihaodian:// | |
я проверю | туалет:// | |
Юдао словарь | yddictproapp:// | |
Чжиху | чжиху:// | |
Обзор | Дяньпин:// | |
микродиск | синавдиск:// | |
Дубанфм | дубланрадио:// | |
Открытый урок NetEase | ntesopen:// | |
Универсальный король визитных карточек | карта камеры:// | |
QQ Музыка | qqmusic:// | |
Тенсент Видео | десятьвидео:// | |
Фильмы Дубана | дубанмуви:// | |
Облачная музыка NetEase | Орфей:// | |
Новости NetEase | новостиприложение:// | |
Приложение NetEase | приложение:// | |
Лотерея NetEase | нтескайпиао:// | |
Облачные заметки Youdao | youdaonote:// | |
Посмотреть больше | дуокан-читатель:// | |
Национальный индекс качества воздуха | грязный Пекин:// | |
Байду Музыка | байдумюзик:// | |
Иди на кухню | xcfapp:// |
Выше приведено все содержание этой статьи. Я надеюсь, что она будет полезна для изучения всеми. Я также надеюсь, что все поддержат сеть VeVb Wulin.