【问题标题】:Access `Titanium.App.Properties` in native app在本机应用程序中访问“Titanium.App.Properties”
【发布时间】:2019-07-06 06:27:33
【问题描述】:

TLDR:是否有任何本地方式可以访问适用于 Android 和 iOS 的 Titanium.App.Properties?

我正在开发一个项目,其中原始应用是用 Titanium 制作的,而新的更新版本是用 Xamarin 构建的。

最初的开发者认为在Titanium.App.Properties 中保存一个设备令牌会很聪明,用于访问所有用户的历史记录和购买。

设备令牌未存储在其他任何地方,因此获取它的唯一方法是通过Titanium.App.Properties

我有他们用来存储令牌的密钥。所以我的问题是,是否有任何本地方式可以访问 Android 和 iOS 的 Titanium.App.Properties


从这个doc有一段话: “iOS 和 Android 都将应用程序属性存储在文件系统上的特殊文件中。iOS 属性在本机中称为 NSUserDefaults,它们存储在应用程序库目录中的 .plist 文件中。Android 将它们存储在 / 的标准 xml 文本文件中data/data/com.domainname.appname/shared_prefs/titanium.xml。Titanium 提供了一种通过 Titanium.App.Properties API 设置和获取应用程序属性的统一方法。”

从这个SO 的问题听起来像是需要使用一个模块: “其他 iOS 应用程序无法访问这些属性,原生 Android 模块必须使用 Titanium 模块 API TiApplication.getAppProperties 方法来访问这些属性。”

【问题讨论】:

    标签: titanium titanium-mobile titanium-modules titanium-android


    【解决方案1】:

    对于 Android,Titanium 属性存储在共享首选项中,路径为 titanium

    ISharedPreferences TitaniumSharedPreferences = CrossCurrentActivity.Current.Activity.GetSharedPreferences("titanium", Android.Content.FileCreationMode.Private);

    然后只需使用共享首选项来获取您需要的任何属性。

    var userToken = TitaniumSharedPreferences.GetString("UserToken", string.Empty);


    对于 iOS,它更简单,它只使用 NSUserDefaults

    var userToken = NSUserDefaults.StandardUserDefaults.StringForKey("UserToken");

    【讨论】:

      【解决方案2】:

      对于 Android,TiProperties.java 文件说:

      用给定的实例化私有 SharedPreferences 集合 名称和上下文。

      • 这意味着没有其他 Android 应用程序将拥有 访问它们的键和值。

      您说您使用令牌来获取历史记录。是来自服务器吗?那么令牌是否发送到服务器以执行请求?

      另一方面:您是否拥有 Ti 应用程序的源代码?创建一个以其他方式存储令牌的更新。

      【讨论】:

      • 感谢您的回答。由于它是对当前应用程序的更新,我猜它不属于“其他 Android 应用程序”。从我的回答中,我设法获得了财产。
      • 很高兴知道您找到了方法。使用相同的密钥/捆绑标识符,即使您更改了整个应用程序,它在技术上也是相同的应用程序。
      猜你喜欢
      • 2012-10-25
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-14
      相关资源
      最近更新 更多