Я работаю с компонентом 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. Написать такую службу на паскале с нуля я не могу.
Спасибо.
Вопрос
Kitty
Я работаю с компонентом 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. Написать такую службу на паскале с нуля я не могу.
Спасибо.
Ссылка на комментарий
2 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.