【问题标题】:Check if user is really a first time user检查用户是否真的是第一次使用的用户
【发布时间】:2015-07-04 03:14:10
【问题描述】:

我正在开发一个 Android 应用程序,所有内容都存储在本地。 (没有账户注册系统)。如果用户点击Settings > Applications > Manage Application 下的Clear dataClear cache 选项,由于本地存储已重置,将再次显示登录过程。

开发者必须通过哪些选项来检查用户是否真的是第一次使用并且不只是重置或重新安装应用程序?

【问题讨论】:

  • 使用 WebService(或简单地在服务器上上传文件)将信息永久存储在服务器上。
  • 不幸的是没有root

标签: android local-storage


【解决方案1】:

使用服务器 - 向服务器发送唯一的设备 ID 并保存其状态。

没有服务器(在您的情况下)- 重新安装/清除缓存后保存它的唯一选择是添加读/写sd卡的权限并将其隐藏在他不会删除的设备中。我已经将它隐藏在 data/data/my_package_name_backwords 中,如果我不这样做,那么当用户卸载我的应用程序时系统会删除这个文件夹。

【讨论】:

  • 好主意,但你如何向用户解释额外的权限?据我所知,使用 Android M,它将触发写入 SD 的“授予权限对话框”
  • 这取决于您的应用。尝试创建一个可能需要使用它的功能或类似的东西。
  • 你做得怎么样?你还是需要权限吗?
  • 好吧,在我的情况下,那是几年前的事了,无论如何我都需要它来作为第 3 方库。你可以试着用我的借口:)
【解决方案2】:

虽然我反对这样的实施,但由于用户有权“重置”应用程序并且重新访问第一个启动屏幕是预期行为,以下选项是可行的:

使用网络服务并在完成首次启动后存储设备 ID。启动应用程序时,检查设备 ID 是否已存在于数据库中。获取设备id可以参考this answer

【讨论】:

    【解决方案3】:

    不允许用户通过 ManageActivity 清除应用程序数据。允许用户仅通过应用程序删除数据。

    如果用户清除应用内的数据,下次用户启动应用时,将创建凭据并将其存储在本地!

    如果您不希望用户通过清除缓存来清除数据,请创建一个虚拟 Activity 来启动您的 MainActivity 并在清单中声明此标签!

        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:manageSpaceActivity="com.urapp.DummyActivity"
            android:theme="@style/AppTheme" >
    ...
    ...
    </application>
    

    就是这样!现在,当用户尝试清除数据时,它将启动您的 MainActivity!

    【讨论】:

    • Dont allow the user to clear the application data via ManageActivity 我的应用清单需要什么?
    猜你喜欢
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    • 2020-02-05
    • 2015-09-27
    相关资源
    最近更新 更多