【问题标题】:Uninstall ReactNative App - Clean User Data卸载 React Native App - 清除用户数据
【发布时间】:2020-11-29 18:49:16
【问题描述】:

我想在卸载时清理保存在 Mobile 中的用户 AuthData。 AuthData 使用 AsyncStorage 保存。 有什么机制可以让我在 ReactNative 中检测 App Uninstall

【问题讨论】:

  • 应用程序保存的 AsyncStorage 应该在应用程序卸载时自动清除,至少在 iOS 上是这样。我不确定 Android 上的行为是什么。
  • 你确定@jevakallio 吗?我的理解(我可能完全错了)是 AsyncStorage 数据可跨应用程序使用,这就是为什么最佳实践是使用 @AppName:key 之类的名称来命名您的密钥。这是我从Learning React Native一书中摘录的,“AsyncStorage 使用的存储键可以是任何字符串;习惯上使用@AppName:key 格式,如下所示:”

标签: react-native


【解决方案1】:

似乎不可能,尤其是当您的应用在卸载时未运行时。不过,您似乎可以采取几种方法,但都不是完美的。

  1. 如果您的应用正在运行,您可以收听UIApplicationWillTerminateNotification(请参阅Detect iOS application about to delete?
  2. 使用推送通知反馈服务(见Delegate Method when Deleting App

【讨论】:

    【解决方案2】:

    对我来说这个解决方案(快速代码):https://stackoverflow.com/a/40732677/3151214

    变量userDefaults (NSUserDefaults)可以通过Settings in React Native访问,所以javascript实现可以是这样的:

    import { Platform, Settings } from 'react-native';
    
    function getAuthData() {
        let isStoreNeedCleaning = false;
    
        if (Platform.OS === 'ios') {
            if (!Settings.get('hasRunBefore')) {
                Settings.set({ hasRunBefore: true });
                isStoreNeedCleaning = true;
            }
        }
    
        if (isStoreNeedCleaning) {
            // Clean up your store
        } else {
            // Load auth data from store
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-12
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多