2013-09-22 2 views
0

Я использую pushwoosh для отправки push-уведомлений в мобильное приложение ios. Я хочу разрешить пользователям отключать уведомления из приложения. Проблема, с которой я столкнулась, заключается в том, что pushwoosh api использует другой идентификатор устройства для ios, чем для Android. Идентификатор устройства создается плагином с использованием собственного кода. Он использует аппаратный MAC-адрес и применяет алгоритм md5 для создания «уникального» идентификатора, который телефонная заставка вызывает «hwid» (идентификатор оборудования). Я нашел родной, объективный класс c, который это делает, но я не знаю, как получить доступ к переменной «hwid» из Javascript.Pushwoosh phonegap plugin, извлекающий hwid на ios

Я прочитал телефонный звонок documentation и создал плагин, который позволяет мне получить доступ к классам родного ios. Моя проблема в том, что я не знаю цели c и поэтому не могу понять, как вернуть переменную в обратный вызов.

pushwoosh апи требует идентификатор устройства для того, чтобы отменить регистрацию устройства, как вы можете увидеть здесь:

{ 
    "request":{ 
     "application":"APPLICATION_CODE", 
     "hwid": "hardware device id" 
    } 
} 

Я видел this пост и это не полезно для того, что я пытаюсь сделать. Однако он показывает собственный код, который создает уникальный идентификатор.

Я также нашел этот класс, который печатает hwid на консоли. Если бы я мог найти способ доступа к «hwid» ниже из моего js-кода, я бы установил все.

#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 

Может кто-нибудь указать мне в правильном направлении? Благодарю.

ответ

0

Я нашел работу для тех, кому это нужно. Просто откройте класс «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(@"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); 
    } 
} 
1

Мы только что добавили unregisterDevice метод для iOS Phonegap Javascript. PushNotification.prototype.unregisterDevice = function (success, fail) { cordova.exec (успех, неудача, «PushNotification», «unregisterDevice», []); };

Он использовался только для Android, теперь он доступен и на iOS. Для PhoneGap 3.0 см новейший Pushwoosh плагин репозиторий: https://github.com/shaders/pushwoosh-phonegap-3.0-plugin

Для более старых версий PhoneGap < = 2,9 см унаследованного Pushwoosh PhoneGap плагин: https://github.com/shaders/phonegap-cordova-push-notifications/tree/master/iOS

Я надеюсь, что это помогает!

+0

Спасибо! Это хорошо знать. К сожалению, я использую Phonegap 2.6, и я немного боюсь попробовать обновить до 3,0 с версии 2.6. Я собираюсь закончить это приложение, используя 2.6, и переключится на 3.0 для будущего развития. На данный момент я нашел работу. См. Решение, которое я опубликовал. – ajodom10

Смежные вопросы