device.uuid не определен в PhoneGap на Android? - PullRequest
4 голосов
/ 21 мая 2010

Я пишу приложение PhoneGap, которое отправляет запросы в центральную базу данных. Он должен быть в состоянии идентифицировать уникальные устройства, которые к нему подключаются.

Свойство PhoneGap device.uuid , похоже, поможет. На webOS и iPhone я получаю уникальную строку буквенно-цифровых символов, которая удовлетворит мою потребность. Однако устройства Android, которые я тестировал (Motorola Droid и эмулятор Android SDK, оба работают под управлением Android 2.1), возвращают "undefined" как device.uuid.

device.platform и device.name возвращают правильные значения на всех трех платформах, поэтому проблема не связана с самим объектом device (он определен в блоках кода, где я его использую).

Это ограничение Android? Проблема с PhoneGap?

Есть ли другой способ получить такой глобально уникальный идентификатор, если не через device.uuid?

РЕДАКТИРОВАТЬ: Похоже, что событие deviceready никогда не запускается, что должно произойти до того, как свойство device.uuid станет доступным.

Ответы [ 4 ]

3 голосов
/ 28 октября 2014

В зависимости от версии PhoneGap и / или устройства, вам может потребоваться установить плагин явно. В нашем проекте устройство присутствовало, но device.uuid не было определено. Запуск cordova plugin add org.apache.cordova.device исправил проблему в нашем случае.

1 голос
/ 27 июля 2010

Я пока не нашел решения для этого, но стоит отметить, что эта проблема исправлена ​​в Android 2.2.Но кроме этого вам придется найти какой-то другой способ получения уникального идентификатора устройства, если устройство работает с версией 2.1 или более ранней.

0 голосов
/ 01 июля 2016

это работает для меня:

первая установка плагина устройства:

cordova plugin add cordova-plugin-device

и в моем index.js у меня есть это:

var app = {
    initialize: function() {
        $.support.cors = true;
        this.bindEvents();
    },
    bindEvents: function() {
        document.addEventListener('deviceready', this.onDeviceReady, false);
    },
    onDeviceReady: function() {
        app.receivedEvent('deviceready');
    },
    receivedEvent: function(id) {
        console.log('Received Event: ' + id);
    },   
    getDeviceInfo: function() {
        var aio = new Object();
        aio.agent = device.platform + "," + device.version + "," + device.model;
        aio.deviceid = device.uuid;
        return aio;
    }
};
app.initialize();

module.controller('AppController',function($scope) {
    console.log('GOOOO');
    ons.ready(function() {
        console.log("ons ready");

        var appInfoObj = app.getDeviceInfo();
        console.log("Agent: " + appInfoObj.agent);
        console.log("UUID: " + appInfoObj.deviceid);
    });
});
0 голосов
/ 21 февраля 2013

У меня была такая же проблема. Это работало ранее, и я в конечном итоге отследил проблему до разрешения манифеста.

Если android.permission.ACCESS_NETWORK_STATE не включено, deviceready не будет срабатывать, а device.uuid будет недоступно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...