Kitty
Пользователи-
Постов
792 -
Зарегистрирован
-
Посещение
-
Победитель дней
16
Весь контент Kitty
-
Если push это совсем другое чем нотификейшен и для посылки push нужен отдельный сервер, то расскажите по подробнее про два момента: - каким образом главный сервер понимает, что телефон вошёл в зону действия маячка, если само приложение на телефоне не было запущено? - где посмотреть пример посылки push на телефон с сервера?
-
У Осипова странное описание этого компонента - Если ячейка TGrid скрывается с экрана при скроллинге то из нее пропадают все данные, при возвращении скроллинга данные воссоздаются по новой. Может это будет влиять на производительность?
-
Мне надо вывести данные из базы данных в табличном виде в два столбца. Какой компонент рекомендован для такой задачи ListBox или ListView? Наверное, ListBox, там есть свойство колонок… Какой будет удобнее? Спасибо.
-
Последние версии Bluetooth LE не сажают сильно телефон. Google и Apple рассматривают варианты сделать Bluetooth в новых версиях устройств не отключаемым, чтобы отказаться от разъема наушников. push и Notification это разные вещи? Как послать тогда такой push если приложение ни разу не было еще запущено? Какая окончательная рекомендация для задачи описанной выше?
-
Приложение, прекрасно стартует если даже свернуто и нажимаем пальцем на полученный push приложение открывается. Запускаем приложение, сворачиваем например его в фон, заходим в зону действия маячка. В обработчике входа в зону я посылаю push на экран, при на нажатии на который все работает как надо. Однако, если пользователь конкретно выгрузил приложение из памяти или просто перегрузил телефон, то естественно ничего и не произойдет при входе в зону действия маячка. Я в приложении обрабатываю событие входа в зону, но приложение должно быть запущено (или свернуто). TNotificationCenter может работать только если программа запущенна. Единственный выход писать перед входом в торговый цент - "Не забудьте перед входом запустить у себя на телефоне наше фирменное приложение торгового центра!" Следовательно нужна служба, которая обрабатывала бы событие входа в зону TBecon посылала push и при нажатии на push запускалось основное приложение. Все правильно, другого решения нет и без такой службы не обойтись?
-
Спасибо, работает. void __fastcall TForm1::ListView1ButtonClick(TObject * const Sender, TListItem * const AItem, TListItemSimpleControl * const AObject) { ShowMessage(static_cast< TListViewItem * >(AItem)->Text + " " + static_cast< TListViewItem * >(AItem)->ButtonText + " is clicked."); }
-
Читаю официальный PDF Mobile Tutorials от Embarcadero. Примеры из него не работают в Берлине. Как правильно? void __fastcall TForm1::ListView1ButtonClick(TObject * const Sender, TListItem * const AItem, TListItemSimpleControl * const AObject) { ShowMessage(AItem->Text + " " + AItem->ButtonText + " is clicked."); } [bcc32 Error] Unit1.cpp(20): E2316 'Text' is not a member of 'TListItem' [bcc32 Error] Unit1.cpp(20): E2316 'ButtonText' is not a member of 'TListItem' Спасибо.
-
Это приложение LocalGeo из маркета: https://play.google.com/store/apps/details?id=ru.localgeo
-
Как сильно надо напрячься, чтобы реализовать интерфейс на картинке? На сколько удобна FM для этого? Меня не интересует реализация сейчас, меня интересует сколько телодвижений надо совершить, чтобы добиться нужного эффекта. Спасибо.
-
Есть ли еще какие то полезные рекомендации?
-
Речь идет о лояльных пользователях торгового центра. Им предлагается бесплатно пользоваться мобильным приложением этого торгового центра (получать акции, купоны...), поэтому программу никто удалять с телефона не будет. Ну а однократный push это высокий уровень этого приложения для торгового центра как хороший тон.
-
Вот и склоняюсь к SQLite. Спасибо. Просто думала, что все уже давно наработано для однократных уведомлений - есть рекомендации и решения, и не надо ничего додумывать, оказываеться нет.
-
А где все это хозяйство грамотнее хранить?
-
Приложение реагирует на маячки iBecon. Пользователь включает приложение на мобильном телефоне. Входит в торговый цент на первый этаж и получает на телефон push уведомление об акции, затем идет на второй этаж и получает там уведомление от другого маячка. Когда пользователь возвращается на первый этаж, то надо чтобы он больше не получал уведомления от маяка на первом этаже. Какая логика реализации будет правильной, зная ID маячка? Какой период времени вы рекомендуете отслеживать, чтобы отсечь повторный push? Может как-то так: пока пользователь гуляет по торговому центру, и получил уведомление, то следующее уведомление от этого же маячка пользователь сможет получить только, например, через два часа… Где хранить лучше информацию – в базе, в ini или локальном двухмерном массиве (ID-время), пока приложение запущено? Какой период времени вы бы выбрали? Итого: как правильно и грамотно реализовать подход однократного push уведомления? Спасибо.
-
Судя по всему на C++ Builder решения нет. Расскажите как это решить на Дельфи? Берем компонет TBecon в его событии входа в зону вызываем push нотификаешен. Как это организовать как фоновую службу? Пользователь идет мимо магазина и получает push на спящий телефон... Жмет на push и запускает наше приложение... Главное это push из фона...
-
Каким образом пересмотреть архитектуру с учетом C++ Builder? Просматривая видео я вижу, что основная реализация таких приложений это посылка push уведомления на спящий телефон. Пользователь нажимает на этот push и запускается окно программы. Разве без Дельфи такое можно организовать в С++ Builder 10.1? Пример такого видео:
-
Я работаю с компонентом TBeacon. Когда пользователь входит в зону действия маячка iBecon он получает push уведомление, при нажатии на которое он переходит на сайт с акцией. Скелет кода такой: //TBecon на форме //Beacon1->Enabled=true в инспекторе объектов //вход в зону действия маячка: void __fastcall TForm1::Beacon1BeaconEnter(TObject * const Sender, IBeacon * const ABeacon, const TBeaconList CurrentBeaconList) { Memo1->Lines->Add(L"Здравсвуйте!"); //тест проверка if (NotificationCenter1->Supported()) { TNotification *myNotification = NotificationCenter1->CreateNotification(); __try { myNotification->Number = 1; myNotification->AlertBody = L"Нажмите, чтобы посмотреть акцию!"; NotificationCenter1->PresentNotification(myNotification); } __finally { myNotification->DisposeOf(); } } } //клик на полученное push сообщение void __fastcall TForm1::NotificationCenter1ReceiveLocalNotification(TObject *Sender, TNotification *ANotification) { if(ANotification->Number == 1) { _di_JIntent Intent; Intent = TJIntent::JavaClass->init(TJIntent::JavaClass->ACTION_VIEW); Intent->setDataAndType(StrToJURI(L"http://fire-monkey.ru"), StringToJString(L"text/html")); SharedActivity()->startActivity(Intent); } if(ANotification->Number == 2) { //резерв на выход из зоны } } Если приложение запущено или было скрыто с экрана, то все работает как надо. Если же приложение не было запущено ни разу, то естественно ничего и не работает. Как я понимаю надо написать дополнительно фоновую службу которая бы умела: 1. В событии входа в зону маячка проверить или запущено мое приложение. 2. Если приложение не запущено запустить его. Если приложение запущено то ничего не делать. Насколько я понимаю, без такой службы не обойтись? Или логика нужна другая? Проблема состоит в том, что в Берлине нельзя написать службу в С++ Builder для андроида. Есть ли готовые исходники на Дельфи, чтобы можно было просто в коде поменять имя запускаемого приложения и откомпилировать больше ничего кардинально не меняя? Наверняка такое уже реализовано на паскале... Открою проект в Дельфи: я просто добавлю в этот код события входа в зону и в это событие перенесу запуск приложения если оно не запущено и поменяю имя приложения. Потом получу паскалевский apk. Написать такую службу на паскале с нуля я не могу. Спасибо.
-
Спасибо. Было бы конечно круто разобраться как работать с биконом и эмулятором вместе, без реального устройства, судя по всему это не возможно... Оргромное спасибо за разяснения! P.S. С точки зрения женской логики, хотелось бы получить нормальное сообщение об ошибке с эмулятором, а не серию не понятных сообщений (11...)... И вопрос бы на форуме отпал...
-
В Берлине есть возможность работать с областями с помощью TBecon. Помимо этого есть технология Geofencing - работа с большими областями и без включенного блютус. До меня не доходит, а как это можно реализовать Geofencing в Берлине, с помощью чего? О Geofencing посмотрела тут: Спасибо.
-
Код выше оказался полностью рабочим в Берлине. Получаю в Memo информацию при перемещении бикона по квартире. Два момента: - надо добавить разрешения в приложение на блютус и блютус админ. - добавить код т.к. не сразу заметила, что по умолчанию в инспекторе объектов false: void __fastcall TForm1::Button1Click(TObject *Sender) { Beacon1->Enabled = true; } Телефон GSmart Akta A4.
-
Удалось сменить uuid с помощью RealKit apk с этого сайта: http://www.bytereal.com
-
Отключила пока два бикона. Оставила включенным один. Буду пока с ним экспериментировать.
-
C++ Builder 10.1 Berlin 1. Создаем эмулятор и запускам его. 2. Запускаем студию и создаем новый проект. В Target указываем созданный эмулятор. 3. Переносим на форму компонент TBecon. Никакого кода. 4. Запускаем компиляцию в режиме дебаг. Видим, что приложение начинает запускаться на эмуляторе однако получаем серию ошибок. Вопрос: можно ли запускать на эмуляторе проект, в котором используется TBecon? Если да, то как избежать этих ошибок? Спасибо.
-
Спасибо. Не удалось мне с помощью nRF Master Control понять как изменить uuid. Программа видит бикон, а как сменить uuid в её интерфейсе не понятно.
-
Спасибо за подсказку как сканировать. Скачала с андроид маркета приложение. Оно сканирует и присылает uuid, id, major, minor. Выяснилось, что по умолчанию все параметры и этих биконов одинаковые ( у меня 3 штуки), только id разные. Как поменять uuid для RAD, чтобы были уникальные данные в инспекторе обектов? Не нашла такого работающего андроид приложения. P.S. Интересно, что эти биконы присылают id, а согласно документации про эту технологию не должны бы...