Вся активность

Этот поток обновляется автоматически   

  1. Сегодня
  2. Вопрос решился. Есть одно дополнение в код 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}
  3. Равиль Зарипов , спасибо.
  4. вот тут есть
  5. Вчера
  6. Для работы с https страницами используйте компоненты THttpClient или TNetHttpClient. Там ssl подключать не нужно, работает из коробки.
  7. Всем привет. Встал вопрос после обновления MacOS до High Sierra. Ранее для работы приложения через https из коробки работал Indy в RAD Studio 10.0. После обновления MacOS стала появляться ошибка о невозможности подгрузить библиотеку OpenSSL. Понял, что в обновленной MacOS теперь используется LibreSSL и из коробки теперь не работает. Перерыл тонну материала, но вопрос остался не решенным. Надеюсь, что кто - то имеет какие - то догадки в этом направлении.
  8. Как создать Floating Action Button - аналог кнопок в сервисах гугла, к примеру в Inbox большая кнопка Плюс? Нужна уневерсальная реализация и для Вин и Андроид платформ
  9. Последняя неделя
  10. Вот процедура конвертации токена 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;
  11. Прошу помощи!!!!! Проблема схожая, поэтому напишу в эту ветку. Не приходят пуши на 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 дня бьюсь!!!
  12. Please note that our online Docwiki, Embarcadero Forums, EDN Member Services and some of our support systems are currently not accessible. These systems were taken down for maintenance over the weekend when we identified some additional issues that we are resolving promptly. We apologize for any inconvenience this has caused, and hope to have these systems back online soon. We wanted to also take this opportunity to talk about some of the planned customer portal enhancements over the next six months. As you are probably aware, our EDN site is quite dated as it has been in use for many years. It has a lot of functionality that we know many customers like, but some that are no longer used extensively. We have started an effort to migrate to more modern platforms, such as the one used by our Community Portal. That initiative has been hugely successful and we want to migrate the rest of the functionality. Over the coming months, we will start to introduce some of these changes. Some of these are specifically aimed to increase the value for customers on active Update Subscription. We are committed to providing ample communications for any significant changes. For example, Code Central has a long history of downloads. The way we assign these also has made tracking Code Central IDs to specific downloads difficult and resulted in many obsolete IDs. Legacy downloads will likely be folded into a new Update Subscription customer-only section of the Customer Portal. We also plan on making it easier for customers to track cases they have logged, access current and previous version downloads, view licenses and more. We don’t expect those changes in the coming months to result in any system downtime, but if they do, we'll make sure to promptly notify you. As always, serving the community very important to us and we appreciate any feedback. We are always looking to do better. Thanks! Просмотр полной статьи
  13. Ответ уже есть на форуме в ветке пуша, поищите.
  14. Как правило акк+название девайса. Ну для страховки можно мак. Проще читай - данные придут не повторяемые. На андроиде даже IMEI не 100% гарантия уникальности. Так как опять-же на китайце его можно изменить. Но это хоть 99% уникальности. Вообще лично я сейчас вычисляю md5 от кучи параметров (IMEI, версия прошивки, название и пр.) это даёт шанс уникальности. Но лишь шанс. )))
  15. Разумеется и новый ответ. А первое соединение должно закрыться по ошибке. Видимо.
  16. Совсем не проще. Айди аккаунт может быть одинаковый, например, у планшета и смартфона. А мне нужно определить кто данные ввел, чтобы за ним закрепить именно автора данных и именно с какого физического устройства. Остается только назначать как-то извне (с сервера раздавать идентификаторы уникальные что ли....)
  17. На андроиде если есть симка - по IMEI, если нет, то ни как. На мак адреса и пр. полагаться нельзя из-за обилия китайцев. С IOS всё проще. Там эти мак айди аккаунта. Номер винта может меняться даже на протяжении жизни одной ОС на нём. Вот тут как раз лучше про маки вспоминать. Про дату биоса, цпу айди и пр.
  18. При обрыве соединения и переподсоединении будет новый контекст
  19. На сервере проблем в этом нет. Событие procedure IdTCPServerExecute(AContext: TIdContext) в параметре принимает контекст соединения. Там вся информация о соединении инициировавшем это событие.
  20. To:Евгений Корепов Спасибо. Обязательно посмотрю.
  21. Ну это вопрос к Indy. Моего кода в приложении очень мало. Indy утверждает, что для каждого подключения создается отдельный поток, который обрабатывает это соединение, что впрочем, логично Знаете. Сейчас посмотрел. Сервер запущен на Win10. Без подключений 8.2 Мб. Один клиент 8.3 Мб. Два клиента - тоже 8.3 Мб.
  22. @Wovan2, после подключения клиента к серверу, занимаемая сервером память подскакивает до 1Гб
  23. Каким образом можно идентифицировать устройство (смартфон, планшет). ОС: Android, iOS Подобно номеру винчестера, в Windows.
  24. Как различать клиентов между собой? При каждом пакете клиенту сообщать свой уникальный номер?
  25. Приведенный здесь код тоже оказался рабочий при посылке пуша по токену. Пуш приходит. Но встает вопрос, как обработать его при открытии приложения?
  26. with Server do begin BufferSize:=buffersize ??? with Server do begin BufferSize:=buffer_size
  27. Блестящая работа! Простой и красивый код! Потеря пакетов обусловлена (скорее всего) статичным buffer_size, на разных устройствах он может быть разным и правильнее его размер получать вот так buffer_size:= TJAudioTrack.JavaClass.getMinBufferSize(PSampleRateHz, TJAudioFormat.JavaClass.CHANNEL_OUT_MONO, TJAudioFormat.JavaClass.ENCODING_PCM_16BIT); if (buffer_size = TJAudioTrack.JavaClass.ERROR) then Exit; if (buffer_size = TJAudioTrack.JavaClass.ERROR_BAD_VALUE) then Exit; Еще конечно бы двойную буферизацию для записи/воспроизведения Так же можно сразу запустить проигрывание audiotrack.play в FormCreate, реальные звуки будут проигрываться и так: procedure TForm1.ServerUDPRead(AThread: TIdUDPListenerThread; const AData: TIdBytes; ABinding: TIdSocketHandle); begin audiotrack.write(TBytesToTJavaArray(TBytes(AData)),0,Length(AData)); end;
  1. Загрузить больше активности