Como o dobey disse, não há como obter o IMEI em aplicativos confinados, então desisti de tentar obter uma identificação com base no próprio dispositivo. Em vez disso, eu apenas gero um UUID e o armazeno no U1DB.
// uuid.js
.pragma library
function generateUUID(){
var d = new Date().getTime();
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = (d + Math.random()*16)%16 | 0;
d = Math.floor(d/16);
return (c === 'x' ? r : (r&0x3|0x8)).toString(16);
});
return uuid;
};
// Elsewhere
U1db.Database {
id: db
path: "settings"
}
U1db.Document {
id: user
database: db
docId: "user"
create: true
defaults: {
"userId": ""
}
}
// Somewhere I need the userId
Item {
id: thing
Component.onCompleted: {
userId: user.contents.userId
if (!userId) {
userId = Uuid.generateUUID()
var userContents = user.contents
userContents.userId = userId
user.contents = userContents
}
return userId
}
}