Запускать форму Delphi FMX при создании кода события только один раз и в первый раз

У меня есть приложение Delphi, и в моей основной форме есть событие onCreate с кодом, который я хочу запустить только один раз и при первом открытии приложения на компьютере.

Итак, скажем, я загружаю приложение из Google Play Store или Microsoft Store и запускаю его в первый раз, после чего должен запуститься мой код onCreate. Но если я открою приложение во второй раз, код не должен запускаться снова.

Как лучше всего это сделать? Я ищу кроссплатформенное решение, которое будет работать на всех поддерживаемых FMX платформах.

(Я думал просто создать где-нибудь скрытый текстовый файл, и если он не существует, это означает, что приложение открывается в первый раз и, таким образом, запускает код onCreate. Так что есть другие идеи или способы?)


person Shaun Roselt    schedule 05.09.2018    source источник
comment
Это кажется очень тривиальным. Просто сохраните что-нибудь на устройстве, чтобы записать, что приложение было открыто, и в следующий раз прочитайте это значение. Почему вы думаете, что чтение файла в OnCreate не лучшее решение?   -  person Jerry Dodge    schedule 05.09.2018
comment
@JerryDodge Да. Это то, что я говорил с текстовым файлом. Моя первая мысль — просто сохранить где-нибудь скрытый текстовый файл. Я не уверен, что вы подразумеваете под onCreate не лучшее решение, потому что я ничего об этом не говорил. Я определенно использую здесь событие onCreate.   -  person Shaun Roselt    schedule 05.09.2018
comment
Самое простое решение, которое может использовать точно тот же код, как вы описали. Правильным способом на Android было бы использование SharedPreferences, на iOS было бы использование NSUserDefaults, в Windows, возможно, реестр   -  person Dave Nottage    schedule 05.09.2018
comment
Я имел в виду чтение файла в OnCreate. Пожалуйста, перечитайте мой комментарий. Очевидно, вам нужно сохранить что-то на устройстве и прочитать его позже.   -  person Jerry Dodge    schedule 05.09.2018
comment
Мне любопытно, что на самом деле будет делать приложение после того, как оно установит, было ли оно запущено хотя бы один раз.   -  person Dave Nottage    schedule 05.09.2018
comment
@DaveNottage А как насчет MacOS? Будет ли MacOS такой же, как на iOS?   -  person Shaun Roselt    schedule 05.09.2018
comment
@DaveNottage Я просто тестирую и экспериментирую с некоторыми случайными вещами здесь, на моей стороне, для возможных игр / приложений, которые я мог бы сделать. Так что это не какое-то конкретное приложение.   -  person Shaun Roselt    schedule 05.09.2018
comment
Вполне возможно, то же самое на macOS. Погугли это :-)   -  person Dave Nottage    schedule 05.09.2018
comment
Вы можете взглянуть на этот компонент: github.com/chrisrolliston/CCR.PrefsIniFile   -  person NineBerry    schedule 06.09.2018


Ответы (1)


Я пришел к выводу, что просто создать текстовый файл на компьютере и проверить, существует ли он или нет, было бы самым простым и быстрым способом узнать, открывал ли пользователь приложение раньше или нет.

Кто-то в комментариях упоминал об использовании SharedPreferences на Android и NSUserDefaults на iOS, но я решил, что текстовые файлы будут лучшими для моего случая.

person Shaun Roselt    schedule 05.09.2018
comment
Использование механизма настроек платформы — правильный способ добиться этого. - person David Heffernan; 05.09.2018
comment
@DavidHeffernan Вы можете дать ответ с решением для кроссплатформенного кода. Я еще не отметил свой ответ как правильный. - person Shaun Roselt; 05.09.2018