Страницы

Поиск по вопросам

Показаны сообщения с ярлыком мобильная-разработка. Показать все сообщения
Показаны сообщения с ярлыком мобильная-разработка. Показать все сообщения

четверг, 9 апреля 2020 г.

Как запретить масштабирование Яндекс.Карты при скролле только на мобильных устройствах?

#javascript #html #jquery #yandex_maps_api #мобильная_разработка

                    
Cкажем вот эта карта — Яндекс.Карты multiRoute.

Как запретить масштабирование карты на малых разрешениях (начиная с планшета), а
на стандартных разрешениях оставить? Чтобы при скролле пальцем не нужно было проматывать
всю карту для спуска вниз, но при этом можно было увеличивать/уменьшать масштаб с помощью +/-.

Вообще, решил так


function init() {
  var myMap = new ymaps.Map('map', {
    center: [55.76, 37.64],
    zoom: 10
  })
myMap.behaviors.disable('scrollZoom');
myMap.behaviors.disable('drag');
}

Но, вопрос остаётся: как отключить эту возможность только на мобильных устройствах, а на desktop — оставить?


Ответы

Ответ 1



Вот здесь подробно об этом - map.behavior.Manager function init() { var myMap = new ymaps.Map('map', { center: [55.76, 37.64], zoom: 10, behaviors: ["drag", "dblClickZoom", "rightMouseButtonMagnifier", "multiTouch"] }), /** * Создание мультимаршрута. * @param {Object} model Модель маршрута. Задается объектом с полями: referencePoints и params. * referencePoints - описание опорных точек мультимаршрута (обязательное поле); * params - параметры мультимаршрута. * @param {Object} [options] Опции маршрута. * @see http://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/multiRouter.MultiRoute.xml */ multiRoute1 = new ymaps.multiRouter.MultiRoute({ referencePoints: [ "Москва, метро Речной вокзал", "Москва, метро Водный стадион", ] }, { // Радиус транзитных точек на маршруте. viaPointIconRadius: 10, // Радиус точечных маркеров в путевых точках. pinIconRadius: 10, wayPointStartIconColor: "#80C257", wayPointFinishIconColor: "#8470FF", wayPointIconColor: "black", routeStrokeWidth: 2, routeActiveStrokeWidth: 6, routeStrokeColor: "000088", routeActiveStrokeColor: "#FF4500", pinIconFillColor: "#BFEFFF", viaPointIconFillColor: "#FFD39B", transportMarkerIconColor: "#FFE4E1" }), multiRoute2 = new ymaps.multiRouter.MultiRoute({ referencePoints: [ "Москва, метро Войковская", "Москва, метро Сокол" ] }, { routeStrokeWidth: 2, routeActiveStrokeWidth: 4, routeStrokeColor: "000088", routeActiveStrokeColor: "#66CDAA" }), buttonRoute1 = new ymaps.control.Button({ data: { content: "Первый маршрут" }, options: { maxWidth: 300 } }), buttonRoute2 = new ymaps.control.Button({ data: { content: "Второй маршрут" }, options: { maxWidth: 300 } }); myMap.controls.add(buttonRoute2); myMap.controls.add(buttonRoute1); myMap.geoObjects.add(multiRoute1); myMap.geoObjects.add(multiRoute2); buttonRoute1.events.add('select', function () { if (buttonRoute2.isSelected()) { buttonRoute2.deselect(); } myMap.setBounds(multiRoute1.getBounds()); }); buttonRoute2.events.add('select', function () { if (buttonRoute1.isSelected()) { buttonRoute1.deselect(); } myMap.setBounds(multiRoute2.getBounds()); }); multiRoute.model.events.add("requestsuccess", function () { var wayPoints = multiRoute1.getWayPoints(); wayPoints.get(0).properties.set('name', 'текст'); //Для метро Речной Вокзал }); } ymaps.ready(init); body { height: 100%; } #map { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }


Ответ 2



var isMobile = { Android: function() {return navigator.userAgent.match(/Android/i);}, BlackBerry: function() {return navigator.userAgent.match(/BlackBerry/i);}, iOS: function() {return navigator.userAgent.match(/iPhone|iPad|iPod/i);}, Opera: function() {return navigator.userAgent.match(/Opera Mini/i);}, Windows: function() {return navigator.userAgent.match(/IEMobile/i);}, any: function() { return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows()); } }; // после вызова карты if(isMobile.any()){ myMap.behaviors.disable('scrollZoom'); myMap.behaviors.disable('drag'); }

Ответ 3



В принципе, вот неплохая статья на эту тему. Там с помощью несложного скрипта и дива-обёртки данная проблема решается в несколько строк кода: https://blog.lisogorsky.ru/ignor-scroll-iframe-maps Если в двух словах, то: оборачиваем iframe в div с определённым классом, либо идентификатором. Для iframe указываем через css свойство pointr-events со значением none. Затем по клику на обёрточный div с помощью несложного JavaScript убираем свойство pointr-events

Ответ 4



Вообще, решил так map.behaviors.disable('scrollZoom'); map.behaviors.disable('drag'); Но, вопрос остается: как отключить эту возможность только на мобильных устройствах, а на десктоп оставить?

Ответ 5



Проще всего сгенерить карту через конструктор карт, и добавить флаг scroll=false, таким образом скролл (масштабирование) будет отключено. Пример:

Переход между мобильной и полной версией

#php #javascript #мобильная_разработка #jquery_mobile

                    
Есть мобильная и полная версия сайта. Как грамотно организовать переход между версиями?
В мобильных браузерах в меню так же есть пункты меню для выбора полной либо мобильной
версией. Как сделать чтобы они были применимы к моему сайту?
    


Ответы

Ответ 1



Жава скриптом: .htaccess оприделяет поддерживает ли браузер мобильные типы() RewriteEngine On # Check for mime types commonly accepted by mobile devices RewriteCond %{HTTP_ACCEPT} "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml" [NC] RewriteCond %{REQUEST_URI} ^/$ RewriteRule ^ http://m.server.com%{REQUEST_URI} [R,L] php версия: $isMobile = (bool)preg_match('#\b(ip(hone|od|ad)|android|opera m(ob|in)i|windows (phone|ce)|blackberry|tablet'. '|s(ymbian|eries60|amsung)|p(laybook|alm|rofile/midp|laystation portable)|nokia|fennec|htc[\-_]'. '|mobile|up\.browser|[1-4][0-9]{2}x[1-4][0-9]{2})\b#i', $_SERVER['HTTP_USER_AGENT'] ); if($isMobile) { header('Location: m.server.com'); } аналог в английской ветке

суббота, 7 марта 2020 г.

Ошибка: play() can only be initiated by a user gesture (мобильный Chrome)

#google_chrome #mobile #мобильная_разработка #ionic


Делаем приложение через Ionic/Cordova; компилю на платформу browser; через библиотeку
медиа пытаюсь запустить мелодию по событию (пришел заказ от клиента).

Столкнулся с такой проблемой: если PUSH работает нормально, то на попытку инициализировать
звук когда открыто приложение через мобильный хром — ну ни как не получается. Вылетает
такая ошибка:


  Uncaught (in promise) DOMException: play() can only be initiated by a
  user gesture.


И да, я читал, что это такое и немного вот об этом и этом.

Понаходил советы, что нужно вызов проигрывания цеплять на click или другой жест.
Но, при всех прочих, захожу в ВК с мобильного браузера, смотрю на страницу — мне присылают
сообщение, и звук идёт (не от PUSH, а от браузера)!

Вопрос: как у них это получилось? И как мне сделать такое же (хотя бы в теории)?
Буду рад любым идеям. Спасибо.
    


Ответы

Ответ 1



function initAudioItems(e) { if (e.originalEvent !== undefined) { var dom_item = document.getElementById('my_audio'); dom_item.muted = true; dom_item.play() .catch(function(e) { console.log(e); }); dom_item.pause(); dom_item.muted = false; $(dom_item).data('init', true); $('body').off('click', initAudioItems); } } // init audio $('body').on('click', initAudioItems); Если пользователь хоть раз кликнет на странице - аудио беззвучно запустится и остановится. После этого вы можете запускать его по произвольному событию. Как ни старался не смог найти как такую инициализацию повесить на пролистывание, только на клик работает.

Ответ 2



Вы на полпути к решению, осталась только одна деталь - сохранение дом элемента audio для повторного использования. Этот объект достаточно инициализировать лишь один раз в контексте пользовательского действия (нажатие или даже пролистывание), а затем использовать его везде где нужно запустить воспроизведение по произвольному событию. Естественно на сайтах-одностраничниках такой "фокус" работает просто на ура, но не будет работать на сайтах которые перезагружают страницу полностью. А также этот элемент после инициализации можно перемещать в DOM документа Все вышесказанное относится как к сайту так и к приложению. Знаю что есть опция в настройках cordova разрешающая автовоспоизведение без взаимодействия с пользователем, но к сожалению она не на всех версиях android работает так как должна.

понедельник, 24 февраля 2020 г.

Динамически менять viewport для выбора мобильной/полной версии

#html #мобильная_разработка #viewport


Делаю мобильную версию. Есть проблема зума. На мобильной версии есть тег:




По кнопке перехода пишется сессия и вместо этого тега пишется другой: 




Проблема в том что браузер "помнит" ширину в 320px и применяет его, initial-scale=1
при этом игнорируется. 

Если указать user-scalable=no, то масштабируется всё правильно, но увеличить пользователь
уже не может. Такой же эффект если поставить minimum-scale=1,maximum-scale=1. А надо
чтобы пользователь мог увеличить части страницы.

Как этого добиться?
    


Ответы

Ответ 1



Попробуйте добавлять этот тег динамически при загрузке страницы var viewPort = document.createElement('meta'); viewPort.name = "viewport"; viewPort.content = "width=1024"; document.getElementsByTagName('head')[0].appendChild(viewPort); Либо менять его же: document.querySelector("meta[name=viewport]") .setAttribute("content", "width=1024"); Если это не поможет, то может быть так что в вашем браузере в принципе нельзя этого сделать - проблема известная.

Ответ 2



Можно попробовать менять содержимое мета-тега уже после того, как зум стал таким, каким нужно. window.onload = function() { setTimeout(function() { var viewport = document.getElementById('desktop'); viewport.setAttribute('content', 'width=1024'); }, 500); };

воскресенье, 16 февраля 2020 г.

Динамически менять viewport для выбора мобильной/полной версии

#html #мобильная_разработка #viewport


Делаю мобильную версию. Есть проблема зума. На мобильной версии есть тег:




По кнопке перехода пишется сессия и вместо этого тега пишется другой: 




Проблема в том что браузер "помнит" ширину в 320px и применяет его, initial-scale=1
при этом игнорируется. 

Если указать user-scalable=no, то масштабируется всё правильно, но увеличить пользователь
уже не может. Такой же эффект если поставить minimum-scale=1,maximum-scale=1. А надо
чтобы пользователь мог увеличить части страницы.

Как этого добиться?
    


Ответы

Ответ 1



Попробуйте добавлять этот тег динамически при загрузке страницы var viewPort = document.createElement('meta'); viewPort.name = "viewport"; viewPort.content = "width=1024"; document.getElementsByTagName('head')[0].appendChild(viewPort); Либо менять его же: document.querySelector("meta[name=viewport]") .setAttribute("content", "width=1024"); Если это не поможет, то может быть так что в вашем браузере в принципе нельзя этого сделать - проблема известная.

Ответ 2



Можно попробовать менять содержимое мета-тега уже после того, как зум стал таким, каким нужно. window.onload = function() { setTimeout(function() { var viewport = document.getElementById('desktop'); viewport.setAttribute('content', 'width=1024'); }, 500); };

среда, 29 января 2020 г.

Как перекрасить адресную строку браузера

#html #мобильная_разработка




Господа, подскажите, как можно перекрасить адресную строку браузера? Сколько не рылся
в коде, ничего подходящего не нашел.
    


Ответы

Ответ 1



здесь есть описание для разработчиков: https://developers.google.com/web/updates/2014/11/Support-for-theme-color-in-Chrome-39-for-Android пример кода:

Ответ 2



Используйте метатег:

суббота, 28 декабря 2019 г.

С чего начинать Android разработку? [закрыт]

#java #android #мобильная_разработка


        
             
                
                    
                        
                            Закрыт. На этот вопрос невозможно дать объективный ответ.
Ответы на него в данный момент не принимаются.
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            Хотите улучшить этот вопрос? Update the question so it
can be answered with facts and citations by editing this post.
                        
                        Закрыт 3 года назад.
                                                                                
           
                
        
Хочу начать разрабатывать приложения под андроид, но не знаю с чего начинать, посоветуйте.
(Знаю Java)
    


Ответы

Ответ 1



Советую вам книгу - Android Programming: The Big Nerd Ranch Guide (2nd Edition). Там простой английский (если хотите разрабатывать android приложения, то без знаний английского вам будет очень тяжело), хорошо описаны фундаментальные принципы, и обучение построено на разработке приложений. В первую очередь с помощью этой книги вы и научитесь целостной разработке приложений, и понимания Android, а не создания каких-нибудь отдельных компонент. Если хотите рассмотреть, какой функционал есть в Android, то можете воспользоваться данным сайтом. Все распределено по категориям, и понятно описано. Так же можете обращаться к первоисточнику, где есть масса полезной информации, там же присутствует официальный курс от разработчиков.

Ответ 2



Советую http://startandroid.ru/ru/ - по полочкам, шаг за шагом.

Ответ 3



Я начинал просто с чтения документации http://developer.android.com/intl/ru/guide/index.html. Там в принципе все достаточно понятно расписано, если есть базовые знания Java и основных паттернов проектирования. Почти вся документация переведена на русский. Из видео обучалок хотел бы выделить https://www.youtube.com/playlist?list=PLIU76b8Cjem7oSU18zTKNfsyzrmf3Zubl.

Ответ 4



Заглянуть на сайт http://developer.android.com/ и ознакомиться с учебником для начинающих "Hello World". Это даст начальные знания о платформе.

четверг, 26 декабря 2019 г.

Как “нащупать дно” (отследить момент касания конца страницы) при скроллинге на мобильном устройстве?

#javascript #jquery #scroll #мобильная_разработка


Подобная конструкция работает только для стационарной версии:

$(window).scroll(function() {
    if ($(window).scrollTop() + $(window).height() >= $(document).height()) {
        ...


Моб. устройства просто не понимают, что ты достиг конца страницы при скроллинге...
Задумка проста: нужно при скроллинге до низа страницы подгружать контент на манер
бесконечной подгрузки контента.

Каким образом можно "словить" этот момент?
    


Ответы

Ответ 1



Запускал локальный сервер с помощью Gulp, на компе брузер Chrome работает, на мобилке браузер Safari на Iphone7 работает. $(window).on('scroll', function(e){ if ($('html, body').scrollTop()+$(window).height() == document.documentElement.scrollHeight) { $('body').append('

lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem lorem

') } }); p{ color: coral; }

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Enim voluptate ex unde. Ex tenetur veniam dolores enim, tempore deserunt provident. Suscipit non quaerat blanditiis impedit, voluptatibus mollitia odio voluptates sequi. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nulla, qui ratione vel ullam saepe odio, eveniet sapiente quas libero cum ipsa, minus a magni. Atque, vitae ipsum nihil facilis earum.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Enim voluptate ex unde. Ex tenetur veniam dolores enim, tempore deserunt provident. Suscipit non quaerat blanditiis impedit, voluptatibus mollitia odio voluptates sequi. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nulla, qui ratione vel ullam saepe odio, eveniet sapiente quas libero cum ipsa, minus a magni. Atque, vitae ipsum nihil facilis earum.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Enim voluptate ex unde. Ex tenetur veniam dolores enim, tempore deserunt provident. Suscipit non quaerat blanditiis impedit, voluptatibus mollitia odio voluptates sequi. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nulla, qui ratione vel ullam saepe odio, eveniet sapiente quas libero cum ipsa, minus a magni. Atque, vitae ipsum nihil facilis earum.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Enim voluptate ex unde. Ex tenetur veniam dolores enim, tempore deserunt provident. Suscipit non quaerat blanditiis impedit, voluptatibus mollitia odio voluptates sequi. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nulla, qui ratione vel ullam saepe odio, eveniet sapiente quas libero cum ipsa, minus a magni. Atque, vitae ipsum nihil facilis earum.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Enim voluptate ex unde. Ex tenetur veniam dolores enim, tempore deserunt provident. Suscipit non quaerat blanditiis impedit, voluptatibus mollitia odio voluptates sequi. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nulla, qui ratione vel ullam saepe odio, eveniet sapiente quas libero cum ipsa, minus a magni. Atque, vitae ipsum nihil facilis earum.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Enim voluptate ex unde. Ex tenetur veniam dolores enim, tempore deserunt provident. Suscipit non quaerat blanditiis impedit, voluptatibus mollitia odio voluptates sequi. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nulla, qui ratione vel ullam saepe odio, eveniet sapiente quas libero cum ipsa, minus a magni. Atque, vitae ipsum nihil facilis earum.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Enim voluptate ex unde. Ex tenetur veniam dolores enim, tempore deserunt provident. Suscipit non quaerat blanditiis impedit, voluptatibus mollitia odio voluptates sequi. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nulla, qui ratione vel ullam saepe odio, eveniet sapiente quas libero cum ipsa, minus a magni. Atque, vitae ipsum nihil facilis earum.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Enim voluptate ex unde. Ex tenetur veniam dolores enim, tempore deserunt provident. Suscipit non quaerat blanditiis impedit, voluptatibus mollitia odio voluptates sequi. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nulla, qui ratione vel ullam saepe odio, eveniet sapiente quas libero cum ipsa, minus a magni. Atque, vitae ipsum nihil facilis earum.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Enim voluptate ex unde. Ex tenetur veniam dolores enim, tempore deserunt provident. Suscipit non quaerat blanditiis impedit, voluptatibus mollitia odio voluptates sequi. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nulla, qui ratione vel ullam saepe odio, eveniet sapiente quas libero cum ipsa, minus a magni. Atque, vitae ipsum nihil facilis earum.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Enim voluptate ex unde. Ex tenetur veniam dolores enim, tempore deserunt provident. Suscipit non quaerat blanditiis impedit, voluptatibus mollitia odio voluptates sequi. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nulla, qui ratione vel ullam saepe odio, eveniet sapiente quas libero cum ipsa, minus a magni. Atque, vitae ipsum nihil facilis earum.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Enim voluptate ex unde. Ex tenetur veniam dolores enim, tempore deserunt provident. Suscipit non quaerat blanditiis impedit, voluptatibus mollitia odio voluptates sequi. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nulla, qui ratione vel ullam saepe odio, eveniet sapiente quas libero cum ipsa, minus a magni. Atque, vitae ipsum nihil facilis earum.



Ответ 2



if (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) { $(window).scroll(function() { var crntHeight = $(this).children("#place").height(); if($(this).scrollTop() >= (crntHeight - $(this).height()-100)){ ... {ajax} ... Примерно такая конструкция работает на мобильном. Правда не идеально. Может быть есть у кого-то наработки?

понедельник, 23 декабря 2019 г.

Начиная с какой минимальной версии Android можно загружать приложения в google play market?

#java #android #мобильная_разработка #мобильные_приложения


Недавно слышал, что для того, чтобы загрузить приложение в google play market, минимальная
версия для него должна быть не ниже android 8.0. Это так или нет?
И если нет, то начиная с какой версии можно его загружать приложения?
    


Ответы

Ответ 1



Минимальная версия может быть любой, а вот целевая: Android 8.0 (API уровня 26) С 1 августа 2018 года требуется для новых приложений. С 1 ноября 2018 года требуется для обновлений приложений. Android 9 (API уровня 28) С 1 августа 2019 года будет требоваться для новых приложений. С 1 ноября 2019 года будет требоваться для обновлений приложений. https://support.google.com/googleplay/android-developer/answer/113469#targetsdk

Ответ 2



Минимальную поддерживаемую версию (minSdkVersion) можно ставить любую, но ниже 16 sdk просто нет смысла. Ограничения вводятся на targetSdkVersion. Сейчас нельзя опубликовать или обновить приложение с target sdk ниже 26 (android 8.0), с первого ноября 2019г. под запрет попадут версии ниже 28 (android 9.0). Это связано с безопасностью. Например после добавления runtime permissions в 23 sdk, долгое время можно было публиковать приложения таргетированные под старые версии, не заморачиваясь с новым api, они получали все разрешения при установке на девайс, по старинке.

воскресенье, 8 декабря 2019 г.

Как сделать подгрузку файлов игры с сервера при запуске на андроид?

#c_sharp #unity3d #разработка_игр #мобильная_разработка


Дайте пожалуйста направление как загружать файлы с сервера при запуске игры, чтобы
в будущем можно было добавлять/менять фон, музыку и т.д.
    


Ответы

Ответ 1



Вопрос вполне корректный, и, даже, очень хороший. Основная часть ассетов входит в сам проект еще на стадии компиляции, а это значит то, что просто загрузить файл и им пользоваться не выйдет. Все файлы буквально встраиваются в сам проект при компиляции. Но иногда нужно доступ к файлам через pathname. Например: проигрывание видео на iOS осуществимо только по path. Или, скажем, подкачка новых ресурсов из интернета и подгрузка их в рантайме. Это возможно при помощи Streaming Assets. Как пользоватся этим -- в мануале по линке. Копай в эту сторону. Если грубо и коротко: Создаешь папку в проекте StreamingAssets Учишься обращаться к файлам которые лежат в этой папке (обращение осуществляется по конкретному пути, а не так как обычно в unity) При помощи http запроса сохраняешь файл туда, например, zip папку с нужными ресурсами в правильной структуре, разархивируешь в эту же папку и обращаешься к ресурсам в рантайме Так же нужно иметь ввиду, что стандартные ресурсы они конвертируются в "стандартные форматы" для юнити. Так же нужно иметь ввиду что если не подготовить ресурс, он будет медленнее работать т.к. юнити будет конвертировать ресурсы "на лету". Например сжимать текстуры. Так же, пожалуста, заплюсуйте ответ KingPeas.Он дополнил ответ очень хорошим путем -- Asset Bundle. Думаю, даже лучшим чем сначала вспомнил я :) Они созданы именно для того, что бы подготовить и упростить загрузку (т.к. все ресурсы нужные можно в 1 файл закинуть и, например, текстуры сразу пережимаются юнити, а не на лету это делается, как в случае со Streaming Assets.)

Ответ 2



Посмотрите в сторону AssetBundles - это встроенный механизм от Unity для закачки контента отдельными пакетами. Это позволит добавлять контент порционно) Например подгружать контент от моделей до новых сцен.

четверг, 11 июля 2019 г.

Как запретить масштабирование Яндекс.Карты при скролле только на мобильных устройствах?

Cкажем вот эта карта — Яндекс.Карты multiRoute
Как запретить масштабирование карты на малых разрешениях (начиная с планшета), а на стандартных разрешениях оставить? Чтобы при скролле пальцем не нужно было проматывать всю карту для спуска вниз, но при этом можно было увеличивать/уменьшать масштаб с помощью +/-
Вообще, решил так function init() { var myMap = new ymaps.Map('map', { center: [55.76, 37.64], zoom: 10 }) myMap.behaviors.disable('scrollZoom'); myMap.behaviors.disable('drag'); }


Но, вопрос остаётся: как отключить эту возможность только на мобильных устройствах, а на desktop — оставить?


Ответ

Вообще, решил так
map.behaviors.disable('scrollZoom'); map.behaviors.disable('drag');
Но, вопрос остается: как отключить эту возможность только на мобильных устройствах, а на десктоп оставить?

пятница, 24 мая 2019 г.

Ошибка: play() can only be initiated by a user gesture (мобильный Chrome)

Делаем приложение через Ionic/Cordova; компилю на платформу browser; через библиотeку медиа пытаюсь запустить мелодию по событию (пришел заказ от клиента).
Столкнулся с такой проблемой: если PUSH работает нормально, то на попытку инициализировать звук когда открыто приложение через мобильный хром — ну ни как не получается. Вылетает такая ошибка:
Uncaught (in promise) DOMException: play() can only be initiated by a user gesture.
И да, я читал, что это такое и немного вот об этом и этом
Понаходил советы, что нужно вызов проигрывания цеплять на click или другой жест. Но, при всех прочих, захожу в ВК с мобильного браузера, смотрю на страницу — мне присылают сообщение, и звук идёт (не от PUSH, а от браузера)!
Вопрос: как у них это получилось? И как мне сделать такое же (хотя бы в теории)? Буду рад любым идеям. Спасибо.


Ответ

function initAudioItems(e) { if (e.originalEvent !== undefined) { var dom_item = document.getElementById('my_audio'); dom_item.muted = true; dom_item.play() .catch(function(e) { console.log(e); }); dom_item.pause(); dom_item.muted = false; $(dom_item).data('init', true); $('body').off('click', initAudioItems); } } // init audio $('body').on('click', initAudioItems);
Если пользователь хоть раз кликнет на странице - аудио беззвучно запустится и остановится. После этого вы можете запускать его по произвольному событию.
Как ни старался не смог найти как такую инициализацию повесить на пролистывание, только на клик работает.

пятница, 29 марта 2019 г.

Как перекрасить адресную строку браузера


Господа, подскажите, как можно перекрасить адресную строку браузера? Сколько не рылся в коде, ничего подходящего не нашел.


Ответ

здесь есть описание для разработчиков: https://developers.google.com/web/updates/2014/11/Support-for-theme-color-in-Chrome-39-for-Android
пример кода: