FeLDMARShaL
Пользователи-
Постов
144 -
Зарегистрирован
-
Посещение
-
Победитель дней
5
Весь контент FeLDMARShaL
-
По поводу скриншотов тут все просто, там есть спец инструмент для загрузки скриншотов, а вот последний пункт про значек с разрешением 1024*1024 вот инструкция взятая с форума абракадабры (я проверил, все работает, отправил новое приложение на публикацию): https://quality.embarcadero.com/browse/RSP-29692?focusedCommentId=85036&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-85036 В идеале бы ее конечно сюда перенести, но она такая большая, с картинками и со сложными вставками, что страшно ее переносить, вдруг что то не докопируется. В архиве есть пример приложения для публикации, всегда можно сделать по образу и подобию. Для компиляции надо использовать строчку: 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" sample_app.zip compiled_storyboard.zip asset_catalog.zip
-
В душе не знаю :), ниразу не пользовал и даже не устанавливал. Предполагаю проверить камунибуть и отписаться о результате. Вдруг что то забыл рассказать, но вроде все упомянул.
-
Расскажу о том как я добился нормальной фоновой работы приложения. В моем понимании нормальная фоновая работа приложения - это сохранять геокоординаты и систематически (по мере их накопления передавать на сервер). По сути у нас получился трекер. Те кто считают что iOS такое не умеет делать, и все что будет написано ниже это фейк лучше закройти эту тему. Итак начнем, по пунктам: 1) Добавляем к проекту ключ NSLocationAlwaysAndWhenInUseUsageDescription - для новых иОС это обязательно, начиная с 11 или 12 версии уже не помню 2) Сообщаем приложению о намерении что мы будем использовать геокоординаты в фоне (редактируем ключ UIBackgroundModes выставляя галочку напротив location) 3) Далее для того чтобы не поломать другие приложения которые используют геолокацию создаем специальную дерективу, которая будет сообщать о том что наше приложение будет использовать геолокацию в фоне, я ее назвал iOS_RequestAlwaysAuthorization 4) Дальше намного сложнее, нам нужно исправить исходники самой Delphi, а именно System.iOS.Sensors. Изменять будем процедуру TiOSLocationSensor.DoStart, все что отличается от стандартного у меня в рамках описания моей директивы: function TiOSLocationSensor.DoStart: Boolean; var I: Integer; begin {$ifdef iOS_RequestAlwaysAuthorization} if TOSVersion.Check(8) and (FLocater <> nil) then FLocater.requestAlwaysAuthorization; {$else iOS_RequestAlwaysAuthorization} if TOSVersion.Check(8) and (FLocater <> nil) then FLocater.requestWhenInUseAuthorization; {$endif iOS_RequestAlwaysAuthorization} // check authorization if Authorized = TAuthorizationType.atUnauthorized then SensorError(SLocationServiceUnauthorized); // check if location sensor is enabled if not FLocater.locationServicesEnabled then SensorError(SLocationServiceDisabled); // start location updates if (LocationChange = TLocationChangeType.lctLarge) and CanUseSignifChangeNotifs then FLocater.startMonitoringSignificantLocationChanges else FLocater.startUpdatingLocation; // start heading updates if CanUseHeading then begin FLocater.startUpdatingHeading; end; // start monitoring regions if CanMonitorRegions then for I := 0 to Regions.Count - 1 do FLocater.startMonitoringForRegion(ConvLocationRegion(Regions[I])); Result := FLocater.locationServicesEnabled; if Result then Result := Authorized = TAuthorizationType.atAuthorized; {$ifdef iOS_RequestAlwaysAuthorization} FLocater.setAllowsBackgroundLocationUpdates(True); FLocater.setPausesLocationUpdatesAutomatically(False); {$endif iOS_RequestAlwaysAuthorization} end; Собственно усе, можно наслаждаться фоновой работой. Все это работает под Delphi 10.2.3. На телефоне iPhone 6s под управлением iOS 11. Как было сказано выше, работает как геолокация так и инет и вообще все остальные процессы внтури приложения, такие как TTimer Собственно вот результат данного трекера: Если приблизить то можно увидеть насколько точно и часто он обновляет координаты: И да, огромное спасибо человеку с ником Artyom Karapetyan, именно он натолкнул на мысль того как надо правильно все сделать
-
Думаю тема стилизации этого индикатора раскрыта не полностью, но на текущий момент мне этого хватит. Было бы круто если значение переменной UndefinedThemeID=-1 перекочевало в основную ветку (т.к. тема со ид равным 0 - это именно штатная тема приложения, которая многими меняется)
-
После упорных попыток, не получилось подружить компонент с созданной темой, возможно ее ид как то не так получаю и ниже приведенный код возвращает что то не то themId := TAndroidHelper.Context.getResources.getIdentifier(StringToJString('styles_dialog'), StringToJString('layout'), TAndroidHelper.Context.getPackageName) Но реализовать нужно было пришлось пофиксить немного стандартные компоненты, и именно в части const UndefinedThemeID = -1; Теперь компоненты считаю что ThemeID=0 - это кастомная тема. После чего, вот такой код (и измненная стандартная тема приложения): if not Assigned(fg_my) then begin fg_my := TfgActivityDialog.Create(nil); fg_my.Theme := TfgDialogTheme.Custom; fg_my.ThemeID := 0; end; fg_my.Show; sleep(3000); fg_my.Hide; Приводят вот к такому результату (разумеется индикатор крутится как надо):
-
Ну собственно на этом усе, ждемс идей . Я верю в силу коллективного разума
-
Собственно вот сам мини проект: test.zip
-
Коллеги. Я верю в коллективный разум. Требуется изменить визуально индикатор прогресса. Для этого к проекту необходимо подгружать стили. За основу я взял тему http://manjunath4android.blogspot.ru/2015/12/display-progress-dialog-without-text.html Будем менять индикатор на тот который указан в теме. Что было сделано с моей стороны: 1) Прилинковал все необходимые фалы к нашему проекту 2) Проконсультировался с разработчиком компонентов Полазил по исходникам, в результате чего понял что поменять стиль в текущей реализации уже должно получится. Для этого есть 2 свойства у класса TfgActivityDialog: Theme и ThemeID. Если со свойством Theme все понятно, его необходимо задать как TfgDialogTheme.Custom, то с ThemeID не так все просто. На просторах интернета нашел что это такое (R.layout.my_progress) и вроде бы даже перевел на Pascal: TAndroidHelper.Context.getResources.getIdentifier(StringToJString('my_progress'), StringToJString('layout'), TAndroidHelper.Context.getPackageName), но в конечном итоге имеем вот это: А ожидается вот это: На кнопку которая должна отобразить индикатор активности повесил вот такой код: procedure TmainForm.Button1Click(Sender: TObject); var fg: TfgActivityDialog; themId: Integer; begin themId := TAndroidHelper.Context.getResources.getIdentifier(StringToJString('my_progress'), StringToJString('layout'), TAndroidHelper.Context.getPackageName); fg := TfgActivityDialog.Create(Self); try if themId<>0 then begin fg.Theme := TfgDialogTheme.Custom; fg.ThemeID := themId; fg.Title := 'Title'; fg.Message := 'Message'; Button1.Text := 'TfgDialogTheme.Custom' end else Button1.Text := 'TfgDialogTheme.Auto'; fg.Show; sleep(3000); fg.Hide; finally FreeAndNil(fg); end; end;
-
Да не вопрос, я даже в quality центр написал об ошибке
-
Задал вопрос на форуме абракадабры https://forums.embarcadero.com/thread.jspa?messageID=894743#894743 посмотрим, может местные гуру подскажут чтонибуть
-
Вроде бы тривиальная задача получить строку с токеном оплаты (PKPayment-PKPaymentToken-transactionIdentifier: NSString) но блин, как то все сложно и ничего не работает
-
У меня уже руки опускаются, незнаю что делать. Явно не хватает опыта нативной разработки под iOS
-
Немного изменил подход. Создал свой класс Класс интерфейс PKPaymentAuthorizationViewControllerDelegate полученный посредством SdkTransform.exe: Процедура (одна из): При попытке создать экземпляр класса LDelegate := TMyViewDelegate.Create; выскакивает ошибка Я так понимаю что SdkTransform.exe неправильно создал заголовки нативных функций, и надо вручную их поправить. Есть идеи как это сделать? В инете нашел решение изменить объявление процедур на TPassKitCompletion1 = procedure(param1: PKPaymentAuthorizationStatus); cdecl; но мне это не помогло, ошибка остается
-
Результат который я должен передать в процессинговый центр находится в структуре PKPaymentAuthorizationControllerDelegate в переменной с типом PKPayment
-
Требуется реализовать поддержу Apple Pay. Договор с процессинговым центром уже есть. Ему необходимо передать Token запроса, который можно получить используя SDK PassKit Штатных заголовков нет, поэтому я выгрузил iOSapi.PassKit.pas с самого SDK, в итоге получил вот следующий файл. Что было выяснено: 1) Необходимо сгенерировать запрос на платеж PKPaymentRequest (ГОТОВО, правда почему то пока не получается добавить потдерживаемые платежные системы (setSupportedNetworks) и строки позиций (setPaymentSummaryItems) но на текущем этапе это не так важно и может подождать) 2) Необходимо создать PKPaymentAuthorizationViewController и обрабатывать результат его работы в PKPaymentAuthorizationViewControllerDelegate. А вот с этим возникли трудности из за отсутствия опыта. Может быть есть у кого нибуlь опыт по работе с SDK iOS. т.е. у нас есть PKPaymentAuthorizationViewControllerClass = interface(UIViewControllerClass) PKPaymentAuthorizationViewController = interface(UIViewController) TPKPaymentAuthorizationViewController = class PKPaymentAuthorizationViewControllerDelegate = interface(IObjectiveC) и их надо как то вместе соединить. На текущий момент у меня получилось примерно следующее: Валится на строчке FMainWindow.rootViewController.presentViewController(LocalPKPaymentAuthorizationViewController, True, ViewControllerCompletion); Буду рад любой помощи, даже ссылкам на документы которые позволят мне в этом разобраться. iOSapi.PassKit.rar
-
Вы говорите про иконки, а я про сплеш. Сплеша всего 4 типа же (сам гугл так говорит) Если сделать как Вы сказали (подогнать границы непосредственно под картинку, тогда пикселизация еще больше усилится
-
Да, все. Да, все правильно (чтобы откинуть такие предположения и скинул пример своих картинок (все 4 кстати)
-
скачал Viki.Bar - проблема тточно такаеже, картинка пикселизируется на сплеше, растягивается не все просто видят это, в моем случае заказчик разглядел
-
А можете скинуть картинки которые использовал или скриншот сделать сплеш скрина на телефоне или ссылку на приложение в маркете, я установлю и посмотрю как оно выглядит? Может просто на конкретной картинке не заметно как она растягивается
-
Коллеги, есть идеи из за чего такое может быть?
-
У меня девайс нексус 5, и там довольно большое разрешение и картинка на самом деле без растяжении должна выглядеть примерно так как на рисунке ниже (сверху). Непонятно почему на сплеше он его растягивает, причем всегда в независимости от типа сплеша.
-
А вот как получается при запуске