我正在使用pushwoosh phonegap插件进行推送通知。注册成功后,我需要存储注册在“hwid”参数中使用的设备ID,以便我可以定位我使用相同设备ID发送的推送通知。这在Android上效果很好,因为看起来phonegap device.uuid与pushwoosh插件发送到他们的服务器的ID相同。但是,在ios上,device.uuid返回的ID不同于发送到pushwoosh的ID。我可以从Xcode控制台日志中看到插件发送到pushwoosh的hwid,但无法弄清楚他们从哪里获取此ID以及如何在phonegap中访问相同的ID。
编辑:我希望getRemoveNotificationStatus函数会返回此信息,但它实际上返回的次数少于registerDevice回调。
更新:好的,通过挖掘他们的插件代码,我看到他们在哪里构建他们发送到他们服务器的ID。不确定为什么无法通过phonegap插件访问此ID,因为这是我最终需要具有的ID,以便将推送通知定向到特定设备。
他们的代码:
(NSString *) uniqueDeviceIdentifier{
NSString *macaddress = [self macaddress];
NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];
NSString *stringToHash = [NSString stringWithFormat:@"%@%@",macaddress,bundleIdentifier];
NSString *uniqueIdentifier = [self stringFromMD5:stringToHash];
return uniqueIdentifier;
}
- (NSString *) uniqueGlobalDeviceIdentifier{
// >= iOS6 return identifierForVendor
UIDevice *device = [UIDevice currentDevice];
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.1")) {
if ([device respondsToSelector:@selector(identifierForVendor)] && [NSUUID class]) {
NSUUID *uuid = [device identifierForVendor];
return [uuid UUIDString];
}
}
// Fallback on macaddress
NSString *macaddress = [self macaddress];
NSString *uniqueIdentifier = [self stringFromMD5:macaddress];
return uniqueIdentifier;
}
答案 0 :(得分:3)
你确定你需要hwid吗?
当我使用Pushwoosh Remote API将推送消息发送到我使用“devices”标签定位的各个设备时,然后只提供我想要消息的设备的deviceToken。
设备令牌很容易访问,因为它是插件状态返回的一部分(status ['deviceToken'])。
答案 1 :(得分:0)
我发布了here.
我为任何需要此功能的人找到了解决办法。打开课程" PWRequest.m"在xcode中。在" [dict setObject:hwid forKey:@" hwid"];"下面添加下面的代码。在NSMutableDictionary方法中。
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory NSUserDomainMask,YES); NSString * documentsDirectory = [paths objectAtIndex:0]; NSString * filePath = [documentsDirectory stringByAppendingPathComponent:@" hwidfile2.txt"]; NSLog(@"来自Echo类文件路径:%@",filePath); NSString * str = hwid; 这会将文本文件保存到您可以从您的Javascript代码访问的本地应用程序目录中。例如,您可以使用此JS代码访问并将hwid打印到控制台。只需调用' readPwfile(filename)' function,传递文件名作为函数参数。
function readPWFile(fileName){
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){
fileSystem.root.getFile(fileName, null, gotReadFileEntry, fail);
});
function gotReadFileEntry(fileEntry) {
fileEntry.file(gotFile, fail);
}
function gotFile(file){
//readDataUrl(file);
readAsText(file);
}
function readAsText(file) {
var reader = new FileReader();
reader.onloadend = function(evt) {
console.log('Reading file... hwig Result: '+evt.target.result);
};
reader.readAsText(file);
}
}