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

TNotificationCenter


Kitty

Вопрос

Не могу понять как работают уведомления в iOS. Код из документации:

void __fastcall TForm1::Button3Click(TObject *Sender)
{
	if (NotificationCenter1->Supported())
	{
	TNotification *myNotification = NotificationCenter1->CreateNotification();
 	__try {
			myNotification->Number = 18;
			myNotification->AlertBody = L"C++ for your mobile device is here! Привет.";
			NotificationCenter1->PresentNotification(myNotification);
            ShowMessage(L"Проверка");//<--- вижу сообщение
		  }
	   __finally
		   {
			myNotification->DisposeOf();
		   }
	}
}

А в шторке пусто... :(

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

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

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

Не могу понять как работают уведомления в iOS. Код из документации:


void __fastcall TForm1::Button3Click(TObject *Sender)
{
	if (NotificationCenter1->Supported())
	{
	TNotification *myNotification = NotificationCenter1->CreateNotification();
 	__try {
			myNotification->Number = 18;
			myNotification->AlertBody = L"C++ for your mobile device is here! Привет.";
			NotificationCenter1->PresentNotification(myNotification);
            ShowMessage(L"Проверка");//<--- вижу сообщение
		  }
	   __finally
		   {
			myNotification->DisposeOf();
		   }
	}
}

А в шторке пусто... :(

попробуй убрать Supported

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

Я вижу ShowMessage(L"Проверка"); значит все ОК.

Каким-то странным образом один раз был нотификейшен. Добиться увидеть повторно не удается. Может что-то на устройстве iOS надо настроить?

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

Я вижу ShowMessage(L"Проверка"); значит все ОК.

Каким-то странным образом один раз был нотификейшен. Добиться увидеть повторно не удается. Может что-то на устройстве iOS надо настроить?

ios не отображает уведомление если приложение запущено 

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

Тогда подскажите, как лучше сделать?

Для андроида в проекте так: приложение запущено, пользователь входит в зону действия компонента TBeacon и получает в шторку звуковое стандартное уведомление. Пользователь может нажать на уведомление и перейти по ссылке или просто закрыть уведомление. Просто и удобно.

Если iOS не поддерживает такой стиль взаимодействия с пользователем, то с  точки зрения правильного интерфейса для iOS, подскажите, пожалуйста, как лучше сделать взаимодействие с пользователем по аналогии с проектом андроида?

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

Тогда подскажите, как лучше сделать?

Для андроида в проекте так: приложение запущено, пользователь входит в зону действия компонента TBeacon и получает в шторку звуковое стандартное уведомление. Пользователь может нажать на уведомление и перейти по ссылке или просто закрыть уведомление. Просто и удобно.

Если iOS не поддерживает такой стиль взаимодействия с пользователем, то с  точки зрения правильного интерфейса для iOS, подскажите, пожалуйста, как лучше сделать взаимодействие с пользователем по аналогии с проектом андроида?

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

Просто, зачем шторка, когда приложение активно? Оно ведь и само, при получении уведомление может показать нужный диалог или открыть форму.

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

У меня одно уведомление отображается при старте программы, остальные уведомления появляются в зависимости входит пользователь в зону TBeacon или выходит. Уведомления в шторке андроида очень удобны. Приложение общается с пользователем уведомлениями. Пользователь может отклонить уведомление, может нажать на него и получить нужную логику.

Когда приложение активно в iOS ничего не показывается. Один раз при старте программы в iOS показалось и теперь уже никак. Получается для iOS надо создавать отдельную форму с диалогом и звуковым сопровождением...

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

И все таки не до конца понятно как переделать интерфейс.

Для андроида где все просто и понятно так:

Пользователь запустил приложение и получил уведомление с акцией. Пользователь может перейти по акции, закрыть уведомление, проигнорировать его. При входе в зону TBeacon пользователь получает дополнительное уведомление с дополнительной акцией. Если пользователь проигнорировал оба уведомления они висят в шторке и он в любой момент может к ним вернуться (удалить, перейти, продолжать игнорировать).

Для iOS, поскольку оно не способно показывать уведомления при запущенном приложении:

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

Как правильно организовать вывод этой информации в интерфейсе IOS? Два диалоговых окна это же уродливо... Подскажите, как правильно?

Спасибо.

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

И все таки не до конца понятно как переделать интерфейс.

Для андроида где все просто и понятно так:

Пользователь запустил приложение и получил уведомление с акцией. Пользователь может перейти по акции, закрыть уведомление, проигнорировать его. При входе в зону TBeacon пользователь получает дополнительное уведомление с дополнительной акцией. Если пользователь проигнорировал оба уведомления они висят в шторке и он в любой момент может к ним вернуться (удалить, перейти, продолжать игнорировать).

Для iOS, поскольку оно не способно показывать уведомления при запущенном приложении:

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

Как правильно организовать вывод этой информации в интерфейсе IOS? Два диалоговых окна это же уродливо... Подскажите, как правильно?

Спасибо.

вариант №1 организовать свою шторку в открытом приложении по типу listview и там хранить уведомления

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

3 хранить в json и создать отдельную вкладку для отображения списка всех уведомлений 

вариантов очень много

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

И все-таки мне никак не удается получить на iOS 10 уведомление, ни когда приложение свернуто, ни когда развернуто - ни при каких обстоятельствах. FMLocalNotificationPermission установлено true (Project -> Options -> Version Info).

Код

if (NotificationCenter1->Supported())
		  {
		   TNotification * myNotification = NotificationCenter1->CreateNotification();

		  __try
			{
			 String MES = L"FireMonkey run!";
			 myNotification->AlertBody = MES;
             myNotification->FireDate = Now();
			 NotificationCenter1->PresentNotification(myNotification);
			}
			__finally
					{
					 myNotification->DisposeOf();
					}
		  }

Что еще надо сделать, чтобы увидеть Notification в iOS 10?

Спасибо.

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

Подскажите, пожалуйста, ответ на такой вопрос.

Добавлен код:

myNotification->Number = 1;

При уведомлении на иконке приложения появился красный кружок с цифрой 1. А теперь пользователь взял потянул шторку вниз и удалил уведомление, а на ярлыке программы красный кружок с цифрой остался.

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

NotificationCenter1->ApplicationIconBadgeNumber = 0;

?

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

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

нет. iOS не предоставляет такой функциональности. Более того, приложение может быть и не запущено в принципе. И в этом случае некому об этом сообщать.

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

Подскажите, пожалуйста, как из приложения fmx ios проиграть звук стандарного уведомления зарегистрированного на телефоне?

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

Подскажите, пожалуйста, как из приложения fmx ios проиграть звук стандарного уведомления зарегистрированного на телефоне?

 

https://developer.apple.com/reference/audiotoolbox/1405202-audioservicesplayalertsound

Цитата

 

Note

System-supplied alert sounds and system-supplied user-interface sound effects are not available to your iOS application. For example, using the kSystemSoundID_UserPreferredAlert constant as a parameter to the AudioServicesPlayAlertSound function will not play anything.

 

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

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

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

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

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

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

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

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

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

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

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