-
Постов
396 -
Зарегистрирован
-
Посещение
-
Победитель дней
16
Сообщения, опубликованные Martifan
-
-
здравствуйте, я пытаюсь сделать push уведомление на iOS делаю следующим образом:
unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, System.PushNotification, FMX.Controls.Presentation, FMX.StdCtrls, FMX.PushNotification.iOS, FMX.ScrollBox, FMX.Memo; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } FDeviceID: string; FDeviceToken: string; FPushService: TPushService; FPushServiceConnection: TPushServiceConnection; procedure OnReceiveNotificationEvent(Sender: TObject; const ANotification: TPushServiceNotification); procedure OnServiceConnectionChange(Sender: TObject; AChange: TPushService.TChanges); public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.Button1Click(Sender: TObject); begin FPushService := Nil; FPushServiceConnection := Nil; FPushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.APS); if Assigned(FPushService) then begin FPushServiceConnection := TPushServiceConnection.Create(FPushService); FPushServiceConnection.OnReceiveNotification := OnReceiveNotificationEvent; FPushServiceConnection.OnChange := OnServiceConnectionChange; FPushServiceConnection.Active := True; end else Begin ShowMessage('False'); End; end; procedure TForm1.OnReceiveNotificationEvent(Sender: TObject; const ANotification: TPushServiceNotification); begin // ShowMessage('OnReceiveNotificationEvent'); end; procedure TForm1.OnServiceConnectionChange(Sender: TObject; AChange: TPushService.TChanges); begin Memo1.Lines.Clear; if (TPushService.TChange.DeviceToken in AChange) and Assigned(FPushServiceConnection) then begin FDeviceID := FPushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID]; FDeviceToken := FPushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken]; // save token and ID to remote db here Memo1.Lines.Add('DeviceID: '+FDeviceID); Memo1.Lines.Add('DeviceToken: '+FDeviceToken); end; end; end.
все проходит нормально но получаю значение FDeviceID а значение FDeviceToken пустой все сертификаты установлены правильно и соответственно указана все правильно как я говорил перемен FDeviceID получает значение а
FDeviceToken возвращается пустым на форумах тоже видел такую проблему но может кто то решал эту проблему?
поделитесь пожалуйста
заранее спасибо -
Здравствуйте.
кто знает можно ли развернуть аппликацию обратно если он свернуто и работает фоновом режиме в iOS
-
здравствуйте, скажите пожалуйста, когда я собираюсь загрузить библиотеку мне выдаёт ошибку:
Unknown directive: dependency
в чем проблема?
спасибо -
-
Здравствуйте, столкнулся с такой проблемой. Пишу небольшой проигрыватель на android и ios, на дроиде работает все нормально, а вот с яблоком проблема: не загружает библиотеку libbass.a
Добавил ее в Deployment, сохраняется по пути StartUp/Library/ . Файл записывается на устройство, но библиотека все равно не грузится. Код загрузки библиотеки:const bassdll = 'libbass.a'; function BASS_FOLDER: String; begin {$IFDEF MSWINDOWS} Result := ''; {$ELSE} Result := IncludeTrailingPathDelimiter(system.IOUtils.TPath.GetLibraryPath); {$ENDIF} end; procedure LoadBassDLL; var DocDir: string; begin docDir:=BASS_FOLDER + bassdll; if fileExists(docDir) then begin FBassDLL := LoadLibrary(PChar(docDir)); if FBassDLL = 0 then Exit; end; end;
Файл существует, но LoadLibrary возвращает значение 0. Уже всю голову сломал. В чем причина?
-
В 05.04.2020 в 04:30, Edward Tarasov сказал:
Сам недавно бился с этим вопросом. ответ нашел на этом форуме.
Но после долгого гугления вопроса сложилось впечатление, что на сегодняшний день из ios можно выжать максимум три минуты работы приложения в фоне, потом приложение перестает реагировать. в моем случае было необходимо передавать координаты. Что только не перепробовал - три минуты и все. можно мухлевать: Воспроизводить аудио или записывать с микрофона - но ребята из apple при публикации к такому отнесутся не очень. вот исходники которые нарыл - пример отрабатывает в фоне три минуты
Спасибо, а если каждый 2 минуты аппликация будет вызывать какой нибудь метод из моего веб сервиса?
-
Доброго времени суток. Подскажите пожалуйста, как заставить работать TThread в приложении, если приложение свернуто, т.е находится в фоновом режиме. Я делаю так:
var I: Integer; begin I := 0; TThread.CreateAnonymousThread(procedure () var Return: String; begin repeat Label1.Text := I.ToString; I := I + 1; Sleep(1000); // Application.ProcessMessages; until I > 10; TThread.Synchronize (TThread.CurrentThread, procedure () begin end); end).Start; end;
Когда активно приложение, все работает хорошо, после того как сворачиваю, т.е. нажимаю кнопку Home, аппликация сворачивается и процесс останавливается. Когда обратно разворачиваю, процесс продолжается. Как заставить работать приложение в фоновом режиме? Заранее спасибо.
-
-
Доброго времени сутки.
Пытаюсь получить уведомлены делаю все как в примерах и все работает хорошо уведомления приходят но есть одно проблема:
если у меня экран телефона выключен то когда приходит уведомление только звучит а экран не загорается хотя я когда создаю канал указываю:
Channel.Importance := TImportance.High; Channel.LockscreenVisibility := TLockscreenVisibility.&Public;
но все равно экран не включается кто в курсе как можно сделать так чтобы экран включился? ну как это делает вайбер
заранее всем спасибо
-
16 часов назад, Ingalime сказал:
Для платформы Андроид автор библиотеки Indy по имени Remy, приводит свои рассуждения тут:
https://stackoverflow.com/questions/25096126/delphi-xe6-and-android-ping
это я видел но как реализовать FMX не могу понять
-
17 часов назад, Tumaso сказал:
В Indy есть TIdICMPClient
не работает на Android
-
Доброго времени сутки
подскажите пожалуйста как реализовать пинг на Android или iOS?
то есть чтобы из моего приложении смог пинговать какой нибудь ип адрес
заранее спасибо
-
Всем доброго времени сутки
решил в приложение реализовать распознавание речи благодаря к примеру Ярослава все работает так как надо:
unit main; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls, FMX.ScrollBox, FMX.Memo; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} uses Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.Speech, Androidapi.Helpers, FMX.Helpers.Android; procedure OpenSpeechRecognizer; var Intent: JIntent; begin Intent := TJIntent.JavaClass.init(TJRecognizerIntent.JavaClass.ACTION_RECOGNIZE_SPEECH); Intent.putExtra(TJRecognizerIntent.JavaClass.EXTRA_PROMPT, StringToJString('Говорите')); Intent.putExtra(TJRecognizerIntent.JavaClass.EXTRA_LANGUAGE_MODEL, TJRecognizerIntent.JavaClass.LANGUAGE_MODEL_WEB_SEARCH); Intent.putExtra(TJRecognizerIntent.JavaClass.EXTRA_MAX_RESULTS, 1); Intent.putExtra(TJRecognizerIntent.JavaClass.EXTRA_LANGUAGE, StringToJString('ru-RU')); SharedActivity.startActivityForResult(Intent, 1); end; procedure TForm1.Button1Click(Sender: TObject); begin OpenSpeechRecognizer; end; end.
Androidapi.JNI.Speech.pas
{********************************************************************* * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Autor: Brovin Y.D. * E-mail: y.brovin@gmail.com * ********************************************************************} unit Androidapi.JNI.Speech; interface uses Androidapi.JNIBridge, Androidapi.JNI.JavaTypes; type JRecognizerIntentClass = interface(JObjectClass) ['{8AB8D43F-178D-4C79-9FC9-6DDA3D52CEBF}'] {Property Methods} function _GetACTION_RECOGNIZE_SPEECH: JString; function _GetEXTRA_PROMPT: JString; function _GetEXTRA_LANGUAGE_MODEL: JString; function _GetEXTRA_MAX_RESULTS: JString; function _GetEXTRA_LANGUAGE: JString; function _GetLANGUAGE_MODEL_WEB_SEARCH: JString; {Properties} property ACTION_RECOGNIZE_SPEECH: JString read _GetACTION_RECOGNIZE_SPEECH; property EXTRA_PROMPT: JString read _GetEXTRA_PROMPT; property EXTRA_LANGUAGE_MODEL: JString read _GetEXTRA_LANGUAGE_MODEL; property EXTRA_MAX_RESULTS: JString read _GetEXTRA_MAX_RESULTS; property EXTRA_LANGUAGE: JString read _GetEXTRA_LANGUAGE; property LANGUAGE_MODEL_WEB_SEARCH: JString read _GetLANGUAGE_MODEL_WEB_SEARCH; end; [JavaSignature('android/speech/RecognizerIntent')] JRecognizerIntent = interface(JObject) ['{5AE872F8-D057-4966-97B9-F8DD239C3656}'] end; TJRecognizerIntent = class(TJavaGenericImport<JRecognizerIntentClass, JRecognizerIntent>) end; implementation initialization TRegTypes.RegisterType('Androidapi.JNI.GraphicsContentViewText.JDataSetObserver', TypeInfo(Androidapi.JNI.Speech.JRecognizerIntent)); end.
вот при нажатии кнопки появляется окно который слушает ваш речь и распознаёт:
вроде все работает но есть маленькая проблема это форма очень быстро перестают слушать то есть приходит пассивном режиме:
то есть если в время разговора остановишься несколько секунд (2-3) то он пассивным становится
но если использовать распознавание речи клавиатуры:
то появляется форма на клавиатуре и очень долго держит паузу:
а теперь вопрос:
1) как мне заставить так же долго держать паузу на первом варианте
2) какая отличия между этими 2 формами?
3) если можно первый вариант сделать на iOS?всем за ранее спасибо
-
10 минут назад, mazayhin сказал:
У @Rusland есть решение с фореграунд-сервисом
можете дать премию ссылку?
-
32 минуты назад, #WAMACO сказал:
Зачем Вам такое поведение приложения? Можно пример?
это маленькая приложения который отправляет запросы от клиента серверу о том что клиентский телефон включен и сколько процент батареи, ничего особенного просто удивился такое странное поведения клиента и подумал может кто то столкнулся таким же проблемой
То есть команда:
IOHandler.WriteLn(ObjectToJson(ASentObject), IndyTextEncoding_UTF8);
работал фоновом режиме (когда экран отключен)
-
16 минут назад, Tumaso сказал:
Чтобы приложение оставалось активным в фоновом режиме (я про андроид), приложение должно отображать постоянное уведомление.
Сам такое уведомление еще не реализовывал, поэтому технической реализации не подскажу (пока по крайней мере)
а документацию как это реализовать не знайте где можно прочитать?
-
Доброго времени сутки
сделал стандартный TCP клиент сервер для мобильного устройства то есть сервер запущен на компьютере а клиент мобильнике и клиент через определенное время отправляет одну команду (каждый 30 секунд), все работает идеально, до тех пор пока не погаснет экран на мобильнике после этого перестает отправлять команды и через 5-7 минут вообще отключается клиент от сервера подскажите пожалуйста что можно сделать чтобы он все равно отправлял команды когда экран отключен и не отключался от сервера?
заранее всем спасибо
-
-
24 минуты назад, Евгений Корепов сказал:
Сделал тестовое приложение (чистый андроид 9, Rio), но не удалось воспроизвести такое поведение.
Закиньте проект в котором глюк воспроизводится.
на кнопке параметре стоит CanFocus = False
-
52 минуты назад, Евгений Корепов сказал:
Не очень понятно где именно вы видите 123456, в самом контроле или в помощнике клавиатуры?
в контроле то есть когда удаляю 123 с помощью кнопки, контролер очищается, но когда хочу написать 456 автоматом впереди добавляется 123 и получается 123456
-
Здравствуйте
У меня есть один TMemo в форме. Некоторый текст написан пользователем в нем. Есть кнопка стереть. Когда эта кнопка нажата, введенные данные обрабатываются и текст очищается с использованием следующего кода:
EditBox.Lines.Clear; EditBox.Text: = EmptyStr;
Когда приложение работает на устройстве, оно заметно удаляет текст после нажатия этой кнопки стереть. Однако, когда вы начинаете печатать снова, вы печатаете поверх старого текста.
Например:
1- Исходный текст набран "123".
2- Нажата кнопка стереть.
3- Наблюдается, что редактирование содержимого визуально очищается. Текст не отображается.
4- Если вы наберете «456» в этом пустом редактировании, и после завершения ввода вы получите «123456» в самом редактировании.Точно так же, когда есть проблема с обработкой, приложение выбирает введенный текст. Если вы начнете печатать, новый текст добавляется, а не заменяется.
как можно очистить память клавиатуры после удаление текста?
заранее всем спасибо!
-
Всем доброго времени сутки
Подскажите пожалуйста как поделиться несколько фотографиями, как поделиться 1 фотографией понятно но как сделать несколько отправок за 1 раз? то есть я выделил 3 фотки и хочу поделиться вайбере или вацапе
-
-
7 часов назад, #WAMACO сказал:
Конечно можно!
Пожалуйста если не сложно напишите пример как?
спасибо
iOS Push Notification
в iOS
Опубликовано
Я разобрался как получить FDeviceToken но когда пытаюсь отправить к себе уведомление получаю ошибку
может кто то знает в чем проблема? и как исправить? заранее спасибо