2011-11-15 141 views
47

私はphpジョブアプリケーションからiphoneにプッシュ通知を送信しています。私は新しい仕事に関するプッシュ通知を送っています。これは、ユーザがプッシュ通知ポップアップのビューをクリックしたときに、ユーザがデバイス内の特定のジョブにリダイレクトする可能性があります。カスタムデータを送信するApple Push通知

私はjobIdのようなプッシュ通知で任意のカスタムデータを送信できることを知りたかったのですが、何か他のもの.... Iphone endその特定のジョブを取得して表示できますか?

ありがとうございました。

+3

oh..sorry rckonesを..私は答えとして迎える方法を知りませんでした。私の過失は...それを選別しました... :) – vikas

+5

私たちはすべてここに学びます。 – rckoenes

答えて

114

を関係なく、あなたが使用している言語とライブラリの、プッシュ通知ペイロードがJSONペイロードである:

{ 
    "aps": { 
     "badge": 10, 
     "alert": "Hello world!", 
     "sound": "cat.caf" 
    } 
} 

apsトークンはAppleのAPNデータです。あなたは同様にあなたのペイロードにカスタムデータを追加することができます。

{ 
    "aps": { 
     "badge": 10, 
     "alert": "Hello world!", 
     "sound": "cat.caf" 
    }, 
    "job_id": 1 
} 

を使用すると、アプリで通知を受信すると、通知辞書であなたのparamをチェック:

- (void)handleBackgroundNotification:(NSDictionary *)notification 
{ 
    NSDictionary *aps = (NSDictionary *)[notification objectForKey:@"aps"]; 
    NSMutableString *alert = [NSMutableString stringWithString:@""]; 
    if ([aps objectForKey:@"alert"]) 
    { 
     [alert appendString:(NSString *)[aps objectForKey:@"alert"]]; 
    } 
    if ([notification objectForKey:@"job_id"]) 
    { 
     // do something with job id 
     int jobID = [[notification objectForKey:@"job_id"] intValue]; 
    } 
} 

合計サイズことに注意してくださいのペイロードは256 バイトであり、これにはもちろんカスタムパラメータが含まれています。したがって、(読みやすさを低下させる危険がある)バイトを絞るために、 "job_id"の代わりにカスタムパラメータ "ji"を呼び出さなければならない場合があります。

これはすべて、iOSドキュメントのLocal and Push Notification Programming Guideに記載されています。間違いなく最初に聞こえるよりも複雑なので、読んでみることをお勧めします(少なくとも、それは私が思ったものです)。

+0

カスタムデータをペイロードに追加するにはどうすればよいですか? – Haring10

+0

@JoshHarington "job_id":1はペイロードのカスタムデータです –

+12

iOS 8以降、ペイロードサイズが256バイトから2KBに増加しました:) –

8

はいカスタムデータを送信することができ、すべてのプッシュ通知が必要であるためapns-php libraryをチェック:

+0

ちょっと:あなたはプッシュの形式を説明してくれますか? –

+0

@Asim私はフォーマットについて多くの情報を持っていませんが、PHPについては、私が言及したこのライブラリを使用することができます。リバースエンジニアリングして、フォーマットを表示することができます。 – Arfeen

0

我々は、複数のカスタムデータを追加することができますが、私は名前としてsub_actionを使用している場合、私のiPhoneは、プッシュMSG

のJava受け取ることができません。

PayLoad payLoad = new PayLoad(); 
payLoad.addCustomDictionary("action", action_type); 
payLoad.addCustomDictionary("subaction", sub_action_type); 
関連する問題