iOS-уведомления спорадические (FMX) - PullRequest
0 голосов
/ 27 февраля 2019

По документам Embarcadero по этой ссылке Я тестирую уведомления на iOS (в приложении FMX, созданном на C ++).Я сделал следующее:

  • Добавлен #include <System.Notification.hpp> в заголовочный файл
  • Установите FMLocalNotificationPermission в true
  • Удален TNotificationCenter компонент включенформа

Затем я нажимаю на кнопку следующий код:

void __fastcall TForm1::ScheduleNotificationClick(TObject *Sender)
{
    if (NotificationCenter1->Supported()) {
            TNotification *myNotification = NotificationCenter1->CreateNotification();
            __try {
                    myNotification->Name = "MyNotification";
                    myNotification->AlertBody = "C++ for your mobile device is here!";
                    // Fire in 10 seconds
                    myNotification->FireDate = Now() + EncodeTime(0, 0, 10, 0);
                    // Send notification to the notification center
                    NotificationCenter1->ScheduleNotification(myNotification);
            }
            __finally {
                    myNotification->DisposeOf();
            }
    }
}

Время от времени это работает ... но редко и никогда больше, чем один раз.В большинстве случаев это не так (повторное удаление и переустановка приложения).

Затем я попробовал код «Немедленно представить сообщение уведомления», который они предоставляют:

void __fastcall TForm1::PresentNotificationClick(TObject *Sender)
{
if (NotificationCenter1->Supported()) {
       TNotification *myNotification = NotificationCenter1->CreateNotification();
       __try { 
               myNotification->Name = "MyNotification";
               myNotification->AlertBody = "C++ for your mobile device is here!";
               // Set Icon Badge Number (for iOS) or message number (for Android) as well
               myNotification->Number = 18;
               myNotification->EnableSound = False;
               // Send notification to the notification center
               NotificationCenter1->PresentNotification(myNotification);
      }
      __finally {  
               myNotification->DisposeOf();
      }
 }
}

С этим кодом ничего не происходит.Я пробовал это с нуля несколько раз, и я настолько уверен, насколько я могу, что я кодирую это в соответствии с их примерами.Я использую 10.3 (Embarcadero C ++ Builder 10.3 Версия 26.0.32429.4364).Я думаю, что у моего кода есть проблема, за исключением того, что однажды в Blue Moon он работает.

Моя цель - iPhone под управлением 12.1.4, и я пробовал строить с SDK11.4 и SDK12.0, без разницы.Когда я впервые запускаю приложение, я получаю всплывающее окно «разрешить или не разрешать», и мое приложение впоследствии появляется в настройках уведомлений - просто не работает.

russ

ОБНОВЛЕНИЕ 3-25-2019 : Если я запускаю этот верхний блок кода (при нажатии кнопки на iPhone), он теперь будет запускаться каждый раз, но ТОЛЬКО ЕСЛИ я сразу же убиваю приложение после нажатия.10 секунд спустя он запускает уведомление.Почему не появится уведомление, если я оставлю приложение запущенным?

1 Ответ

0 голосов
/ 05 марта 2019

Вы уверены, что вызываете «PresentNotificationClick» из TButton при нажатии на него?

...