Автор: 1CBitrixChannel
Длительность: 00:42:10
0

Новинки платформы «1С-Битрикс: Мобильное приложение 2.0» Евгений Петриченко

Дата: 22.04.2014 23:48:00 Категории: Битрикс24

Новинки платформы «1С-Битрикс: Мобильное приложение 2.0» Евгений Петриченко Автор: 1CBitrixChannel Длительность: 00:42:10 Сергей Рыжиков: Новинки мобильной платформы. И мобильное приложение. Я всегда рассказываю, что у нас есть три больших продукта: есть управление сайтом, есть Битрикс24 и КорПортал (как один продукт воспринимается) и третий продукт – это мобильное приложение и мобильная платформа. Каждый из них имеет некоторые цели, и, в общем, дополняют себя. И я уже говорил о том, что мобильная стратегия, выход на мобильное устройство и работа с сайтами – чуть ли не одна из ключевых стратегий по развитию. Евгений Петриченко: Добрый день. Меня зовут Евгений Петриченко. И я руководитель мобильного направления компании 1CBitrix. Я сегодня вам буду рассказывать про новинки этого относительно нового продукта. И для начала небольшое введение, небольшой рефрэш, что вообще из себя представляет сам продукт и сама технологическая платформа. Платформа называется BitrixMobile 2.0. Напомню, что это платформа позволяет вам разрабатывать мобильные приложения, используя JavaScript и HTML5. То есть вам ничего не нужно делать, в плане там изучения новых языков, новых технологий. И у нас есть специальная библиотека, которая позволяет вам, собственно, создавать кроссплатформенные приложения с элементами, нативными элементами. Это гибридное приложение, но в отличие от того же PhoneGap это приложение более производительное что ли, и выглядит более нативно, хотя оно таковым не является. Разрабатывая приложение на нашей платформе, вы получаете возможность получать push на разработанные приложения. Вы можете один раз, минимум один раз, выгрузить ваше приложение в GooglePlay или AppStore и больше его не обновлять. А полностью весь контент, логику, дизайн – всё можете обновлять на сервере, то есть, в реальном времени. Это будет у вас отображаться в вашем приложении. То есть, все приложения, которые вот клиенты поставили, вы обновляете один раз, и у всех всё будет по-другому. Это, наверно, главное преимущество этой платформы нашей. И, собственно, из себя на бэкенде это представляет просто сайт. У нас есть приложения, которое мы делали, собственно, на нашей платформе. Это три приложения: это Битрикс Админ для управления сайтом (Сергей говорил о нём), приложение Клиент для Битрикс24… Сергей Рыжиков: Это Администратор, это Битрикс24, это интернет-магазин. Евгений Петриченко: Это демо интернет-магазин. Как видите здесь, на двух платформах, я показал, что есть. Сергей Рыжиков: Вообще круто, когда все три живут. Не знаешь, куда смотреть. Евгений Петриченко: Ну, можете смотреть куда хотите. Это просто демонстрация того, что всё-таки это работает. Это не просто какой-то фотошоп или монтаж. Это действительно работает. И это пример наших приложений. Они являются гибридными. И их, собственно, можно использовать как пример, как заготовку для своих приложений. Сергей Рыжиков: Вообще нужно доказать, что это HTML5. Сколько мы не выступали на эту тему, все говорят: «Ну…». Никто не верит. Евгений Петриченко: На самом деле, это не всё HTML5. Например, вот эта вот область HTML5, а вот эта вот область это Motif – это как бы гибрид. И вы можете выполнять какие-то операции в вашем браузере через JavaScript, но изменять мотивные элементы, соответственно. И вот этот слайдер, который постоянно открывается, всё-таки это всё Motif. Все анимации являются мотивными, то есть, привязаны к платформе. Допустим, вот, новые анимации они будут и у вас в приложении. И вам не нужно их программировать. У вас всё это будет. И всё это будет смотреться довольно-таки натурально. Это вводная часть. Я хочу осветить несколько новинок. Это отправка push-уведомлений в ваши разработанные приложения. Новая технология кэширования – оффлайн кэш. А, кстати, я забыл вам пример показать. Сергей Рыжиков: Мы хотели доказать, что это HTML5. Евгений Петриченко: Да, сейчас мы докажем, что это HTML. Вот это вот часть HTMLная. Это готовое приложение Битрикс24. Не первый раз показываем этот ролик, но, как бы… Сергей Рыжиков: Всегда имеет эффект. Евгений Петриченко: Никто не верит. Всегда. Вот пытаемся изменить, то есть, это просто HTML, меняем его на сервере. Допустим, это было приложение в AppStore. Мы меняем простой шаблон, допустим, компонента меню. Он у нас отображался слева. Добавляем новый пункт и просто его обновляем. У нас появляется новый пункт. У нас получается, что мы обновили приложение, не выпуская его в AppStore или GooglePlay. И у нас есть страничка, мы на ней делаем, что хотим. Вызываем какие-то функции, которые управляют интерфейсом. Может что-то там верстать с CSS, какие-то ленты, новости – что хотите. Собственно, о новинках. Я хочу рассказать о системе оффлайн запуска, умной системе кэширования, отправке push-уведомлений, немного расскажу о процессе сборки приложений, о котором нам поступают заявки, ну, расскажу об ошибках, которые клиенты допускают, и о решениях вообще таких проблем что ли. Первое, что наша технология кэширования основана на HTML Application Cache. Это схематичное, то есть, максимально схематичное изображение всего этого процесса кэширования. То есть, у вас есть браузер, браузер стучится на сервер, сервер отдаёт некий файлик, называется Manifest file, он выдаётся в атрибуте Manifest тэга HTML, этот файл распознаётся, в этом файлике хранятся, в общем-то, список всех файлов, которые нужно закэшировать браузеру и больше никогда их не запрашивать. Таким образом, он получает списочек этих файлов, стучится на сервер за этими файлами, в фоне закачивает их, сохраняет в свой какой-то там внутренний storage, включая документ. То есть, например, индекс php, который он отдал, он его и сохранит. То есть, это в принципе единственное отличие от простого кэширования браузера, когда единожды совершив хит, он закэшировал все ресурсы страницы, и потом он стучится только на этот документ, а теперь он на него стучаться не будет. То есть, нет интернета, вы постучались – никакого хита не будет происходить, но пользователь уже будет видеть страницу, у него фактически ничего не может быть. Происходит только хит опять же на Manifest, чтоб посмотреть, не изменился ли список файлов. Если он изменился, то тогда процесс происходит заново, но пользователь этого не видит. Это всё происходит, ну, в общем, как-то скрыто и в бэкграунде. Собственно, это особенности HTML Application Cache. Что он позволяет делать: это создавать оффлайн приложения, он кэширует сам документ, управлять можно только через Manifest – больше никак, для него есть  API в браузере, и всеми браузерами он практически поддерживается вплоть до там наверно всяких стареньких Андроидов, там то же есть Application Cache, соответственно, то есть, технологию можно использовать. И мы, собственно, её использовали в мобильных приложениях. Хочу рассказать немножко про Manifest. Это страшная штука. Я немножко здесь описал в принципе из документации всякие вещи. То есть, Manifest состоит из трёх разделов: это CACHE, NETWORK и FALLBACK. Весь этот Manifest может состоять из, не знаю, сотен файлов. Допустим, если у вас какая-то страничка, очень много JS, Image, в CSS очень много спрайтов, и вам нужно запихнуть в этот файлик Manifest около там 200 файлов. У нас есть такие страницы, и вручную это делать очень сложно. Так вот, мы разработали технологию, которая это всё делает за вас, автоматически проверяет модификацию, обновляет, перезаписывает их, то есть, делает всё то, что вам бы пришлось делать всё вручную для поддержки оффлайн режима в вашем приложении. Вам нужно использовать вот этот классик: называется AppCacheManifest. Вот вызов страницы, которая позволяет добавлять файлы в Manifest в разные разделы, CACHE, NETWORK и FALLBACK. И этот кэш формируется только для этой страницы. Когда вы вызываете этот код, у вас происходит следующее. У вас полностью страница парситься, выпарсиваются все ресурсы, сохраняется это всё в Manifest, инжектируется в вашу страницу и также инжектируется ajax-запрос в эту страницу. Эта страница отдаётся браузеру, всё это работает как обычный Application Cache, только вот этот вот запросик ajax, он каждый раз проверяет, не сбилось ли что-то у вас там и не перезаписать ли Manifest. Фактически ничего не надо делать, вот эта вот штука делает всё за вас. Ну и, соответственно, код php на сервере. Вот. Если вы как разработчик что-то изменили, например, js или css, который входит в эту страницу, вам не нужно изменять Manifest, он сам изменится. Сам сгенерируется, и у пользователя всё обновится. Фактически пока вы ничего не меняете, у пользователя будет оффлайн приложение. Ну и кэш формируется на каждую страницу, это даёт такое преимущество: допустим, на один Manifest можно завязать все страницы, вообще все страницы и весь сайт, но ограничение по объёму файлов там в браузерах, по-моему, в Хроме пять мегабайт – ну, очень сложно. А так мы в общем как бы хакаем систему, мы можем пять мегабайт на одну страницу выделить. Ну, то есть, сложно столько ресурсов на одну страницу поместить – ну, это надо постараться. Наше оффлайн кэширование в приложении Битрикс24. Я покажу, как это работает. Первый запуск происходит в онлайне. Происходит то, что я показывал на предыдущем слайде. То есть, всё это закэшировалось, всё отлично. Manifest валидный. Кэш есть. Походил по приложению, пооткрывал всякие странички. Где-то здесь в этом видео я отключу интернет, и появится такая штучка «нет сети». Ну, это значит, что я выключил сеть. Вот я перешёл в задачи, и сейчас я выключу интернет. Нет сети. То есть, сети нет, и я сейчас попробую убить приложение полностью. То есть, оно ещё работает, но оно уже как бы не работает. Это я в эмуляторе показываю.  Открываю Битрикс24, и оно всё равно запускается, потому что приложение определяет, что есть кэш для этой страницы. И он запустит и покажет последние данные, которые вы просмотрели. Но фактически вы оффлайн. Ну и запуск по сравнению с тем же Age в 20 раз быстрее. Против цифр не попрёшь. Есть какие-то огрехи, конечно, на платформах Андроида, но мы их решаем. Сергей Рыжиков: Ну, в целом, вообще это изменило отношение пользователя к самому приложению. То есть, сам факт того, что приложение моментально стартует, показывает предыдущие данные, дёргает pull down, говорит, что обновляю – это сценарий, который, в общем, сегодня пользователи рассчитывают видеть. Быстрый запуск и интерактивность работы. Из зала: А вот тот новый пункт меню он в оффлайне работает? Сергей Рыжиков: Пункт меню в оффлайн – да. Евгений Петриченко: Да. Всё, что вы изменяете, будет. Там ещё есть дополнительные метки в документации, там ещё другими способами можно сказать браузеру, что что-то изменилось. Там есть ещё дополнительные, я просто не останавливался. То есть это первая технология. Вторая технология… Сергей Рыжиков: Подожди секунду. Я хочу дополнить. Вообще, разрабатывая мобильное приложение, мы очень тщательно следим за тем, чтобы себестоимость разработки не вырастала, о том, чтобы вы писали один раз, и чтобы это было более унифицировано по отношению вообще к разработчику. Ну, давай, мы потом вернёмся к этим слайдам, где показываем продукты, детально остановимся на тех проблемах, которые есть. И как вообще их решают с точки зрения кроссплатформенной разработки, почему это решение имеет очень много преимуществ. Евгений Петриченко: Вторая технология. Очень долго просили рассказать хотя бы, как это делается. Вот у нас в клиенте Битрикс24 отправляются push-уведомления. Во-первых, кто имеет коробку, Корпортал, вы уже можете это делать. То есть, в свой функционал вы можете отправлять push-уведомления. Как это происходит: у вас есть какой-то определённый код, вот он изображён, он отправляет на наш сервер, сервис облачный какие-то уведомления, и этот облачный сервис всё понимает и отправляет, в общем, эти уведомления по всем мобилам. Давайте немножко подробнее посмотрим, как это будет происходить. То есть, вот вы ставите на сервер модуль «Push&Pull», у вас Корпортал проверяет где-то там, есть он, нет, и формирует такой массивчик незамысловатый. Такой массивчик он состоит из нескольких массивов. То есть, каждый массив – это сообщение. USER ID, TITLE, идентификатор (будь то приложение Битрикс 24 или собранное вами – мы будем выдавать вам идентификаторы, вы сможете отправлять push на свои приложения), собственно сообщение, BADGE (вот этот 1, 2 – он установится у вас в приложении) и параметры разработчика (эти параметры будут передаваться в ваше приложение, чтобы понять, чтобы обработать этот push, когда вы на него будете тыкать, и ваше приложение будет каким-то определённым образом реагировать), ну и, собственно, отправка этого push. Push отправляется в облачный сервис, который сам понимает, что делать. Он понимает, он пытается распознать, что это за сервис. То есть: Apple или Google. Сейчас поддерживается только два сервиса, потому что две платформы. Получает идентификаторы, получает всякие ключи, подписывает и высылает на сервисы Google и Apple, а они уже дальше по устройствам. То есть, они выполняют свою функцию. В итоге пользователи получают свои push-уведомления. Когда push-уведомление пришло на девайс, по нему можно кликнуть. В данном случае ничего не происходит, потому что это простой пусто push. Но к нему пришли какие-то данные, и по нему, по клику на этот push, открывается сообщение в вашем приложении, оно загружается, вызывается такой обработчик JavaScriptовый, можно отловить вот это событие вот таким вот способом, и вам придёт тот массивчик, который вы передали там на php. Соответственно, мы можете знать, что это за push и делать, что хотите. Но есть определённая проблема: на push в том же iOS вам даётся всего 256Кб. Если вы сможете кириллицу сюда вместить и текст задачи и тому подобное, то, пожалуйста. Но можно другими способами. На Google можно там хоть «Войну и мир» переслать. Сергей Рыжиков: Так нет, зачем. Идёт идентификация, что новая задача. Он открывает задачу уже на портале. Ваша задача… Евгений Петриченко: Смотря, какая задача. Нет, почему, на сервере можно заготовить данные, на мобилу поставить, но это будет очень интересное решение. Сергей Рыжиков: Неожиданный ход. Евгений Петриченко: Конечно. Далее я расскажу про сборку приложений. Тоже все хотят знать, как это делается, сколько это происходит. Когда вы написали своё приложение на сервере полностью на JavaScript, вы оформляете некую заявку на сайт. Вы там пишете адрес подключения к своему сайту, указываете иконки, стартовый экран вашего приложения и мы эту заявку видим, естественно, и обрабатываем в течение двух недель сейчас. Сборка происходит в полуавтоматическом режиме, потому что у нас есть люди в нашем бизнес процессе, они видят ваше приложение, собирают его и выявляют в нём ошибки. То есть, ошибки в самой заявке: неверные размеры экранов, какие-то, допустим, там иконки или что-то в этом роде, что-то неправильно сделанное, не те форматы. Смотрят общую работоспособность приложения: что у вас всё загружается. Корректность отображения всех ваших ресурсов: очень часто бывает, что ваши приложения выглядят как, ну не знаю, как будто дизайнера у вас нет – ну, бывает такое. И мы даём всякие рекомендации, особенно если это относится к iOS приложениям, то некоторые приложения в принципе просто не пропускает, потому что дизайн не соответствует гайдлайну, и нам приходится пользователю это объяснять. Ну и, соответственно, все эти найденные ошибки отсылаются ответственному лицу на email, с ним ведётся переписка, и вопросы все эти решаются. Рекомендации даются, и мы сопровождаем, соответственно, постинг всех этих приложений в AppStore и GooglePlay. Если клиент хочет, мы можем просто ему собрать приложение, и он не будет заниматься этим сам – такие клиенты тоже есть. Хотелось бы рассказать больше о типичных ошибках. Это вот такая вот ошибка: стартовый экран, когда загружается приложение, у вас стартовые экранчики такие есть для разных экранов. Вот, допустим, там iPad, Ретина, не Ретина, iPhone5, iPhone4 – этих экранчиков очень много, и каждый может весить по 7-8 Мб. Такие картинки реально присылают. Пока мы это не оптимизировали. Но бывает так, что приложение весит мегабайт сорок картинок, которые, собственно, эта картинка меньше секунды появляется на экране. Ну, это не рационально, поэтому мы рекомендуем размер картинки - не больше 1 Мб. Иконки. Иконки не должны быть круглые. Они должны быть все квадратные, мы их сами будем закруглять. Тем более, когда вы постите эти иконки, вы не знаете радиуса закругления. Поэтому нет смысла гадать, лучше нам прислать уже заготовки, а мы сделаем всё, как нужно. Email. Были такие случаи, что люди указывают email, который вообще не существует. Мы даже достучаться до него не можем. Соответственно, и собрать ему приложение не можем, и запросить какую-то дополнительную информацию, и процесс стоит. Потом этот человек обращается в техподдержку, в партнёрский отдел и предъявляет претензии. А мы с ним просто не можем связаться. Слишком длинное название. Бывает там название приложение, которое должно отображаться под иконкой, получилось неудачное. На самом деле здесь БитриксАдмин должно быть. Вот. Получилось: БитриксАд. Такие казусы могут происходить. Бывают названия типа Калининградский Государственный Технический Университет – краткое название приложения, ну, естественно, оно не помещается, как в данном случае. Ну, рекомендация - 12 символов. И, если есть возможность, то лучше латиницей, так больше помещается. Что касается адреса. Часто могут указать не тот адрес. То есть, мы подключаемся, а там нет приложения. Ну, собственно, дальше делать нечего. Надо тщательно проверять данные, которые вы отправляете. Хотелось бы также поговорить по поводу дизайна iOS 7. Кто будет заявку на приложение создавать, лучше сразу оптимизировать свой дизайн под iOS 7, потому что с 1 февраля iOS 7 – это приоритет у Apple. И они не пускают просто приложения или, по крайней мере, со скрипом те, которые не соответствуют новому гайдлайну, новому видению. Вот, собственно, это такие рекомендации. И мы уже практически начали переходить в нашем приложении на новый дизайн. И, соответственно, уже успели поменять какие-то новые элементы, которые соответствуют новым веяниям и тенденциям и вообще тренду, который якобы задал Apple. Сергей Рыжиков: Ну, кстати, это упрощает ситуацию, особенно там с Андроидом, Apple стали чуть более похожи. Евгений Петриченко: Да, не нужно никаких текстур – ничего. Вы оперируете просто иконками и цветом. Но, на самом-то деле, всё проще. Ну, и такой интерфейс приближен к андроидовскому интерфейсу, потому что там тоже довольно-таки всё в плоском стиле всё сделано. И последнее, что хочу сказать: слайдик, что мы планируем. Мы планируем оптимизировать процесс сборки. Он будет более автоматический, практически будет ситуация такая, что вы создаёте заявку, а вам андроид-приложение может сразу прийти по email или куда-то, в общем, прикрепиться. И файлик просто будет собираться нашим каким-то сервисом. И вам вообще общаться с нами не надо. Но зато мы не будем проверять на корректность: вы будете сами смотреть, какое приложение у вас получается. Конструктор мобильных приложений: мы по опыту поняли, что люди не умеют, не знаю, чего они хотят. То есть, у них приложения получаются, ну, не очень красивыми что ли, они какие-то все корявые или что-то в этом роде. И мы хотим дать им такой коридорчик, из которого они выйти не смогут. Этот конструктор вам соберёт приложение по дизайну приемлемое, которое пропустят сторы, ну и настройки, всё это будет красиво визуально, drag-and-drop и все дела. Офлайн-режим в пользовательских приложениях – это технология, о которой я рассказывал. Она тоже будет внедрена. Вы сможете создавать свои офлайн-приложения. И упрощение процесса публикации – это, наверно, всё-таки связано с автоматизацией сборки. Ну и новое API, новые интерфейсы, новые нативные элементы и новые возможности нашей песочницы, с которыми вы можете поиграться. Спасибо большое. (Аплодисменты.) Сергей Рыжиков: Так. Ну, давайте я пока, если можно, возвращайте на слайд, где ролики трёх приложений, а я хотел сразу ответить на вопрос, который задают по Windows Mobile. И потом ещё пару слов сказать вообще про некую специфику и цели. Нас часто спрашивают: «Почему вы не поддерживаете Windows Phone 8?» Есть только одна, пожалуй, причина. Ну, не правда, две. Первая причина. Да, нет, три. Первая причина: к сожалению, доля не очень большая. Microsoft много говорит о доле. Но в большинстве своём это доля, связанная с недорогими устройствами, которые используются как тач телефоны. Если смотреть по трафику, у меня будут в завтрашнем днем слайды, где мы будем показывать цифры и трафик. Реальный трафик от мобильных Windows Phone телефонов – не высокий. То есть, они для чего-то другого используют телефон. Это одна причина. Вторая причина: есть очень большая вероятность того (об этом уже стали много говорить), что Microsoft должен решить сейчас одну дилемму. Как-то объединить Windows Phone 8 на телефонах, Windows RC который, и Windows 8 на планшетах. Потому что, то, что планшетный и телефонный Windows разный, это, в общем, неправильно, они вроде сами это понимают. И по дороге говорят: «Ну, мы может как-то и метры поменяем. Он уже не метр, но вообще другой может быть какой-то». И всё это создаёт очень большие риски: делать и поддерживать. В принципе, технологически выпустить нативное приложение, которое как Фреймворк будет исполнять среду, возможно. Есть большие опасения, что придётся детально поддерживать в разных нюансах. Поэтому мы пока сопротивляемся. Хотя нас частично и детально уговаривают. Теперь по поводу вообще разработки. Что обсуждают сегодня на основных конференциях по мобильной разработке: как делать один раз, чтобы это работало везде. И там есть целый список Фреймворков, какие-то на Dot Net, какие-то гибриды, какие-то варианты: есть Qt, который в разных вариантах используется, кто-то использует что-то. Но в результате всё равно это остаётся очень большой сложной дилеммой: как один раз написать приложение и сделать так, чтобы оно работало везде. Ну, и в целом, размышляя далее, мы считаем, что вообще мобильный app в нашем понимании – это часть сайта. Ну, как бы продолжение к сайту. То есть, если вы, например, там не знаю, сделали фотографию объекта, если вы агент недвижимости: оно должно сразу загрузиться на сайт в базу. Вы выполнили какие-то изменения, они находятся в централизованной базе. Кому это нужно получили push-уведомления. Тот же сервер, всё упрощается. И, с точки зрения скорости разработки, такая технология очень высока. Например, вот этот интернет-магазин был полностью разработан за месяц одним человеком. Евгений Петриченко: За меньше. Сергей Рыжиков: А? Евгений Петриченко: Меньше. Сергей Рыжиков: Даже меньше? Фактически, его разрабатывала не команда Жени, потому что они пишут только оболочку, они не пишут нативную часть, ой, внутреннюю часть. Всё внутри писал веб-разработчик, тестируя страницы и отрабатывая их, вообще, в большинстве своём, в браузере. Только на последнем этапе использовали мобильные телефоны, чтобы протестировать. Евгений Петриченко: Вообще, я хочу сказать, что вот в этом приложении задействовано, по-моему, минимальное количество функций. То есть, оно работает, оно многофункционально, но. Сергей Рыжиков: Оно специально как заготовка сделано. Так что, не сложно, быстро можно разрабатывать приложения. Приложение ПО для Битрикс24, его первую версию, мы выпустили тоже примерно за месяц. Его писали больше людей, но каждый из тех, кто писал свою логику, например, те, кто писали задачи, те и сделали, то есть, веб-разработчик сделал мобильную версию задач. Тот, кто делал живую ленту, он же сделал мобильную версию живой ленты. И так по каждому из разработчиков. Им просто дали там дополнительные требования, наборы JS-функций, методов, и они собрали эти приложения функциональными, понятными, и они вышли в Store. Ну, выпускали ребята Жени. В этом смысле мы как раз стараемся решить за вас часть проблем, которые связаны именно с выпуском, с разработкой. Ну, и административное точно также писали ребята, которые пишут административные разделы, бизнес и логику. Фактически, можно выпускать приложения достаточно быстро функциональные, решающие задачи клиента. Ну и глядя вперёд на LTE и на перспективы развития 4G мобильные, мы вообще считаем, что всё будет достаточно быстро, активно развиваться. Ну, миллиард устройств за прошлый год раздали – циферки ещё пообсуждаем. Скорее всего, всё будет двигаться в этом направлении. Давайте по вопросам. Предполагаю, что будут. Человек из зала: Евгений, вопрос к вам. Но сначала хотел бы собрать статистику зала. Скажите, кто пользуется мобильным приложением Битрикс24? Класс. У кого приходит push, они заходят в приложение, а там изменений нет? То есть, как бы немного, но. Сергей Рыжиков: На Android так? Человек из зала: Нет. На iPhone. Честно говоря, на Android, наверно, тоже. Может, остальные постеснялись. Но, наверно, 2 из 3 раз, когда мне приходит push, я захожу в приложение, и это Wi-Fi нормальный, там данные не обновились. Евгений Петриченко: То есть, push у нас может приходить только по поводу какого-то нового сообщения? Человек из зала: Да. Евгений Петриченко: А, может, Вы его читали перед этим? Человек из зала: Нет, я его не читал. Евгений Петриченко: То есть, вы заходите на Desktop, а это сообщение там есть? Человек из зала: Да, на Desktop оно есть, а в iPhone я захожу, его нет. Причём, оно там не появляется, пока я не уберу приложение вообще. Евгений Петриченко: Это вопрос? Человек из зала: Нет, ну я просто хотел, думаю, может, это у меня только на устройстве так глючит. Нет, ну я понял. Евгений, я бы хотел тогда попросить Вас обратить на это внимание, потому что, только убирая приложение из фона вообще, я могу получить обновлённые данные. Сергей Рыжиков: Это не связано с нативным приложением. Это связано с разработкой серверной части, которая формирует этот лист. Он ждёт сообщения с пулинга, если что-то происходит, например, с пулингом, он не доставляет эти сообщения. У вас Корпортал внутренний или облако? Человек из зала: Битрикс 24. Сергей Рыжиков: Битрикс 24. Значит, что-то, видимо с каналом, получается, раз он не доставляет это сообщение. Человек из зала: Ну, Wi-Fi нормальный. Сергей Рыжиков: Это проблема серверной разработки. Это именно особенность именно этого мессенджера. Человек из зала: Ну, очень часто. Сергей Рыжиков: Там есть нюанс, да, который стоит исправить. Появляется не всегда, не так, как вы говорите, но иногда случается. Человек из зала: У меня именно так. Сергей Рыжиков: Очень жаль. Спасибо. Давайте вопрос. Второй человек из зала: Вот мобильное приложение, собственно говоря. Сергей Рыжиков: Ваше? Наше? Второй человек из зала: Наше. Сергей Рыжиков: Окей. Второй человек из зала: Вот. Соответственно, вопрос с HTML-кэшом. Подглючивает он. Может быть, из-за того, что, как бы, приложение уже открывалось, я его запускаю, собственно говоря, в офлайне: кэша нет. Пишет: «Ошибка подключения к магазину». Ну, при том, что это ещё и не магазин. Собственно говоря, вопрос в чём. Может быть, не обновилась платформа, да. Вопрос про то, как обновляются именно, ну, сборки. Евгений Петриченко: А что за приложение? Второй человек из зала: Я потом в перерыве скажу. Сергей Рыжиков: Я так понимаю, наш интернет-магазин взяли как код и использовали для разработки. Второй человек из зала: Да-да. Сергей Рыжиков: Но там, по-моему, у вас нету ещё application. Евгений Петриченко: Я сказал, что это только будет. Второй человек из зала: Этого ещё нет? Евгений Петриченко: Да. Это было в планах 3.0. То есть, это технология сейчас используется в приложении для Битрикс24, мы её там обкатываем. А потом она будет применена к тем приложениям, которые мы собираем. То есть, этот кэш будет там включён. Второй человек из зала: Автоматом они все пересоберутся и обновятся приложения? Евгений Петриченко: Мы пересоберём все приложения. Сергей Рыжиков: Ну, здесь вопрос немножко в другом: нужно ли модифицировать серверную часть. Насколько я понимаю, нужно. Евгений Петриченко: Модифицировать серверную часть, я показывал, что всё равно нужно на сервере всё это сделать. Сергей Рыжиков: Нужно изменить application cache на сервере, потому что иначе он правильно… Мы обсуждали этот вопрос, но авто генерация его получается, ну, проблемная. То есть, приложения часть может заработать, а часть – нет. Нужен ручной подход к этому. Второй человек из зала: То есть нам нужно, как разработчикам мобильного приложения, которые узнали о новой вот этой фиче, нужно отловить тот момент, когда вы обновите платформу, изменить серверную часть… Евгений Петриченко: Отлавливать не надо. Мы об этом скажете. Второй человек из зала: Вы нам скажете? Евгений Петриченко: Да, во-первых. А, во-вторых, то есть, вы уже сейчас можете в принципе попробовать это API, которое вот сейчас уже даже вышло, можете его использовать. Сергей Рыжиков: А у тебя вышла девелоперская версия с ним? Евгений Петриченко: Так, а зачем? Это же сервер. Сергей Рыжиков: Почему? У тебя же всё равно Manifest собирается, остальные… Евгений Петриченко: На сервере. Сергей Рыжиков: А это всё на сервере? Евгений Петриченко: Да, это всё серверная часть. Что конкретно касается платформы: это возможность именно офлайн запустить приложение. А вот именно быстрое открытие, прям вот, когда он уже запущен, когда уже страница летает прямо на клиенте – это уже сейчас можно сделать, это уже сейчас всё поддерживается.   Второй человек из зала: Понятно, спасибо. Сергей Рыжиков: То есть, backend у нас полностью? Евгений Петриченко: Конкретно именно функция, когда нет интернета, она запускается. Это от платформ зависит. Сергей Рыжиков: Окей. Так, давайте вопрос. Третий человек из зала (Вадим Яковлев): Вадим Яковлев, Москва. У меня вопрос по поводу уведомлений. Я так понимаю, их можно отправлять, только если приложение скомпилировано. То есть, из девелоперского приложения их не получится отправить. Евгений Петриченко: А зачем? Просто проверить? Вадим Яковлев: Ну, как минимум проверить, отладить функции… Евгений Петриченко: Мы, как только введём это для пользовательских приложений, мы, естественно, обновим платформу. То есть, девелоперское приложение, в котором можно будет тестировать свои push. Только там есть одна проблемка, что оно будет одно на всех. И надо подумать, как чтобы спама никакого не было. Посмотрим. Вадим Яковлев: Но там же мы всё равно в нём указываем адреса магазина. Евгений Петриченко: Ну, разберёмся. В общем, эта будет возможность, естественно, чтоб проверить push. Вадим Яковлев: Всё, хорошо, ладно. Сергей Рыжиков: Спасибо. Давайте вопрос. Четвёртый человек из зала: Скажите, пожалуйста, если уже сейчас возможность, перед компиляцией мобильного приложения загрузить в него часть данных, например, для больших распределённых каталогов, там, в несколько тысяч товаров, чтобы какая-то часть информации страниц кэша была уже при скачивании мобильного приложения. Евгений Петриченко: Ну, к сожалению, такой технологии у нас нет. У нас сейчас всё на сервере. Но мы в принципе думаем про это. То есть, что-то, какие-то данные предварительные туда скомпилировать туда, так сказать, сохранить. Но пока таких запросов, честно говоря, не было. Сергей Рыжиков: А у вас же был проект, в котором вы в SQLite, загружали данные. Евгений Петриченко: Ну, это приложения, когда ставятся, там сначала ничего нету. Их сначала нужно загрузить, эти данные, а потом сложить. А потом, эти данные, в общем, и хранятся. Четвёртый человек из зала: Это планируется, да? Евгений Петриченко: Нет, SQLite уже есть. Четвёртый человек из зала: Нет, я понимаю. А первичная подгрузка не данных, а, например, части каталога, страниц. Евгений Петриченко: Ну, вы имеете скомпилированное приложение, и там уже что-то есть? Четвёртый человек из зала: Да. Евгений Петриченко: Ну, во-первых, я уже сказал, что таких запросов не было. Поэтому пока ещё не в планах. Четвёртый человек из зала: А, понятно. Сергей Рыжиков: Так, пожалуйста, вопрос. Пятый человек из зала: Наверно, я уже. Сергей Рыжиков: А, да-да. Извините, пожалуйста. Пятый человек из зала (Павел Брагин): Павел Брагин, Медиа-холдинг «Из рук в руки». Мы год назад почти одни из первых, можно сказать, выпустили мобильное приложение, вернее, одно из линейки наших мобильных приложений, на платформе BitrixMobile. Достаточно это было быстро, по-моему, даже меньше месяца. Всё отлично работает, спасибо огромное 1С-Битриксу - это правда. Но есть один маленький нюанс: это всё прошло на платформе iOS Apple, ну, как бы там всё работает, а на платформе Android мы столкнулись с проблемой. Дело в том, что наше приложения как бы передаёт pdf-файлы клиентам, да, и на Android есть проблема, что в разных версиях Android происходит, ну, либо файлы не открываются, либо открываются там каким-то способом. Евгений Петриченко: Об ошибке мы знаем. Павел Брагин: Да, мы вот вам писали. Евгений Петриченко: Да, я даже знаю, что у вас за приложение. Павел Брагин: Это приложение издания «Из рук в руки». Поэтому просто хотелось, как бы, я не к тому, что вот когда вы там сообщите день, когда это заработает, но хотелось бы узнать, есть ли перспективы. Мы очень надеемся. Спасибо. Евгений Петриченко: Перспективы есть. Мы об этой проблеме точно знаем. И это в плане стоит. То есть, это в официальном плане есть, но это считается ошибкой. И мы активно работаем над этим. Мы сделаем хорошее скачивание файлов. Там действительно в разных версиях Android либо работает всё, либо не работает. Это мы поправим, и Вам сообщим. Я знаю, я письмо Ваше видел, просто не всегда успеваю отвечать. Сергей Рыжиков: Пожалуйста, вопрос ещё. Шестой человек из зала (Олег): Олег, Москва. А могли бы Вы озвучить несколько базовых критериев при выборе, куда двигаться: в сторону адаптивного дизайна или в сторону мобильного приложения. То есть, мы сейчас перед дилеммой стоим, как бы. Либо то, либо другое выбрать. Евгений Петриченко: Сейчас тенденция вообще такая в принципе, что нужно выбирать мобильное приложение. То есть, как бы, это в принципе. Олег: Ну, вот, одно из преимуществ Вы озвучили. То, что, соответственно, офлайн режим существует в мобильном приложении. А ещё какие-то? Евгений Петриченко: Ну, push-уведомления. Плюс сама концепция. То есть, когда вы покупаете мобильный телефон? вы ставите в сторах там что-то, а вот заходить на сайт, выбивать его url – это уже для современного пользователя сложновато. Сергей Рыжиков: Клиент становится вашим пользователем, когда поставил app. Вы можете коммуницировать с ним, пушать его, работать, в целом. Но обычно мобильное приложение, вот я говорил об этом, это регулярка и какие-то длительные сценарные отношения. Если он через поиск влетает, вы ему показали на адаптивную версию, и он выполнил заказ, оформил его и забыл про вас, условно. Ну, вот два, наверно, основных сценария. Евгений Петриченко: Адаптивный сайт остаётся сайтом. Просто у вас интерфейс и не совсем быстрый опять же. А мобильное приложение – это больше. Седьмой человек из зала: Можно, у меня вопросик. С GPS-координатами умеет Фреймворк работать же? Нет? Евгений Петриченко: Уже с самого начала он умеет работать. Потому что он основан, основой является ФонГап. Если вы знаете, что такое ФонГап, можно почитать документацию, все возможности, которые есть в ФонГап, в том числе работа с компасами, с файловой системой, с камерой и с GPS... Седьмой человек из зала: То есть, в документации всё это можно найти? Евгений Петриченко: Всё это есть, да. У нас даже есть, по-моему, где-то функция «current location». Можно посмотреть в документации, можно посмотреть в ФонГап. Седьмой человек из зала: Спасибо. Сергей Рыжиков: Пожалуйста, вопрос. Восьмой человек из зала (Антон): Антон, «Юстронг». А скажите, внутрь можно запихнуть карты, реально это? Ну, интерактивные имеются ввиду. Гугл или Яндекс Карты. Евгений Петриченко: А что значит внутрь? Не совсем понимаю. Антон: Внутрь приложения. Ну, я понимаю, что это HTML5. Будет ли он работать в телефоне? Евгений Петриченко: Будет. Антон: Всё. Евгений Петриченко: У нас даже есть примеры, ну, простые. То есть, люди используют карты, и даже есть у нас такое приложение от нашей компании, демонстрация, Битрикс Сити называется. То есть, приложение вашего города. И там активно используются именно карты. И можно посмотреть примеры. И, пока на Android не вышло, готовится. На iOS уже есть. Есть на iOS пока. Сергей Рыжиков: Пожалуйста, вопрос. Девятый человек из зала (Виталий Дудка): Виталий Дудка, «Создаватель», Челябинск. Такой вопрос: столкнулись с тем, что кэширование на Android работает не совсем корректно. Ну, когда планируется сделать? И вообще планируется или нет? Евгений Петриченко: А уточните, что за кэширование. Application Cache? Виталий Дудка: Ну, да. Евгений Петриченко: В приложении каком? Битрикс24? Виталий Дудка: Нет-нет-нет. В своём. Ну, для клиента делаем приложение, там, на iOS всё хорошо кэшируется… Евгений Петриченко: А что значит «не совсем корректно»? Не кэширует или …? Виталий Дудка: Не кэширует, да. И такое впечатление, что надо самим кэширование там писать. Вот, может быть, это как раз BitrixMobile 3.0 будет поддерживать? Евгений Петриченко: Давайте мы уже потом, я Вас спрошу, что вы конкретно делаете, и что-нибудь порекомендую. И скажу, где проблема: на вашей или на нашей стороне. Виталий Дудка: Давайте я номер тикета тогда подниму и подойду к Вам. Евгений Петриченко: Хорошо-хорошо. Сергей Рыжиков: Спасибо. Десятый человек из зала: У меня короткий вопрос. Тупой даже, наверно. Вот по поводу кэширования, я так понимаю, речь шла про нативное, что мы опять кэшируем, или это свой механизм, который текущую страницу мобильного приложения кэширует? Евгений Петриченко: Это практически надстройка над Application Cache. Сергей Рыжиков: Над нативом. Евгений Петриченко: Над нативным HTML5. Ну, просто это автоматизация его обновления и вообще в принципе им управление. Десятый человек из зала: Тогда дальше. У нас просто стоит задача, так скажем, полу исследовательская: заказчик хочет кэшировать видеофайлы непосредственно на устройстве. И прозвучало ограничение в 5Мб. Это как бы как потолок? Или просто с реализацией связано текущей? Евгений Петриченко: 5Мб это я говорил про десктопный Хром. То есть, там такое жёсткое ограничение. На Андроидах вообще нету никакого ограничения. То есть, там хоть фильмы записывай. Ну, я не думаю, как это будет работать, но по размерам нет ограничения. На iOS 20 Мб. Сергей Рыжиков: На страницу. Десятый человек из зала: То есть, это мы можем раскидать на каждую страницу. Евгений Петриченко: HTML Application Cache, он не для хранения файлов. Он работает сам по себе. Ну, вы не сможете туда записать какие-то данные. Если в Manifest только сможете. Десятый человек из зала: Ну, я имел в виду Manifest. Евгений Петриченко: Я не экспериментировал, если браузер это скушает. Но я, честно говоря, сомневаюсь. Наверно, всё-таки нужны какие-то специальные средства, инструменты для хранения. У нас они есть, но они, наверно, пока для вашей задачи не подходят, честно говоря. Десятый человек из зала: А какие-нибудь рекомендации в частном порядке? Евгений Петриченко: Ну, со сцены? Десятый человек из зала: Нет, ну, просто, чтобы сейчас людей не задерживать. Евгений Петриченко: Ну, хорошо, давайте, я Вам какие-нибудь рекомендации дам. Десятый человек из зала: Спасибо. Сергей Рыжиков: Ну, вообще, мобильной разработкой мы очень активно занимаемся. Мне кажется, тебе стоит завести экстранетовскую группу нашу. Собрать там партнёров, у которых бывают проблемы. И вообще, чтобы лучше консультироваться по этим вопросам, нужно обмениваться знаниями. Потому что вот, например, с нашей стороны, не очень актуально была видна проблема «сообщения не доставляются», но несколько рук подняли, что есть такая проблема. Возможно, она на какой-то версии, на каком-то типе девайсов, да, проявляется. Наверно, есть смысл посмотреть на это внимательнее. Так, пожалуйста, вопросы есть ещё? Павел Брагин: У меня ещё коротенький вопрос. Снова про наше приложение. Тут, чуть не забыли. А, значит, к кэшам опять вернёмся. Открывает человек приложение, закачивает pdf, кэш в приложении хранится на время сессии и потом приложение закрыли – всё отлично. Но в телефоне этот злосчастный pdf лежит. Есть ли какая-то возможность, ну, не знаю, как сказать, какой-то кусок кода оптимизировать, чтобы при выходе, например, там, очищается от кэша сам телефон. Понятен вопрос? Евгений Петриченко: Ну, я понял вопрос. Павел Брагин: То есть, грубо говоря, размер приложения растёт. Если человек там смотрит размер приложения, то выясняется… Евгений Петриченко: Я понял вопрос. Я могу по платформе ситуацию рассказать. У нас в iOS, по-моему, есть ограничение, то есть приложение может максимум занять 2Гб. Это максимальный его размер. То есть, мы просто там квоту такую установили, и, если эта квота будет достигнута, или у вас не окажется места в принципе на девайсе, должен такой вылезти диалог, и он вам покажет файлы, которые у вас закэшированы, прямо по папочкам, и вы можете их оттуда удалить. На Android это ситуация немножко другая, там пока, в принципе, как Вы знаете с файлами там плохо дело обстоит. Но пока вот такое вот решение, как я озвучил в iOS, мы можем его сделать в Android. И, наверно, сделать такую функцию, которая позволит либо удалять файлы просто, либо показывать диалог пользователю для удаления этих файлов, чтобы он сам их удалял. Павел Брагин: Я понял, но смотрите, тут просто какой момент. Я не знаю, у всех по-разному, но у меня, если, например, заканчивается место на iPhone, а нужно срочно прекрасный слайд сфотографировать, я смотрю, открываю там, какие у меня приложения. И смотрю: Яндекс Навигатор или Яндекс Карты – 2Гб – понятно, потому что там кэш карт. Я удаляю это приложение, потом я его закачиваю. Но наше приложение там на данном этапе, к сожалению, не такое популярное как Яндекс Карты. И поэтому, есть всегда опасения, что его кто-то удалил, а потом будет сложно ещё раз попросить установить, да. Поэтому вот в этой области интересно, чтобы была возможность каким-то образом зачищать этот кэш. То есть, чтобы мы своим приложением формально не создавали проблем нашим клиентам. Евгений Петриченко: Я понял. Я проблему понял. Сергей Рыжиков: Я думаю, что вы лучше, да, пообщаетесь с Женей после конференции. Павел Брагин: Обязательно, да. Спасибо огромное. Сергей Рыжиков: Спасибо большое, Жень. Мобильная разработка. (Аплодисменты.)

Ссылки и коды

Прямая ссылка:
www.mcart.ru/video/w1596/

BB-код для форумов и блогов:
http://www.youtube.com/watch?v=kLv7XHbfndo

HTML-код: