gonzales
-
Постов
334 -
Зарегистрирован
-
Посещение
-
Победитель дней
27
Активность репутации
-
gonzales получил реакцию от zairkz в Не корректно отрабатывает Disconnect
Помогло вот такое, интересно, это бага или фича ?
IdTCPClient.Disconnect; if IdTCPClient.IOHandler <> nil then IdTCPClient.IOHandler.InputBuffer.Clear; -
gonzales получил реакцию от Ingalime в Задать стиль текста в RunTime
Все работает, в запаре забыл галки снять с StyleSettings
-
gonzales получил реакцию от Edward Tarasov в При публикации приложения на AppleStore вылезает ошибка - В каталог объектов xcode необходимо добавить значок приложения с разрешением 1024*1024 пикселей
По итогу все срослось.
Для сборки проекта в 10.4.1. необходимо удалить из папки с проектом папки iOSDevice64, LaunchScreen.TemplateiOS, и файлы Entitlement.TemplateiOS.xml и info.plist.TemplateiOS.xml. После чего пересобрать проект, создадутся новые файлы Entitlement.TemplateiOS.xml и info.plist.TemplateiOS.xml в которых будут необходимые директивы. У меня после этого пропали проблемы с размером экрана и AppStoreConnect без проблем съел мой ipa файл, при этом показал, что есть включенные материалы - значок приложения.
А ТЕПЕРЬ ЛОЖЕЧКА КАКККИ)))
При сборке приложения в 10.4.1 не применяется Заставка, включается стандартная, что бы я не делал, даже в новом пустом проекте, выставляю свою заставку, запускаю, а заставка все равно стандартная, также не работает цвет экрана заставки, корректно отрабатывают только иконки. Я порылся во всех местах, где это могло быть, вроде все правильно, в Deployment файлы правильные, на маке в папке LaunchScreenImage.imageset файлы правильные, а вот что должно быть дальше - не знаю(((
-
gonzales отреагировална Edward Tarasov в поломались ПУШи в 10.4
10.3... на 10.4.1 - все гуд. спасибо!
-
gonzales отреагировална Android в Delphi 10.4 и Android 4.1
http://docwiki.embarcadero.com/RADStudio/Sydney/en/Android_Devices_Supported_for_Application_Development
RAD Studio does not support the following Android versions:
Lollipop (Android 5.0) KitKat (Android 4.4) Jelly Bean (Android 4.1.x, 4.2.x, 4.3.x) Ice Cream Sandwich (Android 4.0.3 and 4.0.4) Honeycomb (Android 3.x) Gingerbread (Android 2.3.3 – 2.3.7) Tegra 2 devices (NEON support is required) -
gonzales получил реакцию от Martifan в StatusBar Color
Долго бился со следующим, есть три типа устройств: 1. где отсутствует NavBar физически, 2. где он есть и всегда включен, 3. где он есть, но его можно выключить в настройках. В результате добился нормальной работы окраски NavBar на всех типах. Немного изменил код, приведенный Равилем из примера Update2
function hasNavbar(out navBarHeight: Integer): boolean; // uses Androidapi.JNI.Util, {$IFDEF ANDROID} var Window: JWindowExt; realSize: JPoint; screenSize: JPoint; metrics: JDisplayMetrics; difference, resourceID: Integer; {$ENDIF} begin Result := false; navBarHeight := 0; {$IFDEF ANDROID} metrics := TJDisplayMetrics.Create; realSize := TJPoint.Create; screenSize := TJPoint.Create; Window := GetWindowExt; Window.getWindowManager.getDefaultDisplay.getRealMetrics(metrics); realSize.x := metrics.widthPixels; realSize.y := metrics.heightPixels; Window.getWindowManager.getDefaultDisplay.getSize(screenSize); if realSize.y <> screenSize.y then begin difference := realSize.y - screenSize.y; resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('navigation_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then navBarHeight := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID)); if navBarHeight > 0 then if difference < navBarHeight then begin navBarHeight := 0; Result := false; end else Result := true; end else begin navBarHeight := 0; Result := false; end; {$ENDIF} end;
-
gonzales отреагировална slav_z в закодировать строку в UTF8 для передачи в GET запросе
а.. вот еще что: THTTPClient сам кодирует строку запроса, без всякой дополнительной фигни... очень хороший объект... реализованный просто замечательно...
Client:=THTTPClient.Create;
var Response:=Client.Get('http://fire-monkey.ru/topic/6993-закодировать-строку-в-utf8-для-передачи-в-get-запросе/#comment-40498');
if Response.StatusCode=200 then
...
Client.Free;
-
gonzales отреагировална slav_z в закодировать строку в UTF8 для передачи в GET запросе
S:=TNetEncoding.URL.EncodeQuery('http://fire-monkey.ru/topic/6993-закодировать-строку-в-utf8');
...и вам вполне подойдет THTTPClient для любых запросов...
-
gonzales получил реакцию от Tumaso в закодировать строку в UTF8 для передачи в GET запросе
Переделал только немного под себя, чтобы строку в ответ выдавал
function TForm1.Get(const ASession: TIdHTTP; const AUrl: string):string; begin result:=ASession.Get(ASession.URL.URLEncode(AUrl)); end;
-
gonzales отреагировална Tumaso в закодировать строку в UTF8 для передачи в GET запросе
попробуй вот так:
procedure Get(const ASession: TIdHTTP; const AUrl: string; const AResult: TStringStream); begin ASession.Get(ASession.URL.URLEncode(AUrl), AResult); end; где AUrl - твой урл с параметрами
-
gonzales отреагировална krapotkin в Динамическое удаление объектов и форм (опять...)
В том числе. Также все созданные формы будут удалять не себя а именно form1
-
gonzales отреагировална FREEFAR в #13#10 Не убрать перенос строки на Android
Попробуй заменить slinebreak на нужный символ. В твоём случае на пробел вроде
-
gonzales получил реакцию от #WAMACO в StatusBar Color
Долго бился со следующим, есть три типа устройств: 1. где отсутствует NavBar физически, 2. где он есть и всегда включен, 3. где он есть, но его можно выключить в настройках. В результате добился нормальной работы окраски NavBar на всех типах. Немного изменил код, приведенный Равилем из примера Update2
function hasNavbar(out navBarHeight: Integer): boolean; // uses Androidapi.JNI.Util, {$IFDEF ANDROID} var Window: JWindowExt; realSize: JPoint; screenSize: JPoint; metrics: JDisplayMetrics; difference, resourceID: Integer; {$ENDIF} begin Result := false; navBarHeight := 0; {$IFDEF ANDROID} metrics := TJDisplayMetrics.Create; realSize := TJPoint.Create; screenSize := TJPoint.Create; Window := GetWindowExt; Window.getWindowManager.getDefaultDisplay.getRealMetrics(metrics); realSize.x := metrics.widthPixels; realSize.y := metrics.heightPixels; Window.getWindowManager.getDefaultDisplay.getSize(screenSize); if realSize.y <> screenSize.y then begin difference := realSize.y - screenSize.y; resourceID := TAndroidHelper.Activity.getResources.getIdentifier(StringToJString('navigation_bar_height'), StringToJString('dimen'), StringToJString('android')); if resourceID > 0 then navBarHeight := Trunc(TAndroidHelper.Activity.getResources.getDimensionPixelSize(resourceID)); if navBarHeight > 0 then if difference < navBarHeight then begin navBarHeight := 0; Result := false; end else Result := true; end else begin navBarHeight := 0; Result := false; end; {$ENDIF} end;
-
gonzales получил реакцию от Ingalime в [IOS]Notification.Number
сорри, вместо &badge поставить цифру, которая должна отображаться
-
gonzales получил реакцию от Ingalime в [IOS]Notification.Number
Нужно внести изменение к код php сервера
вместо строки
$fields['notification'] = array('body' => $text, 'title' => $title); нужно вставить
$fields['notification'] = array('body' => $text, 'title' => $title, 'sound' => 'default', 'badge' => $badge);
-
gonzales получил реакцию от Ingalime в [IOS]Notification.Number
Чтобы в iOS появилась наклейка с цифрой на иконке программы нужно добавить в JSON запроса пуша в объект notification пару badge=цифра
-
gonzales получил реакцию от Ingalime в При публикации приложения на AppleStore вылезает ошибка - В каталог объектов xcode необходимо добавить значок приложения с разрешением 1024*1024 пикселей
По итогу все срослось.
Для сборки проекта в 10.4.1. необходимо удалить из папки с проектом папки iOSDevice64, LaunchScreen.TemplateiOS, и файлы Entitlement.TemplateiOS.xml и info.plist.TemplateiOS.xml. После чего пересобрать проект, создадутся новые файлы Entitlement.TemplateiOS.xml и info.plist.TemplateiOS.xml в которых будут необходимые директивы. У меня после этого пропали проблемы с размером экрана и AppStoreConnect без проблем съел мой ipa файл, при этом показал, что есть включенные материалы - значок приложения.
А ТЕПЕРЬ ЛОЖЕЧКА КАКККИ)))
При сборке приложения в 10.4.1 не применяется Заставка, включается стандартная, что бы я не делал, даже в новом пустом проекте, выставляю свою заставку, запускаю, а заставка все равно стандартная, также не работает цвет экрана заставки, корректно отрабатывают только иконки. Я порылся во всех местах, где это могло быть, вроде все правильно, в Deployment файлы правильные, на маке в папке LaunchScreenImage.imageset файлы правильные, а вот что должно быть дальше - не знаю(((
-
gonzales отреагировална IgorK11 в При публикации приложения на AppleStore вылезает ошибка - В каталог объектов xcode необходимо добавить значок приложения с разрешением 1024*1024 пикселей
набросал подробную инструкцию как делал на 10.3 собрав инфу с комментариев:
!!! Иконки в AppIcon.appiconset должны быть без прозрачности и альфа-канала, иначе получите ошибку ITMS-90717:Invalid App Store Icon.
1. распаковываем iOS1024fix.zip
2. заменяем иконки в asset_catalog\Assets.xcassets\AppIcon.appiconset\ и asset_catalog\Assets.xcassets\LaunchScreenImage.imageset\
3. если надо меняем цвет фона в asset_catalog\Assets.xcassets\LaunchScreenBackgroundColor.colorset\Contents.json
4. копируем папку asset_catalog на мак
5. в терминале перейти в неё, если скопировали на рабочий стол команда:
cd desktop/asset_catalog 6. выполняем команду:
actool --output-format human-readable-text --notices --warnings --app-icon AppIcon --output-partial-info-plist compilation_results/partial_Info.plist --target-device iphone --target-device ipad --minimum-deployment-target 11.0 --platform iphoneos --product-type com.apple.product-type.application --compile "compilation_results" "Assets.xcassets" в asset_catalog\compilation_results появятся 4 файла
7. копируем папку (или эти 4 файла) обратно c мака
8. в delphi компилируем ipa (Release / iOS Device 64-bit / Application Store)
9. Для удобства создадим папку "ios1024" в папке проекта
10. копируем файл iOSDevice64\Release\<ИмяПроекта>.Info.plist в папку "ios1024" убрав из имени "<ИмяПроекта>.", имя файла должно быть "Info.plist", регистр важен!
11. копируем из asset_catalog\compilation_results 4 файла в папку "ios1024"
12. копируем папку LaunchScreen.storyboardc в "ios1024" (именно папку а не её содержимое)
13. Редактируем Info.plist
13.1. Меняем:
<key>CFBundleIconFiles</key> <array> <string>ios_app_ico57</string> <string>ios_app_ico87</string> <string>ios_app_ico114</string> <string>ios_app_ico1024</string> <string>ios_app_ico60</string> <string>ios_app_ico120</string> <string>ios_app_ico180</string> <string>ios_spot_29</string> <string>ios_spot_40</string> <string>ios_spot_58</string> <string>ios_spot_80</string> <string>ios_spot_120</string> </array> на
<key>CFBundleIcons</key> <dict> <key>CFBundlePrimaryIcon</key> <dict> <key>CFBundleIconFiles</key> <array> <string>AppIcon60x60</string> </array> <key>CFBundleIconName</key> <string>AppIcon</string> </dict> </dict> <key>CFBundleIcons~ipad</key> <dict> <key>CFBundlePrimaryIcon</key> <dict> <key>CFBundleIconFiles</key> <array> <string>AppIcon60x60</string> <string>AppIcon76x76</string> </array> <key>CFBundleIconName</key> <string>AppIcon</string> </dict> </dict> 13.2. Удаляем в двух местах строки:
<key>CFBundleResourceSpecification</key> <string>ResourceRules.plist</string> 13.3. После строк:
<key>DTPlatformName</key> <string>iphoneos</string> добавляем:
<key>DTPlatformVersion</key> <string>13.5</string> 14. Заходим в delphi->Project->Deploment
15. Проверяем что бы выбран "iOS Device 64-bit"
16. Снимаем галочки с: (имена файлов будут ваши, ориентируйтесь по Option->Application->Icons)
17. в Deploment добавляем все файлы папки "ios1024"
18. изменяем Remote Path 5-и строкам:
19. компилируем IPA и отправляем через Transporter на маке
!!! При изменении версии билда в проекте не забываем изменить его в CFBundleVersion "ios1024"\Info.plist
iOS1024fix.zip
-
gonzales получил реакцию от Roma77751 в поломались ПУШи в 10.4
Нашел причину
В Library path для Андроид64 добавил путь E:\Embarcadero\Studio\21.0\source\rtl\android, где собственно и лежит Androidapi.JNI.PlayServices.Tasks.pas и все заработало.
Буду с iOS разбираться теперь
-
gonzales получил реакцию от Astin Wolfone в поломались ПУШи в 10.4
Нашел причину,
В недрах класса TPushService
TPushService = class abstract public type TPropPair = TPair<string, string>; TPropArray = TArray<TPropPair>; // commonly used names TServiceNames = record public const GCM = 'gcm'; // deprecated 'Is not available anymore. Please use FCM instead'; // Google cloud messaging FCM = 'fcm'; // Google Firebase cloud messaging APS = 'aps'; // Apple end; Соответственно нужно исправить
FPushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.GCM);
на
FPushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.FCM);
Все работает
-
gonzales отреагировална Bob32 в При публикации приложения на AppleStore вылезает ошибка - В каталог объектов xcode необходимо добавить значок приложения с разрешением 1024*1024 пикселей
Идёшь по ссылке. Там инструкция на 4+ листа. К ней есть пара Вложенных архивов.
Берёшь первый, где лежат иконки, распаковываешь. Подкладываешь свои (там по умолчанию стандартные дельфийские), плюс эту самую иконку - 1024 на 1024.
потом это копируешь на комп с маком и xcode. Из командной строки запускаешь строку с длинными параметрами. По итогам в папке получаешь неск файлов, копируешь их на комп с дельфи, подкладываешь в файл проекта, вместе с файлами ещё одного архива, потом в параметрах деплоймента проекта отключаешь стандартные иконки, добавляешь штук 6 этих левых файлов, предварительно ещё правишь файл plist.info. Потом все это компилируешь и получаешь Новый ipa файл. Его и заливаешь на эпл стор.
в инструкции все подробно написано.
пробовал на 10.3.3 - работает.
-
gonzales отреагировална slav_z в прозрачность модального окна в 10.3
если вы достаточно смелый, то можете внести следующее изменение в исходники* дельфи: (тогда на андроиде будет работать прозрачность формы), но проблему можно решить просто используя фреймы.
*копируете этот файл в папку проекта и делаете изменения.
-
gonzales получил реакцию от Roma77751 в поломались ПУШи в 10.4
Нашел причину,
В недрах класса TPushService
TPushService = class abstract public type TPropPair = TPair<string, string>; TPropArray = TArray<TPropPair>; // commonly used names TServiceNames = record public const GCM = 'gcm'; // deprecated 'Is not available anymore. Please use FCM instead'; // Google cloud messaging FCM = 'fcm'; // Google Firebase cloud messaging APS = 'aps'; // Apple end; Соответственно нужно исправить
FPushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.GCM);
на
FPushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.FCM);
Все работает
-
gonzales получил реакцию от ENERGY в поломались ПУШи в 10.4
Не могу одолеть пуши при компиляции приложения в 10.4
Вот стандартный код
unit Unit1; 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.ScrollBox, FMX.Memo, System.PushNotification, System.JSON, System.Net.HTTPClient, System.Threading,REST.Types {$IFDEF ANDROID}, FMX.PushNotification.Android, FMX.Memo.Types{$ENDIF} {$IFDEF IOS}, FMX.PushNotification.IOS{$ENDIF}; type TForm1 = class(TForm) MemoLog: TMemo; procedure FormCreate(Sender: TObject); private FDeviceID: string; FDeviceToken: string; FPushService: TPushService; FPushServiceConnection: TPushServiceConnection; procedure OnReceiveNotificationEvent(Sender: TObject; const ANotification: TPushServiceNotification); procedure OnServiceConnectionChange(Sender: TObject; AChange: TPushService.TChanges); procedure PushServiceRegister; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} const FAndroidServerKey = '13648316531'; procedure TForm1.OnReceiveNotificationEvent(Sender: TObject; const ANotification: TPushServiceNotification); const FCMSignature = 'gcm.notification.body'; GCMSignature = 'message'; APNsSignature = 'alert'; var aText: string; aObj: TJSONValue; begin // это событие срабатывает при открытом приложении {$IFDEF ANDROID} aObj := ANotification.DataObject.GetValue(GCMSignature); if aObj <> nil then aText := aObj.Value else aText := ANotification.DataObject.GetValue(FCMSignature).Value; {$ELSE} aObj := ANotification.DataObject.GetValue(APNsSignature); if aObj <> nil then aText := aObj.Value; {$ENDIF} ShowMessage(aText); end; procedure TForm1.OnServiceConnectionChange(Sender: TObject; AChange: TPushService.TChanges); begin if (TPushService.TChange.DeviceToken in AChange) and Assigned(FPushServiceConnection) then begin FDeviceID := FPushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID]; FDeviceToken := FPushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken]; MemoLog.Lines.Add('DeviceID - '+ FDeviceID); MemoLog.Lines.Add('DeviceToken - '+ FDeviceToken); end; end; procedure TForm1.PushServiceRegister; begin FPushService := nil; FPushServiceConnection := nil; {$IF defined(ANDROID)} FPushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.GCM); FPushService.AppProps[TPushService.TAppPropNames.GCMAppID] := FAndroidServerKey; {$ENDIF} {$IF defined(IOS) AND defined(CPUARM)} FPushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.APS); {$ENDIF} if Assigned(FPushService) then begin FPushServiceConnection := TPushServiceConnection.Create(FPushService); FPushServiceConnection.OnChange := OnServiceConnectionChange; FPushServiceConnection.OnReceiveNotification := OnReceiveNotificationEvent; FPushServiceConnection.Active := true; FDeviceID := FPushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID]; FDeviceToken := FPushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken]; MemoLog.Lines.Add('DeviceID - '+ FDeviceID); MemoLog.Lines.Add('DeviceToken - '+ FDeviceToken); end; end; procedure TForm1.FormCreate(Sender: TObject); begin PushServiceRegister; end; end. При регистрации пуш-сервиса строка FPushService.AppProps[TPushService.TAppPropNames.GCMAppID] := FAndroidServerKey; вызывает Segmentation Fault (11)
В 10.3 тот же самый код работает, дебаг ничего не дает, проваливаюсь в процедуру
procedure TPushService.SetAppProp(const AName, AValue: string); begin FAppProps.AddOrSetValue(AName, AValue); end; а внутрь AddOrSetValue уже не идет, сразу ошибка.
Если кто сталкивался, помогите плиз
-
gonzales получил реакцию от Ingalime в поломались ПУШи в 10.4
Нашел причину
В Library path для Андроид64 добавил путь E:\Embarcadero\Studio\21.0\source\rtl\android, где собственно и лежит Androidapi.JNI.PlayServices.Tasks.pas и все заработало.
Буду с iOS разбираться теперь