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

[Андроид]Запуск приложения из службы [поиск готового решения]


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. Написать такую службу на паскале с нуля я не могу. :(
Спасибо.

 

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

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

  • 0

я бы пересмотрел архитектуру и каким либо образом (намекнул, убедительно попросил) все же запустить приложение самим пользователем!

а так, если клиент с ios зайдет, все плакала ваша схема!

или Вы будете говорить с iphone-ми не входить! ;)

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

Каким образом пересмотреть архитектуру с учетом C++ Builder? Просматривая видео я вижу, что основная реализация таких приложений это посылка push уведомления на спящий телефон. Пользователь нажимает на этот push и запускается окно программы. Разве без Дельфи такое можно организовать в С++ Builder 10.1? Пример такого видео: 

 

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

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

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

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

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

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

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

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

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

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

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