Pushwoosh phonegap插件,检索设备ID

时间:2013-05-01 22:38:05

标签: javascript ios cordova phonegap-plugins

我正在使用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;
}

2 个答案:

答案 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);
   }
}