Редактор получил задание от руководства написать страницу активности для мобильных устройств h5, нажать на содержимое страницы, чтобы получить iOS и Android, а также разработать функцию обмена (включая WeChat, WeChat Moments, QQ, QQ Space и т. д.), которую пользователь не зарегистрировал. in. Вы можете поделиться только после входа в систему. После успешного обмена вы можете инициировать запрос на предоставление функции купона. Ниже приводится полученный опыт только для справки.
Рекомендуется не использовать ShareSDK.
Загружайте полезную информацию напрямую: нет необходимости ссылаться на другие библиотеки.
var u = navigator.userAgent;//Определяем тип мобильного телефона//---------------------------------- ----------- ---Телефон Android---------------------------------- -------------- ----------// if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) { //Android var callbackButton = document.getElementById('btnImg'); //Получаем узел callbackButton.onclick = function (e) { e.preventDefault(); //Блокируем исходную функцию if (userId == null) { //Проверяем, вошли ли вы в систему, если нет, WebViewJavascriptBridge.callHandler('loginAction', function (response) {})//Вот страница h5, вызовите метод входа в Android} else {//Уже вошли в систему WebViewJavascriptBridge.callHandler('shareAction', { //Страница h5 вызывает метод Android, чтобы поделиться параметрами, переданными в Android, контент: Вы угощаете, я оплачиваю счет, приглашаю друзей пойти (развлечься) и заказываю поездку вместе, // Общая текстовая картинкаСсылка: http://yueche-1254224848.cossh.myqcloud.com/che/%E5%B0%8F% E5% 9B%BE.jpg, // Общий заголовок URL-адреса изображения: Веселый привет — ждет вас на станции Xinghai Square, // Общий заголовок изображенияUrl: http://agent.qyueche.com/sup/ShareSdk/xing.html, // Платформа с общим URL-адресом: [2, 3] // 1 Sina Weibo 2 WeChat Friends 3 WeChat Moments 4 QQ Friends 5 QQ Space 6 SMS } , функция (ответ) {}) } } function connectWebViewJavascriptBridge(callback) {//Это после успешного совместного использования if (window.WebViewJavascriptBridge) { обратный вызов (WebViewJavascriptBridge) } else { document.addEventListener ( 'WebViewJavascriptBridgeReady', function() { обратный вызов (WebViewJavascriptBridge) }, false } } ConnectWebViewJavascriptBridge (функция (мост) { Bridge.init (функция (сообщение, ответCallback) { }) ; Bridge.registerHandler('shareComplete', function (data, responseCallback) {; //метод обратного вызова ios, // alert(data) if (data == 1) { //Если обмен прошел успешно $.ajax({ //Интерфейс запроса для получения купонов type: get, contentType: application/x-www -form-urlencoded, // URL: http://main.qyueche.com/api/coupon/receiveCoupon?userId= + userId + // &takeCouponType=2&couponId=176, URL: http://dev.qyueche.cn/api/coupon/receiveCoupon?userId= + userId + &takeCouponType=2&couponId=187, data: {}, dataType: json, Success: function (data) { //Успешно получено swal(data) .message); }, ошибка: функция (XMLHttpRequest, textStatus, errorThrown) { //Не удалось получить swal('Не удалось получить!'); } }) } else { //Не удалось поделиться swal('Не удалось поделиться!'); Bridge.registerHandler('loginComplete', function (data). , responseCallback) { // метод входа в iOS, userId = data }) }) } else if (u.indexOf('iPhone') > -1) { //------------- --- -----------------------Apple Phone---------------------- ----------------------------------/ // swal (iPhone); функция setupWebViewJavascriptBridge (обратный вызов) { if (window.WebViewJavascriptBridge) { return callback (WebViewJavascriptBridge } if (window.WVJBCallbacks) { return window.WVJBCallbacks.push (обратный вызов) window.WVJBCallbacks = [обратный вызов] вар WVJBIframe = document.createElement('iframe'); WVJBIframe.style.display = 'none'; WVJBIframe.src = 'https://__bridge_loaded__'; document.documentElement.appendChild(WVJBIframe); setTimeout(function () { document.documentElement.removeChild(WVJBIframe) }, 0) } setupWebViewJavascriptBridge (функция (мост) { Bridge.registerHandler('shareComplete', function (data, responseCallback) { //Метод обратного вызова ios, if (data.code == 1) { //Если совместное использование прошло успешно $.ajax({ //Запросите интерфейс для получения типа купонов : get, contentType: application/x-www-form-urlencoded, // URL: http://main.qyueche.com/api/coupon/receiveCoupon?userId= + userId + // &takeCouponType=2&couponId=176, URL: http://dev.qyueche.cn/api/coupon/receiveCoupon?userId= + userId + &takeCouponType=2&couponId=187, данные: {}, dataType: json, успех: функция (данные) { // Получено успешно swal(data.message }, ошибка: функция); (XMLHttpRequest, textStatus, errorThrown) { //Не удалось получить swal('Не удалось получить!' } }) } else { //Не удалось поделиться swal('Не удалось поделиться!'); ('loginComplete', function (data, responseCallback) { // метод входа в iOS, userId = data.userId; }) var callbackButton = document.getElementById('btnImg'); //Получаем узел callbackButton.onclick = function (e) { //Событие Click e.preventDefault(); //Запретить исходную функцию if (userId == null) { //См. если вы вошли в систему Bridge.callHandler('loginAction', function (response) {}) } else { Bridge.callHandler('shareAction', { //Содержимое параметра, передаваемое в ios: Вы угощаете, я оплачиваю счет, приглашаю друзей пойти (развлечься) и заказываю поездку вместе, // Общая текстовая картинкаСсылка: http://yueche-1254224848.cossh.myqcloud.com/che/%E5%B0%8F% E5% 9B%BE.jpg, // Общий заголовок URL-адреса изображения: Веселый привет — ждет вас на станции Xinghai Square, // Общий заголовок изображенияUrl: http://agent.qyueche.com/sup/ShareSdk/xing.html, // Платформа с общим URL-адресом: [2, 3] // 1 Sina Weibo 2 WeChat Friends 3 WeChat Moments 4 QQ Friends 5 QQ Space 6 SMS } , функция (ответ) {}) } } }) }
В целом сходство кода между Android и iOS очень похоже, но размещение кода разное. Следует отметить, что callHandler — это метод вызова страниц в iOS или Android, а RegisterHandler — метод вызова страниц в iOS и Android. .
Имя метода положения красного поля на рисунке настраивается разработчиком страницы h5 и персоналом iOS и Android.
Выше приведено все содержание этой статьи. Я надеюсь, что она будет полезна для изучения всеми. Я также надеюсь, что все поддержат сеть VeVb Wulin.