Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Pushwoosh phonegap插件,在ios上检索hwid_Javascript_Ios_Cordova_Pushwoosh - Fatal编程技术网

Javascript Pushwoosh phonegap插件,在ios上检索hwid

Javascript Pushwoosh phonegap插件,在ios上检索hwid,javascript,ios,cordova,pushwoosh,Javascript,Ios,Cordova,Pushwoosh,我正在使用pushwoosh向我的ios移动应用程序发送推送通知。我想允许用户禁用应用程序内的通知。我遇到的问题是,pushwoosh api在ios上使用的设备id与在android上使用的不同。设备id由插件使用本机代码创建。它使用硬件mac地址并应用md5算法创建phonegap调用“hwid”(硬件id)的“唯一”id。我已经找到了本机的objective c类来实现这一点,但我不知道如何从Javascript访问变量“hwid” 我已经阅读了phonegap,并创建了一个插件,允许我访

我正在使用pushwoosh向我的ios移动应用程序发送推送通知。我想允许用户禁用应用程序内的通知。我遇到的问题是,pushwoosh api在ios上使用的设备id与在android上使用的不同。设备id由插件使用本机代码创建。它使用硬件mac地址并应用md5算法创建phonegap调用“hwid”(硬件id)的“唯一”id。我已经找到了本机的objective c类来实现这一点,但我不知道如何从Javascript访问变量“hwid”

我已经阅读了phonegap,并创建了一个插件,允许我访问本机ios类。我的问题是我不知道objective c,因此无法找出如何将变量返回回调

pushwoosh api需要设备id才能注销设备,如下所示:

{
   "request":{
      "application":"APPLICATION_CODE",
      "hwid": "hardware device id"
   }
}
我看过这篇文章,它对我想要实现的目标毫无帮助。但是,它确实显示了创建唯一id的本机代码

我还找到了将hwid打印到控制台的类。如果我能找到一种方法从我的js代码中访问下面的“hwid”,我就万事大吉了

#import "PWRequest.h"

@implementation PWRequest
@synthesize appId, hwid;

- (NSString *) methodName {
return @"";
}

//Please note that all values will be processed as strings
- (NSDictionary *) requestDictionary {
        return nil;
}

- (NSMutableDictionary *) baseDictionary {
        NSMutableDictionary *dict = [NSMutableDictionary new];
    [dict setObject:appId forKey:@"application"];
    [dict setObject:hwid forKey:@"hwid"];
        NSLog(@"hwid: %@", hwid);

    return [dict autorelease];
}

- (void) parseResponse: (NSDictionary *) response {
}

- (void) dealloc {
    self.appId = nil;
    self.hwid = nil;

    [super dealloc];
}

@end

有人能给我指出正确的方向吗?谢谢。

我们刚刚为iOS Phonegap Javascript添加了unregisterDevice方法。 PushNotification.prototype.unregisterDevice=函数(成功,失败){ cordova.exec(成功、失败、“推送通知”、“注销设备”、[]); };

它过去只适用于Android,现在也可以在iOS上使用。 有关Phonegap 3.0,请参阅最新的Pushwoosh插件repo:


对于旧的Phonegap版本我找到了一个适合任何需要它的人的解决方案。只需在xcode中打开类“PWRequest.m”。将下面的代码添加到NSMutableDictionary方法中的“[dict setObject:hwid-forKey:@“hwid”];”下

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"hwidfile2.txt"];
NSLog(@"From Echo Class File Path: %@", filePath);
NSString *str = hwid;
这将把一个文本文件保存到本地应用程序目录中,您可以从Javascript代码访问该目录。例如,您可以使用此JS代码访问hwid并将其打印到控制台。只需调用“readPwfile(filename)”函数,将文件名作为函数参数传入即可

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

谢谢很高兴知道。不幸的是,我使用的是PhoneGap2.6,我有点害怕尝试从2.6升级到3.0。我将使用2.6完成此应用程序,并将切换到3.0进行未来开发。现在,我已经找到了一份工作。请参阅我发布的解决方案。