0

inscrit Je construis une application kiosque chrome ReactJS qui a besoin d'accéder au deviceId de l'appareil, il est en cours d'exécution sur des fins d'exploitation forestière. J'utilise le code suivant pour appeler chrome.enterprise.deviceAttributes.getDirectoryDeviceId:chrome.enterprise.deviceAttributes.getDirectoryDeviceId ne fonctionne pas sur Chromebox

const getDeviceId = (cb) => { 
    if (!chrome.enterprise) { 
    if (cb) { 
     cb(); 
    } 

    return; 
    } 

    // get device id 
    chrome.enterprise.deviceAttributes.getDirectoryDeviceId(assetId => { 
    deviceId = assetId; 

    if (cb) { 
     cb(); 
    } 
    }); 
}; 

Ensuite, la fonction est appelée en faisant quelque chose le long de ces lignes:

getDeviceId(() => { 
    debug('Got device id: %s', deviceId); 
}); 

Maintenant, je sais que ce code peut fonctionne uniquement sur un appareil ChromeOS inscrit. Je sais également que chrome.enterprise.deviceAttributes est uniquement disponible pour les extensions pré-installées par la stratégie. Pour cette raison, je ne peux le tester qu'après avoir été envoyé au magasin ChromeOS et installé via le tableau de bord du développeur. Longue histoire courte: le code ci-dessus ne retourne pas le deviceId et ceci fait échouer tous mes appels d'api, je ne peux pas vraiment le déboguer parce qu'il est installé comme une application de kiosque. Je me demandais si quelqu'un ici pouvait me dire ce que je fais de mal et comment je peux réparer ça.

Merci d'avance!

+0

débogage Essayez en exécutant Chrome --whitelisted-extension id = ....... L'API peut obtenir activé. – wOxxOm

Répondre

0

Mon problème était que j'utilisais le code en fonction synchrone alors qu'il est une fonction asynchrone. Pour l'utilisation correcte, regardez la réponse de Tom Dunn ici.

3

Je soupçonne que vous pourriez ne pas avoir la "enterprise.deviceAttributes" permission déclaré dans votre manifest.json:

"permissions": [ 
    "enterprise.deviceAttributes" 
    ], 

Cette autorisation est listé dans la section supérieure de la page API: https://developer.chrome.com/extensions/enterprise_deviceAttributes#intro

Je suis l'exécution de ce JavaScript intérieur de la fenêtre de contenu que je crée dans mon application Chrome et il fonctionne bien:

chrome.enterprise.deviceAttributes.getDirectoryDeviceId(deviceId => { 
    let publicDeviceId = document.getElementById('publicDeviceId'); 
    publicDeviceId.innerText = deviceId; 
}); 

il retourne la valeur indiquée sur Chrom e page Détails des périphériques dans la console de gestion> Gestion des périphériques> Périphériques Chrome> Périphérique page de détail - section: Matériel et OS> Répertoire ID API. C'est un GUID.

L'API fonctionne pour les applications Chrome (le seul endroit où je l'ai testé), même si la documentation de l'API redirige vers la page des extensions.

+0

Je vous upvoted que vous montrez l'utilisation correcte du code, mais mon problème était acutally que j'utilisais le code synchrone alors qu'il est le code asynchrone. :) acclamations – sjaap2

+0

Merci de remarquer le bit d'autorisations - qui était le peu que je manqué ce qui a provoqué l'appel de l'API à l'échec. – cheeze