Kitty

Пользователи
  • Публикации

    765
  • Зарегистрирован

  • Посещение

  • Days Won

    15

Все публикации пользователя Kitty

  1. В iOS проекте Project > Options > Entitlement List нет Receive Push Notification. Может нужен какой-то доп. ключ добавить в Version info проекта? Спасибо.
  2. Вроде все верно. Наверное что-то еще упустила...
  3. Вроде все сделал как надо. Тестирую на стенде где было собрано давно нормальное приложение. Теперь добавляю приложение с пушами... и не работает... Теперь или баг С++ Builder или моя тупость при работе с ios...
  4. А зачем? Все работает и на С++. Был баг. Его решили. Равиль помог определить и суппорт быстро решил. А что в делфи багов нет? Из-за бага менять язык? Нет.
  5. И снова наш любимый ios для домохозяек...:) Нормально запустить дебаг не получается так как все время: Session ended Однако с помощью лейбл имеем такое: FDeviceToken = FPushService->DeviceTokenValue[TPushService_TDeviceTokenNames_DeviceToken]; //добавлено для теста Label1->Text = L"Что тут? " + FDeviceToken; и видим что FDeviceToken пустой. Куда копать? Спасибо.
  6. В общем все нормально и заголовок и перенос текста работает. Видимо один раз был сбой, но это совсем не проблема. Спасибо за статью! Все работает и пуши живут теперь и в билдере. P.S. На будущее по возможности напишите понятную статью, а как обойти ограничение на 1000 пользователей. А так все работает. Только отменила ShowMessage(aText) на посылку Notification, а то два подряд ShowMessage не очень.
  7. А сейчас заголовок нормально пришел...
  8. Удалось разбить перенос строк в уведомлении. Однако теперь заголовок игнорируется и выводиться всегда название приложения. Так и должно быть? Спасибо.
  9. А как правильно сформировать ссылку? {"status":"ERROR","text":"Параметр `title` не передан"}
  10. Что-то не получается перенос строк в пуш уведомлении. Сделала как в последнем посте темы: перенос строк А строки в этом проекте не переносятся. А еще вопрос, можно послать пуш без заголовка? Спасибо.
  11. Если при открытом приложение срабатывает два раза OnReceiveNotificationEvent, может заменить ShowMessage тоже на сообщение в шторку? Вторая сработка чистит первую и со стороны вроде работает для пользователя: void __fastcall TForm1::OnReceiveNotificationEvent(TObject *Sender, TPushServiceNotification* const ANotification) { ClearAllNotification(); const String FCMSignature = L"gcm.notification.body"; const String GCMSignature = L"message"; const String APNsSignature = L"alert"; String aText = ""; TJSONValue * aObj; #if defined(__ANDROID__) aObj = ANotification->DataObject->GetValue(GCMSignature); if(aObj != NULL) { aText = aObj->Value(); } else { aText = ANotification->DataObject->GetValue(FCMSignature)->Value(); } #endif #if defined(__APPLE__) && (defined(__arm__) || defined(__arm64__)) aObj = ANotification->DataObject->GetValue(APNsSignature); if (aObj != NULL) { aText = aObj->Value(); } #endif //ShowMessage(aText); //шлем Notification if (NotificationCenter1->Supported() && aText != "") { TNotification * myNotification = NotificationCenter1->CreateNotification(); __try { NotificationCenter1->CancelAll(); myNotification->AlertBody = aText; NotificationCenter1->PresentNotification(myNotification); } __finally { myNotification->DisposeOf(); } } }
  12. Проект нормально компилировался в режиме дебаг. При переходе в режим релиз возникла ошибка на картинке. Затем сдела Build All и снова попробовала запустить - ошибка пропала. С чем это может быть связано, на что обратить внимание?
  13. Подскажите, пожалуйста, в чем может быть дело? В базе вижу одну запись. Отправила пуш в строке браузера ({"status":"OK"}) и код ниже почему-то отработал два раза и я получила два одинаковых друг за другом ShowMessage? void __fastcall TForm1::OnReceiveNotificationEvent(TObject *Sender, TPushServiceNotification* const ANotification) { const String FCMSignature = L"gcm.notification.body"; const String GCMSignature = L"message"; const String APNsSignature = L"alert"; String aText = ""; TJSONValue * aObj; #if defined(__ANDROID__) aObj = ANotification->DataObject->GetValue(GCMSignature); if(aObj != NULL) { aText = aObj->Value(); } else { aText = ANotification->DataObject->GetValue(FCMSignature)->Value(); } #endif #if defined(__APPLE__) && (defined(__arm__) || defined(__arm64__)) aObj = ANotification->DataObject->GetValue(APNsSignature); if (aObj != NULL) { aText = aObj->Value(); } #endif ShowMessage(aText); } А если приложение выгрузить и послать пуш, то в шторке одно уведомление как и положено...
  14. Нормально ведет. Начиная с 8:17 до 12:00 минуты видео: *На слайде сказано: используйте unigue_ptr везде где возможно - Use unigue_ptr where possible. *Не используйте new/delete https://youtu.be/14w26ACHrII
  15. void __fastcall TForm1::OnReceiveNotificationEvent(TObject *Sender, TPushServiceNotification* const ANotification) { String MessageText = ""; // Получаем текст сообщения в зависимости от платформы #if defined(__ANDROID__) MessageText = ANotification->DataObject->GetValue("message")->Value(); #endif #if defined(__APPLE__) && (defined(__arm__) || defined(__arm64__)) MessageText = ANotification->DataObject->GetValue("alert")->Value(); #endif if (MessageText != "") ShowNotification(MessageText, 0); } Все чтобы я не делала на срроке MessageText = ANotification->DataObject->GetValue("message")->Value(); получаю Error: segmentation fault 11
  16. Прежде чем создавать свой PHP сервер, хочу протестировать свое приложение отправкой пуша из консоли firebase. Иду по этой статье: Firebase Cloud Messaging with Delphi 10.1 Berlin update 2 У автора в статье все нормально, а у меня нет... Весь код: //H #include <System.PushNotification.hpp> private: // User declarations TPushService * APushService; TPushServiceConnection * AServiceConnection; //*********************************************** //CPP #if defined(__ANDROID__) #include <FMX.PushNotification.Android.hpp> namespace Fmx { namespace Pushnotification { namespace Android { _INIT_UNIT(Fmx_Pushnotification_Android); } } } #endif #if defined(__APPLE__) && (defined(__arm__) || defined(__arm64__)) #include <FMX.PushNotification.IOS.hpp> namespace Fmx { namespace Pushnotification { namespace Ios { _INIT_UNIT(Fmx_Pushnotification_Ios); } } } #endif void __fastcall TForm1::FormShow(TObject *Sender) { APushService = nullptr; AServiceConnection = nullptr; String ADeviceID = ""; String ADeviceToken = ""; #if defined(__ANDROID__) APushService = TPushServiceManager::Instance->GetServiceByName(TPushService_TServiceNames_GCM); if (APushService) APushService->AppProps[TPushService_TAppPropNames_GCMAppID] = FAndroidServerKey; #endif #if defined(__APPLE__) && (defined(__arm__) || defined(__arm64__)) APushService = TPushServiceManager::Instance->GetServiceByName(TPushService_TServiceNames_APS); #endif if (APushService) { AServiceConnection = new TPushServiceConnection(APushService); AServiceConnection->OnChange = &OnServiceConnectionChange; AServiceConnection->OnReceiveNotification = &OnReceiveNotificationEvent; AServiceConnection->Active = true; } } void __fastcall TForm1::OnReceiveNotificationEvent(TObject *Sender, TPushServiceNotification* const ANotification) { // ShowMessage(ANotification->Json->ToString()); String MessageText = ""; // Получаем текст сообщения в зависимости от платформы #if defined(__ANDROID__) MessageText = ANotification->DataObject->GetValue("message")->Value(); #endif #if defined(__APPLE__) && (defined(__arm__) || defined(__arm64__)) MessageText = ANotification->DataObject->GetValue("alert")->Value(); #endif if (MessageText != "") ShowNotification(MessageText, 0); //объявлен в файле pas } Отправляю пуш из консоли firebase. Спустя несколько минут пуш приходит на телефон. Видно название приложения, а сам текст пуша пустой. При нажатии на пуш в шторке получаем: segmentation fault 11 на строке: MessageText = ANotification->DataObject->GetValue("message")->Value(); Где может быть ошибка получения пуша из консоли firebase? У автора на картинках все гуд...
  17. Большое спасибо!!! Теперь код крепче.
  18. Ошибку можно поймать если из консоли послать пуш с не заполненными messsge title, а когда пуш прийдет тапнуть по нему. Эти действия не правильные, поля надо заполнять, просто доп. проверка в коде могла бы наверное пригодиться...
  19. Просто подскажите как вы на паскале обработали бы это исключение?
  20. Спасибо получилось. Для таких не умных как я, которые не понимают, что в консоли FCM надо писать самой: 1. Откройте дополнительные параметры в консоли FCM . 2. В первом поле КЛЮЧ принудительно самостоятельно напечатайте "mеssage" без ошибок в первом поле. В поле напротив напишите текст сообщения. 3. При этом появиться дополнительные поля ввода ниже. 4. В первом новом поле ниже напишите принудительно title без ошибок и напротив в значении ваш текст...
  21. Я могу предоставить вам доступ по TeamViewer. Нет у меня в консоли message и title, что и показано в картинке выше.
  22. Проголосовала.