You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cordova.apache.org by "Jesse MacFadyen (JIRA)" <ji...@apache.org> on 2012/10/24 12:14:11 UTC

[jira] [Commented] (CB-1702) device.uuid should use HardwareIdentification.GetPackageSpecificToken, not utils.createUUID

    [ https://issues.apache.org/jira/browse/CB-1702?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13483116#comment-13483116 ] 

Jesse MacFadyen commented on CB-1702:
-------------------------------------

We have to be careful because the packageSpecificToken may be affected by hardware changes, including docking/undocking, adding removing usb devices, ...

Generating our own id and storing it in a persistent location is probably 'good enough' as there is no need to identify an app/device beyond an un-install.
The uuid should however survive an application update.

My advice is to move the uuid from localStorage which can be wiped simply by calling localStorage.clear() to a known file on the filesystem.
ie.
on load, synchronously check if the file 'appDeviceIdentifier.txt' exists
if so, read it's string uuid value and use it,
otherwise, generate a uuid, and write it to the file 'appDeviceIdentifier.txt'



                
> device.uuid should use HardwareIdentification.GetPackageSpecificToken, not utils.createUUID
> -------------------------------------------------------------------------------------------
>
>                 Key: CB-1702
>                 URL: https://issues.apache.org/jira/browse/CB-1702
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Windows 8
>            Reporter: Matt Baxter-Reynolds
>            Assignee: Jesse MacFadyen
>
> The current implementation creates a device ID and puts it in localStorage:
>         // deviceId aka uuid
>         var deviceId = localStorage.deviceId;
>         if(!deviceId) {
>             deviceId = utils.createUUID();
>             console.log(deviceId);
>             localStorage.deviceId = deviceId;
>         }
> This should more properly use WinRT's HardwareIdentification class, e.g.
> private string GetHardwareId()
> {
> var token = HardwareIdentification.GetPackageSpecificToken(null);
> var hardwareId = token.Id;
> var dataReader = Windows.Storage.Streams.DataReader.FromBuffer(hardwareId);
> byte[] bytes = new byte[hardwareId.Length];
> dataReader.ReadBytes(bytes);
> return BitConverter.ToString(bytes);
> }
> (I appreciate that's C# - I've cribbed it from another project, but this should work in WinJS.)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira