1

プッシュ通知に pushwoosh phonegap プラグインを使用しています。登録が成功したら、登録で使用したデバイス ID を「hwid」パラメーターに保存して、同じデバイス ID で送信するプッシュ通知をターゲットにできるようにする必要があります。phonegap device.uuid は、pushwoosh プラグインがサーバーに送信する ID と同じであるように見えるため、これは Android でうまく機能します。ただし、ios では、device.uuid は pushwoosh に送信されるものとは異なる ID を返します。プラグインが pushwoosh に送信している hwid を Xcode コンソール ログから確認できますが、この ID をどこから取得しているか、phonegap 内で同じ ID にアクセスする方法がわかりません。

編集: getRemoveNotificationStatus 関数がこの情報を返すことを期待していましたが、実際には registerDevice コールバックよりも少ない値を返します。

更新: わかりました。プラグイン コードを掘り下げると、サーバーに送信するこの ID をどこで作成しているかがわかります。これは、特定のデバイスへのプッシュ通知をターゲットにするために最終的に必要な ID であるため、phonegap プラグインを介してこの 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;
}
4

2 に答える 2

3

本当に hwid が必要ですか?

Pushwoosh Remote API を使用して個々のデバイスにプッシュ メッセージを送信する場合、「devices」タグを使用してターゲットを設定し、メッセージを送信するデバイスの deviceToken を指定するだけです。

デバイス トークンは、プラグインから返されるステータスの一部であるため (status['deviceToken'])、簡単にアクセスできます。

于 2013-05-05T11:30:34.673 に答える
0

私がここに投稿したように

これが必要な人のための回避策を見つけました。xcode でクラス「PWRequest.m」を開くだけです。"[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);
   }
}
于 2013-09-24T18:04:26.530 に答える