Перейти к содержанию
  • Регистрация

Maka

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

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

  • Посещение

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

    3

Maka стал победителем дня 26 сентября

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

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

  • Звание
    Пользователь

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

Блок последних пользователей отключён и не показывается другим пользователям.

  1. Отвечают долго, 10-14 дней, а потом еще около 7 дней переписка, проверки и ожидание решения. Наберитесь терпения
  2. Самым простым решением оказалось исправление файла System.StartUpCopy. Там комментариями разработчики явно указали, где код отвечающий за перезапись
  3. Добрый день. Подскажите, как сделать так, чтобы при обновлении приложения из PlayMarket, подключенные через Deploy Manager файлы перезаписывались?
  4. добавление поддержки подписки в FMX: http://delphitoptips.blogspot.com/2018/03/supporting-in-app-purchase.html
  5. Оказыватся печаль (
  6. По поводу ошибки с подпиской нашел вот такое решение в случае Java: Т.е. получается что, скорее всего, внутри у TInAppPurchase, для подписки, используется не верный метод? И как быть? Я же туда залезть не могу. Или я все не верно понимаю?
  7. Maka

    Работа с TInAppPurchase

    При работе с TInAppPurchase в Андроид обнаружился ряд проблем. Подскажите, есть ли способы борьбы с ними? Делаю так: var InAppPurchase: TInAppPurchase; InAppPurchase := TInAppPurchase.Create(nil); InAppPurchase.ApplicationLicenseKey := 'MIIBIjANBgkqhk.....'; InAppPurchase.SetupInAppPurchase; InAppPurchase.ProductIDs.Add('prod_subscribe'); // подписка InAppPurchase.ProductIDs.Add('prod_once'); // ограниченный контент InAppPurchase.QueryProducts; 1. Проблема с ограниченным контентом: покупаем ограниченный контент: InAppPurchase.PurchaseProduct('prod_once'); штатно приходит OnPurchaseCompleted. После этого вызываем InAppPurchase.ConsumeProduct('prod_once') Приложение молча падает, хотя продукт успешно "консумится" на сервере и его опять можно покупать. 2. Проблема с подпиской: Покупаем ее: InAppPurchase.PurchaseProduct('prod_subscribe'); на серверах гугла подписка оформляется, деньги списываются, однако приходит OnError с сообщением: "labResult: IAB returned null purchaseData or dataSignature (responce: Unknown error)" теперь до перезагрузки приложения, все запросы: InAppPurchase.IsProductPurchased('prod_subscribe') возвращают False, а вызов InAppPurchase.QueryProducts закрывает приложение.
  8. Всем привет. Подскажите, почему андроид приложение не может создать папку: ForceDirectories(System.IOUtils.TPath.GetSharedDocumentsPath + '/FRead_Backup/'); (разрешение Write external storage стоит)
  9. Быть может это натолкнет более опытных товарищей на какую-нибудь идею, решающую проблему: Удалось понять, что на скриншот не попадают элементы, для которых доступна работа со стилями, и прекрасно перерисовываются элементы без стилей (Effects, Shapes)
  10. И кстати. В реализации MakeScreenshot уже присутствует PaintTo
  11. По поводу корректности MakeScreenshot в данном сценарии - это предположение, или личный опыт? У меня получается так: Отображаю нужный контрол за пределами экрана, отлавливаю OnPaint контрола, и в нем делаю MakeScreenshot. В результате какие-то элементы попадают на скриншот (например TCharts, TRectangle, ), а какие-то нет (например кнопки, эдиты). Эффект тени от кнопки попадает, а сама кнопка нет.. И прочие чудеса.
  12. Возможно так и придется поступить Нет, не пойдет, т.к. содержимое выводимых контролов постоянно меняется, и будет чехорда из "красивых" и "некрасивых" вариантов вывода Вот, видоизменил код Ярослава Бровина для сохранения скриншота: procedure ActionMakeScreenshotExecute(aCtr: TControl); var BitmapBuffer: TBitmap; SourceRect: TRectF; begin aCtr.Visible := True; aCtr.BringToFront; aCtr.Opacity := 1; // Фиксируем размер снимаемой области SourceRect := TRectF.Create(0, 0, aCtr.Width, aCtr.Height); // Создаем временный буфер для получения скриншота BitmapBuffer := TBitmap.Create(Round(SourceRect.Width), Round(SourceRect.Height)); try // Переводим канву в режим отрисовки - начинаем процесс отрисовки сцены if BitmapBuffer.Canvas.BeginScene then try // Говорим контролу отрисовать себя в канве нашего буфера в указанной области aCtr.PaintTo(BitmapBuffer.Canvas, SourceRect); finally // Завершаем процесс отрисовки, заканчивая формируемую сцену BitmapBuffer.Canvas.EndScene; end; BitmapBuffer.SaveToFile(DateDir + 'screenshot1.png'); finally FreeAndNil(BitmapBuffer); end; end; И если мы сюда отправим еще не отрисованный контрол, то получим пустой скриншот, а последующие вызовы будут сохранять не текущее, а последнее нарисованное состояние контрола. Или есть другой способ воспользоваться PaintTo?
  13. так и делаю, и вопрос в том и заключается, как ее правильно заранее подготовить
  14. Ситуация такая. Я хочу отобразит некий фрейм с кучей компонентов с использованием плавного проявления (анимация свойства Opacity) Если анимировать на прямую, то объекты фрейма проявляются не равномерно, и вообще выглядит не красиво. Выход: Сделать скриншот фрейма, плавно и красиво его показать, потом скрыть и на его место поместить целевой фрейм. Скриншот делаю с помощью MakeScreenshot. Однако в результате получаю картинку фрейма на момент последнего появления на экране, а если он еще не был отрисован, то пустую картинку. Но ведь мне надо снять сриншот до отрисовки. Пробовал делать MakeScreenshot в событии onPaint фрейма, и там же его скрыть сразу. Действует, но периодически получается моргание, из-за того, что фрейм все же на долю секунды появляется на экране. Пробовал делать Repaint рекурсивно для фрейма и всех дочерних элементов перед снятием скриншота: procedure Repchild(aCtr: TControl); var xA: SmallInt; begin aCtr.Repaint; for xA := 0 to aCtr.ChildrenCount - 1 do if aCtr.Children[xA] is TControl then Repchild(Tcontrol(aCtr.Children[xA])); end; без результатно. Подскажите, как отрисовать TContro без вывода на экран?
×
×
  • Создать...