Kitty Опубликовано 11 апреля, 2017 Поделиться Опубликовано 11 апреля, 2017 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 Цитата Ссылка на комментарий
0 Kitty Опубликовано 11 апреля, 2017 Автор Поделиться Опубликовано 11 апреля, 2017 Просто подскажите как вы на паскале обработали бы это исключение? Цитата Ссылка на комментарий
0 Kitty Опубликовано 12 апреля, 2017 Автор Поделиться Опубликовано 12 апреля, 2017 (изменено) Ошибку можно поймать если из консоли послать пуш с не заполненными messsge title, а когда пуш прийдет тапнуть по нему. Эти действия не правильные, поля надо заполнять, просто доп. проверка в коде могла бы наверное пригодиться... Изменено 12 апреля, 2017 пользователем Kitty Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 12 апреля, 2017 Модераторы Поделиться Опубликовано 12 апреля, 2017 проверил отправку через консоль, чтобы ошибки не было делается вот так const FCMSignature = 'gcm.notification.body'; GCMSignature = 'message'; APNsSignature = 'alert'; var aText: string; aObj: TJSONValue; begin // это событие срабатывает при открытом приложении {$IFDEF ANDROID} aObj := ANotification.DataObject.GetValue(GCMSignature); if aObj <> nil then aText := aObj.Value else aText := ANotification.DataObject.GetValue(FCMSignature).Value; {$ELSE} aObj := ANotification.DataObject.GetValue(APNsSignature); if aObj <> nil then aText := aObj.Value; {$ENDIF} ShowMessage(aText); AngryOwl и Kitty 2 Цитата Ссылка на комментарий
0 Kitty Опубликовано 12 апреля, 2017 Автор Поделиться Опубликовано 12 апреля, 2017 Большое спасибо!!! Теперь код крепче. Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 12 апреля, 2017 Модераторы Поделиться Опубликовано 12 апреля, 2017 3 минуты назад, Kitty сказал: Большое спасибо!!! Теперь код крепче. жду код на плюсах, добавлю в статью) Цитата Ссылка на комментарий
Вопрос
Kitty
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
Ссылка на комментарий
5 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.