Перейти к содержанию
Fire Monkey от А до Я
  • 0

Вызов приложения из нофитикейшена


Kitty

Вопрос

Судя по всему на C++ Builder решения нет. Расскажите как это решить на Дельфи? Берем компонет TBecon  в его событии входа в зону вызываем  push нотификаешен. Как это организовать как фоновую службу?

Пользователь идет мимо магазина и получает push на спящий телефон... Жмет  на push и запускает наше приложение... Главное это push из фона...

Изменено пользователем Kitty
Ссылка на комментарий
  • Ответы 73
  • Создана
  • Последний ответ

Лучшие авторы в вопросе

Рекомендуемые сообщения

  • 0

предполагается, что пользователь зареган у вас где-то?

иначе как вы ему push пошлете?

а если пуш пришел, по нему и так откроется ваша программа

Изменено пользователем krapotkin
Ссылка на комментарий
  • 0
В 16.05.2016 в 16:55, Rusland сказал:

Kitty, есть же пример Notification для CB  в \CPP\Mobile Snippets\Notifications\SendCancelNotification

неужели приложение не стартует при вызове приложения?

Приложение, прекрасно стартует если даже свернуто и нажимаем пальцем на полученный push приложение открывается.

Запускаем приложение, сворачиваем например его в фон, заходим в зону действия маячка. В обработчике входа в зону я посылаю push на экран, при на нажатии на который все работает как надо. Однако, если пользователь конкретно выгрузил приложение из памяти или просто перегрузил телефон, то естественно ничего и не произойдет при входе в зону действия маячка. Я в приложении обрабатываю событие входа в зону, но приложение должно быть запущено (или свернуто). TNotificationCenter может работать только если программа запущенна.

Единственный выход писать перед входом в торговый цент - "Не забудьте перед входом запустить у себя на телефоне наше фирменное приложение торгового центра!" :)

Следовательно нужна служба, которая обрабатывала бы событие входа в зону TBecon посылала push и при нажатии на push запускалось основное приложение. Все правильно, другого решения нет и без такой службы не обойтись?

Изменено пользователем Kitty
Ссылка на комментарий
  • 0

неее. это не пуш... это просто Notification. программа все время ловит маяки и делает notifications. Вместо программы может быть сервис

НО

если сервис будет все время включен, батарея у телефона не доживет до вечера. Будет жрать все время электричество как и положено Bluetooth

Ссылка на комментарий
  • 0

Последние версии Bluetooth LE не сажают сильно телефон. Google и Apple рассматривают варианты сделать Bluetooth в новых версиях устройств не отключаемым, чтобы отказаться от разъема наушников.

Цитата

неее. это не пуш... это просто Notification.

push и Notification это разные вещи? Как послать тогда такой push если приложение ни разу не было еще запущено?

Какая окончательная рекомендация для задачи описанной выше?

Изменено пользователем Kitty
Ссылка на комментарий
  • 0

push посылает тебе на телефон "самый главный сервер". ОС сначала ищет твою программу, если находит, отдает PUSH ей. если не нашла - сама создает notification в шторке

твоя программа тоже может разместить notification но для этого PUSH сервера не используются

думаю, правильно здесь будет писать сервис. но есть промежуточный вариант. Project options -- Version info -- persistent=true

я точно так и не понял, если кто знает - подскажите, но программа становится "полу-сервисом" и все время работает, даже в фоне...

у меня батарейку жрет из-за постоянных http запросов. 3g и все такое...

Ссылка на комментарий
  • 0

Говорят в новых телефонах bluetooth не сильно разряжает батарею, когда просто включены (пример - телефоны Xiaomi). То ли это оптимизация прошивки, то ли сами bluetooth модули такие.

Ссылка на комментарий
  • 0
8 часов назад, Kitty сказал:

push и Notification это разные вещи?

конечно разные!

запилите на сервере посылку push и тогда он будет приходить даже при не запущенном приложении!

и что вы все про android, даже если сделать через сервис, то ваше решение не покатит на ios и вам придется переписывать приложение!

делайте лучше сразу посылку push независимо от приложения!

Ссылка на комментарий
  • 0

Если push это совсем другое чем нотификейшен и для посылки push нужен отдельный сервер, то расскажите по подробнее про два момента:

- каким образом главный сервер понимает, что телефон вошёл в зону действия маячка, если само приложение на телефоне не было запущено?

- где посмотреть пример посылки push на телефон с сервера?

 

Ссылка на комментарий
  • 0

конечно, сервер не узнает. тут айфон сольет )))

для гугла пример посылки тут

вся прелесть именно в том, что надо передать вызывающему свой токен, т.е. зарегистрироваться где-то,

Ссылка на комментарий
  • 0
  • Модераторы
10 часов назад, wamaco сказал:

и что вы все про android, даже если сделать через сервис, то ваше решение не покатит на ios и вам придется переписывать приложение!

Тема создана в разделе Android, не вмешивайте сюда iOs.

 

Сервисов в C++ Builder пока что нет...

Ссылка на комментарий
  • 0

Теперь мне понятно, что пуш присылает главный сервер, почитала документацию эмбаркадеро. Однако, как я поняла, это не подходит для компонента TBeacon. Вот приложение не запущено, вот вошёл человек в зону TBeacon, откуда об этом узнает главный сервер, чтобы послать пуш? Следовательно не подходит или не до конца поняла...

Подумав пришла к выводу, что и отдельный фоновый сервис не возможно использовать с TBeacon. С этим компонентом сервис просто не запуститься. Моя программа, когда я её запускаею, напоминает мне включить блютуз если он не включён. Это действие компонента TBeacon. Следовательно фоновый сервис с компонентом TBeacon и не за пуститься если блютуз выключен.

Одно не понятно, почему тут он говорит, что пуш приходит на спящий телефон, следовательно приложение не запущено. Как главный сервер может знать, что человек входит в зону?  Может он приверает в своём видео? :)

 

 

Ссылка на комментарий
  • 0

он сказал "когда телефон в кармане". но перед этим сказал "программа запущена"

т.е. в наличии

1) bluetooth

2) запущенное приложение

при запуске приложение сообщает PUSH-TOKEN телефона на сервер

далее просто мониторит маячки. заметив маяк, отправляет на сервер его ID. Сервер на присланный ID собирает рекламку и отправляет PUSH на PUSH-токен...

Ссылка на комментарий
  • 0
18 минут назад, Kitty сказал:

Теперь мне понятно, что пуш присылает главный сервер, почитала документацию эмбаркадеро. Однако, как я поняла, это не подходит для компонента TBeacon. Вот приложение не запущено, вот вошёл человек в зону TBeacon, откуда об этом узнает главный сервер, чтобы послать пуш? Следовательно не подходит или не до конца поняла...

Подумав пришла к выводу, что и отдельный фоновый сервис не возможно использовать с TBeacon. С этим компонентом сервис просто не запуститься. Моя программа, когда я её запускаею, напоминает мне включить блютуз если он не включён. Это действие компонента TBeacon. Следовательно фоновый сервис с компонентом TBeacon и не за пуститься если блютуз выключен.

Одно не понятно, почему тут он говорит, что пуш приходит на спящий телефон, следовательно приложение не запущено. Как главный сервер может знать, что человек входит в зону?  Может он приверает в своём видео? :)

 

по логике после установки приложения и подтверждения получения уведомлений  при условии что есть поддержка  Bluetooth LE

срабатывает сервис который ищет маячки по общему груповом идентификатору аналог (push) а дальше действует как написал krapotkin

Ссылка на комментарий
  • 0

>2) запущенное приложение

Значит жесткость соблюдается - приложение обязано быть запущено и не в коем случае не свернуто в фон ибо если оно свернуто, андроид прибьет его минут через 30.

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

Теперь вроде полнач ясность... :)

Ссылка на комментарий
  • 0

на моем телефоне сутками висит спокойно

кроме того, надо провентилировать как работает Bt LE

вдруг достаточно зарегистрировать, что мое приложение принимает запросы от него, тогда запустит к-нить системная служба, и чудо состоится

Ссылка на комментарий
  • 0
Цитата

на моем телефоне сутками висит спокойно

И на моем телефоне висит сутками, но маленький нюанс. Реагировать на вход в зону маячка приложение перестает и каждый раз по разному - через 30 минут, через час, через два. Видимо андроид сам решает когда прибить функционал приложения. Приложение продолжает висеть в фоне, но абсолютно бесполезно - оно перестает реагировать на событие входа в зону маячка. Когда приложение снова, спустя время, запускаю пальцем из фона, то вижу, что оно перестартует полностью заново - идет заставка и запуск.

Ссылка на комментарий
  • 0
  • Модераторы
4 часа назад, krapotkin сказал:

на моем телефоне сутками висит спокойно

Как вы этого добились (без использования сервисов)?

Как вы проверяете, висит ли приложение в фоне или нет?

 

2 часа назад, Kitty сказал:

И на моем телефоне висит сутками, но маленький нюанс. Реагировать на вход в зону маячка приложение перестает и каждый раз по разному - через 30 минут, через час, через два. Видимо андроид сам решает когда прибить функционал приложения. Приложение продолжает висеть в фоне, но абсолютно бесполезно - оно перестает реагировать на событие входа в зону маячка. Когда приложение снова, спустя время, запускаю пальцем из фона, то вижу, что оно перестартует полностью заново - идет заставка и запуск.

Как вы проверяете, висит ли приложение в фоне или нет?

Цитата

оно перестартует полностью заново

так и должно быть, ведь вы заново запускаете приложение, происходит событие OnCreate

 

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

Т.е. как только его свернули, происходят события "OnPause -> OnStop", а если посмотреть внимательно на таблицу событий(по приведённой ссылке), конкретно на столбец "Killable?", то станет ясно, что событие "OnStop" позволяет системе убить приложение.

 

p.s. Вообще, это уже другая тема, т.к. текущая тема про нотификейшены. Автор, заведите лучше отдельную тему по жизненному циклу :).

Ссылка на комментарий
  • 0
5 часов назад, Kitty сказал:

>2) запущенное приложение

Значит жесткость соблюдается - приложение обязано быть запущено и не в коем случае не свернуто в фон ибо если оно свернуто, андроид прибьет его минут через 30.

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

Теперь вроде полнач ясность... :)

извините за оффтоп, а заходят в магаз только покупатели с телефонами на Android?

просто, я думаю, что архитектуру решения надо пересмотреть в принципе!

Ссылка на комментарий
  • 0
5 минут назад, krapotkin сказал:

и какие еще варианты архитектуры? ) 

iOs! Опять же можно заподозрить в оффтоп, но почему то в подавляющем большинстве на форуме обсуждается только андроид. Мне как то за это обидно. У меня, вот, например, наоборот, все вокруг с iOs. Андроидом и не пахнет.

 

Ссылка на комментарий
  • 0

дело в том что изначально ibeacon был разработан для ios  android запустил в след свои аналоги https://ru.wikipedia.org/wiki/IBeacon и сделал совместимость с ibeacon может быть от сюда и ноги растут а так да для ведра  как вариант только сервис который будет  в фоне мониторить маячки ито на хабре есть статья  где был мониторинг по месту нахождения устройства и времени события

P.S. к месту магазина  можно  привязать  есть же определения по wifi/сотовой сети gps 

определили место дали уведомление и человек сам запустит приложение как вариант

https://www.ibeaconrussia.ru/blog/ibeacon-na-android/

был не прав  в сервисе приложение не нуждается все должно делать само ведро на уровне операционки

Изменено пользователем master webs
Ссылка на комментарий
  • 0
52 минуты назад, Vitaldj сказал:

iOs!

потому что цикл разработки на Android гораздо проще. Как минимум, не требуется покупать оборудования на $2000. А делфисты по определению Windows-based

Ссылка на комментарий
  • 0
Цитата

Как вы проверяете, висит ли приложение в фоне или нет?

Нажимаю с удержанием кнопку на телефоне и вижу какие приложения у меня в фоне на заднем плане. Например на скриншоте вижу, что запущен хром.

Цитата

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

У меня именно так и происходит на телефоне.

Цитата

событие "OnStop" позволяет системе убить приложение.

Отменить бы это событие и для приложения c компонентом TBeacon все вопросы бы снялись. :)

Цитата

https://www.ibeaconrussia.ru/blog/ibeacon-na-android/

#2. iBeacon позволяет непрерывно отслеживать активность радиомаячков

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

Только не понятно как реализовать такое поведение. :)

 

 

Screenshot_2016-06-23-06-31-10.png

Изменено пользователем Kitty
Ссылка на комментарий
  • 0
20 минут назад, krapotkin сказал:

потому что цикл разработки на Android гораздо проще. Как минимум, не требуется покупать оборудования на $2000. А делфисты по определению Windows-based

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

да и по оборудованию  не так дорого выходит я когда начинал сидел на хакинтоше с виндой на виртуалке и с iphone 4s

и могу навести простой пример делал приложения для 4х московских интернет магазинов  по их статистике с яндекс метрики заходы на сайты были 60 % ios, 30% браузер  и только 10% android все 4 сайта  сидят в топ 10 яндекса и гугла

Изменено пользователем master webs
Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...