Cordova 设备 UUID 是否与电容器设备 UUID 相同?

Is the Cordova Device UUID the same as the Capacitor Device UUID?

我们正在从 Ionic Cordova 应用程序迁移到 Ionic Capacitor 应用程序。虽然我知道 Capacitor 仍然支持 Cordova 插件,但我们尝试尽可能多地迁移。

我们的应用程序依赖于 Cordova 设备插件提供的设备 UUID。这个和Capacitor提供的设备UUID一样吗?我试图比较两个存储库,但我不完全确定 Android 是否实际上相同(下面给出的方法中的第一个参数是什么)?

这是我的比较:

iOS科尔多瓦:

[[device identifierForVendor] UUIDString]

来源:https://github.com/apache/cordova-plugin-device/blob/2fc1d3cac0ed37a37de6a6aa18e7955342037a1d/src/ios/CDVDevice.m#L52-L74

Android科尔多瓦:

Settings.Secure.getString(this.cordova.getActivity().getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);

来源:https://github.com/apache/cordova-plugin-device/blob/2fc1d3cac0ed37a37de6a6aa18e7955342037a1d/src/android/Device.java#L111-L114

iOS 电容:

UIDevice.current.identifierForVendor!.uuidString

来源:https://github.com/ionic-team/capacitor-plugins/blob/0bcd833a6503061be45253b21fca9bd75576efc8/device/ios/Plugin/DevicePlugin.swift#L28

Android电容:

Settings.Secure.getString(this.context.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);

来源:https://github.com/ionic-team/capacitor-plugins/blob/0bcd833a6503061be45253b21fca9bd75576efc8/device/android/src/main/java/com/capacitorjs/plugins/device/Device.java#L43-L45

iOS

一样。 iOS 的唯一区别是访问 uuidString 的方式。 Cordova 插件是用 Objective-C 编写的,而 Capacitor 插件是 Swift。不过两者应该返回相同的值。

Android

Android 插件似乎也引用相同的值,只是方式不同。两者都将来自应用 Activity 上下文的内容解析器作为第一个参数传递给 Settings.Secure.getString()this.context.getContentResolver()this.cordova.getActivity().getContentResolver() 之间的区别在于访问上下文的方式(Android 开发中的一个大 topic)。

Cordova 插件

来自 Cordova 插件 guidelines,

getContext() and getActivity() can return the required Context object

电容器插件

如果您查看 Capacitor 插件的代码,file that is the main entry point calls getContext() and directly passed it to the Device() constructor

简而言之,两者指的是相同的 Activity 上下文。 this.context 等同于 this.cordova.getActivity()