gonzales

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

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

  • Посещение

  • Победитель дней

    1

gonzales стал победителем дня 4 января 2015

gonzales имел наиболее популярный контент!

Информация о gonzales

  • Звание
    Продвинутый пользователь

Посетители профиля

421 просмотр профиля
  1. Пуши в IOS

    Еще доп. накину на вентилятор, вдруг кому пригодится. Чтобы в iOS появилась наклейка с цифрой на иконке программы нужно добавить в JSON запроса пуша в объект notification пару badge=цифра
  2. Не отображается Splash форма на iOS

    На всякий случай кидаю ответ. Все остальное в iOS не работает вот статейка вообще конечно костыль, но по другому добиться нормального splashScreen в iOS у меня не получилось
  3. Пуши в IOS

    Вопрос решился. Есть одно дополнение в код ZyBy Если необходимо обработать сообщение внутри программы правильный код будет такой // это событие срабатывает при открытом приложении {$IFDEF ANDROID} // устраняем ошибку с чтением текста уведомления, // если уведомление отправлено из консоли firebase // и не заполнены дополнительные поля (message, title) aObj := ANotification.DataObject.GetValue(GCMSignature); if aObj <> nil then aText := aObj.value else aText := ANotification.DataObject.GetValue(FCMSignature).value; {$ENDIF} {$IFDEF IOS } aObj := ANotification.DataObject.GetValue(APNsSignature); if aObj <> nil then aText := (aObj as TJSONObject).GetValue('body').Value; {$ENDIF}
  4. Пуши в IOS

    Вот процедура конвертации токена APN в FCM uses // RTL System.Net.HttpClient, System.Net.URLClient, System.NetConsts, System.Threading, // REST REST.Types; const cSandboxValues: array[Boolean] of string = ('false', 'true'); cHTTPResultOK = 200; cFCMIIDBatchImportURL = 'https://iid.googleapis.com/iid/v1:batchImport'; cFCMAuthorizationHeader = 'Authorization'; cFCMAuthorizationHeaderValuePair = 'key=%s'; cResultsValueName = 'results'; cStatusValueName = 'status'; cRegistrationTokenValueName = 'registration_token'; cStatusValueOK = 'OK'; cFCMResultError = 'FCM Result Error: %s'; cFCMJSONError = 'FCM Unexpected JSON: %s'; cHTTPError = 'HTTP Error: %s. Response: %s'; cFCMRequestJSONTemplate = '{ "application": "%s", "sandbox": %s, "apns_tokens": [ "%s" ] }'; AAppBundleID = 'xxxxxxxxx'; AServerKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; procedure TForm1.Button2Click(Sender: TObject); var ARequest: string; LStream: TStream; LHTTP: THTTPClient; LResponse: IHTTPResponse; begin ARequest:=Format(cFCMRequestJSONTemplate, [AAppBundleID, cSandboxValues[true], Edit1.Text]); LStream := TStringStream.Create(ARequest); LHTTP := THTTPClient.Create; try LHTTP.CustomHeaders[cFCMAuthorizationHeader] := Format(cFCMAuthorizationHeaderValuePair, [AServerKey]); LHTTP.ContentType := CONTENTTYPE_APPLICATION_JSON; LResponse := LHTTP.Post(cFCMIIDBatchImportURL, LStream); if LResponse.StatusCode = cHTTPResultOK then Memo2.Lines.Add(LResponse.ContentAsString); finally LHTTP.Free; end; LStream.Free; end;
  5. Пуши в IOS

    Прошу помощи!!!!! Проблема схожая, поэтому напишу в эту ветку. Не приходят пуши на iOS. С Андроид все в порядке. Пересмотрел все статьи и форум тысячу раз, не могу понять, в чем проблема. Чтобы сразу многие вопросы отсечь, отвечу 1. Приложение в стадии development (release), Delphi 10.1 up2 + xCode 8.2 2. Все сертификаты есть, все установлено и экспортировано в FireBase. Даже заново сделан provising profile с учетом внедрения push notification. 3. Регистрация PushServiceRegister проходит успешно, система отдает FDeviceToken 4. при старте приложения выскакивает окно с разрешением на уведомления, конечно соглашаемся. 5. Для конвертации токена была написана процедура, вот ее возврат {"results":[{"registration_token":"fB5GK_gykQ8:APA91bFtfKYsNbHIlsLEdx0P8BCCddVj2EC0yqFDNPS9sDvo1AHJC4Kc_ydWNZlNeuRUPSDKCjDRlYAAbUEJ3gvOiuBnsv28IgIbHRmfSFjQYq0Cg6wyma4WZrDs6pEMCRIrFuLYWJly","apns_token":"c20590d04800eb051dca60275861ec74a4a93674b4b8e348135a4ad3a04a7bb0","status":"OK"}]} как видно токен валиден, правда я проверял, что если изменить цифры в apns_token то результат все равно положительный 6. Из консоли FireBase пытаюсь отослать пуш по известному токену, система ошибок не выдает, но пуш не приходит(((( 7. Использованный SDK 10.2, на устройстве версия ios - 9.3.5 Если можно, прошу кого-нибудь сконвертировать на php-сервере вот такой apn токен (c20590d04800eb051dca60275861ec74a4a93674b4b8e348135a4ad3a04a7bb0) и сравнить с тем, что я получаю из процедуры (fB5GK_gykQ8:APA91bFtfKYsNbHIlsLEdx0P8BCCddVj2EC0yqFDNPS9sDvo1AHJC4Kc_ydWNZlNeuRUPSDKCjDRlYAAbUEJ3gvOiuBnsv28IgIbHRmfSFjQYq0Cg6wyma4WZrDs6pEMCRIrFuLYWJly) В параметрах конвертации Sandbox = true (приложение не выложено в AppStore). Ноя пробывал и так и так, результат один. Прошу помощи, уже 3 дня бьюсь!!!
  6. TPushClient - нашёл чудесную вещь

    Приведенный здесь код тоже оказался рабочий при посылке пуша по токену. Пуш приходит. Но встает вопрос, как обработать его при открытии приложения?
  7. TPushClient - нашёл чудесную вещь

    Что все завершено, см скрин Нет, пока только тест. Сейчас сделал все по примеру Равиля http://blog.rzaripov.kz/2017/02/firebase-android-ios-2.html В нем работает ПУШ при таргетировании на устройство, обычный так и не приходит
  8. TPushClient - нашёл чудесную вещь

    У меня закрадываются сомнения, что я чего-то не понимаю в отправке пушей. Нужен ли еще дополнительно сервер для отправки пушей, как написано в этой статье Хотя судя по этой статье для тестирования пушей ничего кроме FireBase не надо Евгений, поясните пожалуйста строку GetHTTP(CommandRegisterFCM); В демо примере такого нет.
  9. TPushClient - нашёл чудесную вещь

    Еще раз хочу уточнить технику секса 1. Регистрирую приложение для Андроид в FireBase 2. В настройках проекта на вкладке Cloud Messaging копирую Идентификатор отправителя 3. Открываю Demo проект, кстати вопрос, DW.PushClient.pas и DW.RegisterFCM.pas лежат не в папке с Демо, тем не менее все компилится, как-то странно. Эти файлы никуда не нужно положить? 4. Вношу изменения constructor TForm1.Create(AOwner: TComponent); begin inherited; FPushClient := TPushClient.Create; FPushClient.GCMAppID :='280557678639'; //cFCMSenderID; FPushClient.ServerKey :=''; //cFCMServerKey; FPushClient.BundleID :=''; //cFCMBundleID; FPushClient.UseSandbox := True; // Change this to False for production use! FPushClient.OnChange := PushClientChangeHandler; FPushClient.OnReceiveNotification := PushClientReceiveNotificationHandler; FPushClient.Active := True; end; 5. Запускаю на телефоне. Компилится без ошибок. После старта наблюдаю значения DeviceID и DeviceToken 6. В FireBase на вкладке Notifications создаю новое сообщение, в котором указываю Цель - сегмент пользователей, выбираю свое приложение, жму "Отправить сообщение" По идее все. Может чего упустил? Может ли кто-нибудь повторить такой подход, был бы крайне благодарен?
  10. TPushClient - нашёл чудесную вещь

    попробую подождать, но что-то мне подсказывает, что проблема не в этом.
  11. TPushClient - нашёл чудесную вещь

    И работает демо из коробки, ничего изменять не надо? Только вбить FPushClient.GCMAppID? Я правильно понимаю, что при отправке Notification из консоли Firebase я должен сразу получить уведомление?
  12. TPushClient - нашёл чудесную вещь

    А какая версия Delphi?
  13. TPushClient - нашёл чудесную вещь

    Запустил Демо, уведомления не приходят. Ошибок никаких не выдается, но и уведомлений нет. Функция procedure TForm1.PushClientChangeHandler(Sender: TObject; AChange: TPushService.TChanges); begin if TPushService.TChange.DeviceToken in AChange then begin Memo1.Lines.Add('DeviceID = ' + FPushClient.DeviceID); Memo1.Lines.Add('DeviceToken = ' + FPushClient.DeviceToken); end; end; отрабатывает, появляются значения DeviceID и DeviceToken, а функция procedure TForm1.PushClientReceiveNotificationHandler(Sender: TObject; const ANotification: TPushServiceNotification); begin Memo1.Lines.Add('Notification: ' + ANotification.DataObject.ToString); end; не вызывается. Может я что не так в FireBase настроил. Но вроде там трудно ошибиться.
  14. Сделал по указанному варианту. Работает везде кроме iOS, splash не показывается, логотип висит до отрисовки form1 begin Application.Initialize; Application.FormFactor.Orientations := [TFormOrientation.Portrait]; Application.CreateForm(TSplashForm, SplashForm); Application.Run; end. procedure TSplashForm.FormShow(Sender: TObject); begin Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); Application.CreateForm(TForm3, Form3); Application.CreateForm(TForm5, Form5); Application.CreateForm(TForm6, Form6); Application.CreateForm(TForm7, Form7); Application.CreateForm(TForm8, Form8); Application.CreateForm(TForm9, Form9); Application.CreateForm(TForm4, Form4); Application.CreateForm(TForm10, Form10); Application.CreateForm(TForm11, Form11); Application.CreateForm(TfBaseDialog, fBaseDialog); Application.CreateForm(TForm12, Form12); PreloadConfiguration; form1.Show; end; procedure TForm1.FormShow(Sender: TObject); begin application.MainForm := Form1; SplashForm.Close; end;
  15. Не отображается Splash форма на iOS

    Спасибо! Хотя описанный способ прямо противоположен описанному здесь Попробую переделать