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

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


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

Опубликовано
5 минут назад, Kitty сказал:

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

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

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

 

 

 

Китти, сори за off top, но, мне кажется, ты бы обошлась меньшей кровью, если бы уже перешла на дельфи))).

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

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

Опубликовано
Цитата

Китти, сори за off top, но, мне кажется, ты бы обошлась меньшей кровью, если бы уже перешла на дельфи))).

А зачем? Все работает и на С++. Был баг. Его решили. Равиль помог определить и суппорт быстро решил. А что в делфи багов нет? Из-за бага менять язык? Нет.

  • Модераторы
Опубликовано
8 минут назад, Kitty сказал:

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

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

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

0) то что в первой статье указано для IOS все сделала?

1) на чем тест проводишь?

2) CFBundleIdentifier в Version Info идентичен названию пакета в консоли?

Опубликовано

Вроде все сделал как надо. Тестирую на стенде где было собрано давно нормальное приложение. Теперь добавляю приложение с пушами... и не работает...

Теперь или баг С++ Builder или моя тупость при работе с ios...

123.jpg

Опубликовано

В iOS проекте Project > Options > Entitlement List нет Receive Push Notification.
Может нужен какой-то доп. ключ добавить в Version info проекта? Спасибо.

  • Модераторы
Опубликовано
3 часа назад, Ingalime сказал:

Равиль Зарипов, подскажите, пожалуйста, что надо изменить в php сервере, чтобы обойти ограничение на 1000 устройств?

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

Опубликовано

Может на этом форуме найдется специалист по PHP чтобы снять ограничение на 1000 устройств? Просто тут многие занимались пушами.

Евгений Корепов, предлагал свой вариант, но как его адаптировать и правильно интегрировать в сервер из блога Равиля?

function SendGCMMessagesPacket($apiKey, $DevicesTokenArray, $message, $title, $DBLink, $TableName, $MyLog_GCM_file) {
	if (count($DevicesTokenArray)==0) {
		MyLog($MyLog_GCM_file, "Count Devices Token Array is 0, skip sending");
		return(0);
	}
	$Count_Success = 0;
	$DeviceCountMax = 1000;
	$DeviceCountIndex = 0; 
	$DevicesTokenPacketArray = array();
	$gcpm = new GCMPushMessage($apiKey);
	while ($DeviceCountIndex<=count($DevicesTokenArray)) {
		$DevicesTokenPacketArray = array_slice($DevicesTokenArray, $DeviceCountIndex, $DeviceCountMax);
		MyLog($MyLog_GCM_file, "Packet send: start index $DeviceCountIndex,  count ".count($DevicesTokenPacketArray));
		$gcpm->setDevices($DevicesTokenPacketArray);
		$ResponceJSON = $gcpm->send($message, array('title' => $title));
		$Count_Success = $Count_Success + AnalyzeResponse($DevicesTokenPacketArray, $ResponceJSON, $DBLink, $TableName, $MyLog_GCM_file);
		MyLog($MyLog_GCM_file, $ResponceJSON);
		$DeviceCountIndex = $DeviceCountIndex + $DeviceCountMax;			
//		sleep(1);
	}
	return($Count_Success);	
}

 

Опубликовано

Очень много говориться, что снять ограничение на 1000 устройств это раз плюнуть, ну пару строк кода...

Все это не соотвествует действительности и никто не может предоставить решение. Одни общие фразы. Кто нибудь может показать php сервер для пушей для нормального использования свыше 1000 пушей?

  • Модераторы
Опубликовано
4 часа назад, Ingalime сказал:

Очень много говориться, что снять ограничение на 1000 устройств это раз плюнуть, ну пару строк кода...

Все это не соотвествует действительности и никто не может предоставить решение. Одни общие фразы. Кто нибудь может показать php сервер для пушей для нормального использования свыше 1000 пушей?

я уже писал, это форум не по php. Вам не сюда, покажите свой сервер на пхп-форуме и вам помогут.

в следующий раз буду удалять такие посты

Опубликовано

Равиль, сразу извиняюсь, готов понести наказание, но запощу решение. 

Как уже говорил все просто, если у вас 4345 сообщений, то делим массив токенов и отправляем 4 раза по 1000, и один раз 345. Не забывайте что вы программисты, и во всех языках программирования это делается одинаково просто. Вот код, писал прямо в гитхабе, естественно не проверял, если что то упустил, прошу прощения (а упустил я анализ результата).

function pushSendOver1000($title, $text, $tokens, $server_key) {
	$Count_Success = 0;
	$DeviceCountMax = 1000;
	$DeviceCountIndex = 0; 
	$DevicesTokenPacketArray = array();	
	while ($DeviceCountIndex<=count($tokens)) {
		$DevicesTokenPacketArray = array_slice($tokens, $DeviceCountIndex, $DeviceCountMax);
		pushSend($title, $text, $DevicesTokenPacketArray, $server_key);
		$DeviceCountIndex = $DeviceCountIndex + $DeviceCountMax;			
	}	
}

Запостил также на гитхаб. Можете ручками добавить функцию в конец https://github.com/rzaripov1990/PUSHTestFCM/blob/master/pushTest/push.php и соответственно вызывать не pushSend, а pushSendOver1000

  • Модераторы
Опубликовано
23 минуты назад, Евгений Корепов сказал:

Равиль, сразу извиняюсь, готов понести наказание, но запощу решение. 

Как уже говорил все просто, если у вас 4345 сообщений, то делим массив токенов и отправляем 4 раза по 1000, и один раз 345. Не забывайте что вы программисты, и во всех языках программирования это делается одинаково просто. Вот код, писал прямо в гитхабе, естественно не проверял, если что то упустил, прошу прощения (а упустил я анализ результата).


function pushSendOver1000($title, $text, $tokens, $server_key) {
	$Count_Success = 0;
	$DeviceCountMax = 1000;
	$DeviceCountIndex = 0; 
	$DevicesTokenPacketArray = array();	
	while ($DeviceCountIndex<=count($tokens)) {
		$DevicesTokenPacketArray = array_slice($tokens, $DeviceCountIndex, $DeviceCountMax);
		pushSend($title, $text, $DevicesTokenPacketArray, $server_key);
		$DeviceCountIndex = $DeviceCountIndex + $DeviceCountMax;			
	}	
}

Запостил также на гитхаб. Можете ручками добавить функцию в конец https://github.com/rzaripov1990/PUSHTestFCM/blob/master/pushTest/push.php и соответственно вызывать не pushSend, а pushSendOver1000

одобрил запрос, но не тестировал) 

26 минут назад, Евгений Корепов сказал:

Не забывайте что вы программисты, и во всех языках программирования это делается одинаково просто

этого не донести, им нужно на блюдичке

Тему закрываю

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

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