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

[Статья] Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS [Часть 2]


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

  • Ответов 64
  • Создана
  • Последний ответ

Топ авторов темы

Подскажите, пожалуйста на тарифе free kinvey я могу использовать если не больше 1000 пушей в месяц на один проект?

Это тут написано, но не до конца понятно, какие еще ограничения free kinvey .

https://www.kinvey.com/wp-content/uploads/2016/11/Kinvey-Pricing-112016-2.pdf

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

Active users of the app. Note a user is active for the month if the app made at least one request for the user during that month.

Это количество запросов к сервису.если 200 пользователей сделают по 5 запросов,все,лимит исчерпан.Например запрос авторизации.

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

Я планирую раз в неделю посылать пуш из панели kinvey и все, больше ничего от kinvey мне не надо. Значит в месяц я шлю 4 пуша. Значит в моем распоряжении 250 пользователей? 4*250=1000. Правильно?

 

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

При отправке пуша из консоли kinvey,API Calls (обращение к API сервиса) не защитывается,что правильно,ведь запроса от пользователя мы не получаем.То есть,теоретически,вы имеете "безлимитку" на пуши. Все таки Kinvey это не совсем "про пуши",сервис имеет гораздо больше функций и применений,а пуши это можно сказать бонус.Если пользоваться чисто пушами,то единственный запрос от пользователя будет приходить при первом запуске приложения,для получения пары ID/токен.Так что вариант с Kinvey,особенно при небольшом количестве пользователей,имеет право на существование).Но и тут не все так гладко.Kitty в соседней теме описала про дублирование уведомлений.

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

Большое спасибо!

Теперь понятно, что если победить дубляж уведомлений, то для бизнеса с 1000 пушей в месяц, kinvey отличный выбор. Не даром ембаркадеро сделало для этого сервиса отдельный компонент...

Ссылка на комментарий
  • 2 недели спустя...

Со статьей не удалось разобраться - не хватает знаний... :(

У kinvey проблема с дубляжами. 

Вот тут написано, что студия поддерживает сервис App42: 

App42 ссылка

Однако в Берлине нет компонентов для App42. Значит уже не поддерживаеться App42?

Просто в  App42 аж миллион пушей в месяц: Тарифы ссылка

 

Ссылка на комментарий
  • 3 недели спустя...
  • Модераторы

Добавил тестовый проект и серверную часть, статью по ссылке обновил

https://github.com/rzaripov1990/PUSHTestFCM

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

Бинго!

Похоже счастье наступило! И вопрос с Вашего позволения...

Нужно ли делать проверку на наличие интернета и если да то куда лучше вставить код проверки? В PushServiceRegister???

Ссылка на комментарий
  • Модераторы
6 минут назад, Ingalime сказал:

Бинго!

Похоже счастье наступило! И вопрос с Вашего позволения...

Нужно ли делать проверку на наличие интернета и если да то куда лучше вставить код проверки? В PushServiceRegister???

да в PushServiceRegister, т.к. без интернета у вас не будет токена

Ссылка на комментарий
  • Модераторы
46 минут назад, erden1 сказал:

Здравствуйте! Не могу понять, откуда нужно взять значение свойства AndroidPush.GCMAppID компонента KinveyProvider ?

читаем внимательно, kinvey тут не используется

http://blog.rzaripov.kz/2017/02/firebase-android-ios.html

http://blog.rzaripov.kz/2017/02/firebase-android-ios-2.html

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

Подскажите, пожалуйста, в чем может быть дело? В базе вижу одну запись.

Отправила пуш в строке браузера ({"status":"OK"}) и код ниже почему-то отработал два раза и я получила два одинаковых друг за другом ShowMessage? :o

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);

}

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

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

Если при открытом приложение срабатывает два раза 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();
			}
  }

}

 

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

Что-то не получается перенос строк в пуш уведомлении. Сделала как в последнем посте темы:

перенос строк

А строки в этом проекте не переносятся.

А еще вопрос, можно послать пуш без заголовка?

Спасибо.

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

Что-то не получается перенос строк в пуш уведомлении. Сделала как в последнем посте темы:

перенос строк

А строки в этом проекте не переносятся.

а что конкретно сделала? подключила fmx.jar?

 

2 минуты назад, Kitty сказал:

А еще вопрос, можно послать пуш без заголовка?

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

Ссылка на комментарий
2 минуты назад, Равиль Зарипов (ZuBy) сказал:

а что конкретно сделала? подключила fmx.jar?

 

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

А как правильно сформировать ссылку?

{"status":"ERROR","text":"Параметр `title` не передан"}

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

файл api.php

} elseif ($method == "sendPush") {
	# если параметры не переданы, то отдаем ошибку
	# if (empty($title)) msgErr("Параметр `title` не передан"); // убрать
	if (!isset($title)) $title = ''; // вставить
	...

 

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

В общем все нормально и заголовок и перенос текста работает. Видимо один раз был сбой, но это совсем не проблема.

Спасибо за статью! Все работает и пуши живут теперь и в билдере. :D

P.S.

На будущее по возможности напишите понятную статью, а как обойти ограничение на 1000 пользователей. :)

А так все работает. Только отменила ShowMessage(aText) на посылку Notification, а то два подряд ShowMessage не очень. :)

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

И снова наш любимый ios для домохозяек...:)
Нормально запустить дебаг не получается так как все время: Session ended
Однако с помощью лейбл имеем такое:

FDeviceToken = FPushService->DeviceTokenValue[TPushService_TDeviceTokenNames_DeviceToken];
//добавлено для теста
Label1->Text = L"Что тут? " + FDeviceToken;
и видим что FDeviceToken пустой.

Куда копать? Спасибо.

 

 

 

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.

×
×
  • Создать...