1

Urban Airship のプッシュ通知登録と iOS での処理をセットアップし、CURL ターミナル コマンドでテストしました。ただし、ASIFormDataRequest を使用して同じことを再現することはできません。これを行った人は誰でも、JSON でデータをシリアル化し、ASIHTTPRequest などを使用して送信する方法を教えてもらえますか?

ちなみに、Urban Airship は Web インターフェースで私のプッシュを認識しません (プッシュ数は増加しません) が、これを使用して UA から応答コード 200 を返して認証することができます。

[request setUsername:URBAN_AIRSHIP_APP_KEY];
[request setPassword:URBAN_AIRSHIP_APP_SECRET];

しかし、通知をデバイスに送信することはできないようです。

編集:私のコードは次のようになります

NSDictionary *paramDict = 
@{
 device_tokens: @[@"mytoken",@"mytoken2"],
 aps: @{alert: @"alertText"},
 extras: @"myExtraParam",
 moreExtras: @"moreExtras"
};

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:paramDict];

   ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL
URLWithString:@"https://go.urbanairship.com/api/push/"]];
   [request setRequestMethod:@"POST"];

   [request appendPostData:data];

   [request setUsername:URBAN_AIRSHIP_APP_KEY];
   [request setPassword:URBAN_AIRSHIP_APP_SECRET];

   [request addRequestHeader:@"Content-Type" value:@"application/json"];

   [request setDelegate:self];
   [request setDidFinishSelector:@selector(pushSucceeded:)];
   [request setDidFailSelector:@selector(pushFailed:)];
   [request startAsynchronous];
4

2 に答える 2

0

私はついにこれを機能させました。私のjsonシリアライゼーションに問題があったと思います。NSJSONSerialization を使用するとうまくいきました。

これを機能させようとしている他の人のための私のコードは次のとおりです。

 NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:paramDict
                                                   options:0
                                                     error:&error];
if (!jsonData) {
    NSLog(@"JSON error: %@", error);
} else {
    //Do something with jsonData


    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"https://go.urbanairship.com/api/push/"]];


    [request appendPostData:jsonData];

    [request setUsername:URBAN_AIRSHIP_APP_KEY];
    [request setPassword:URBAN_AIRSHIP_APP_SECRET];

    [request addRequestHeader:@"Content-Type" value:@"application/json"];

    [request setDelegate:self];
    [request setDidFinishSelector:@selector(pushSucceeded:)];
    [request setDidFailSelector:@selector(pushFailed:)];
    [request startAsynchronous];
}
于 2013-03-17T23:32:16.383 に答える