0

私はプッシュ通知を実装していますが、アプリケーションがフォアグラウンドにある場合、それらは正しく受信され、didReceiveRemoteNotification がデータで呼び出されます。したがって、トークンとサーバーの問題はゼロだと思います。アプリケーションがバックグラウンドにあるときは、通知が表示されないときです。設定/通知/MyApp では、すべてがアクティブです。開発証明書を使用しているためか、Apple のサンドボックスの問題が原因でしょうか? どんなアイデアでも大歓迎です。ありがとうございました

4

2 に答える 2

2

修理済み。ペイロードを作成するとき、['aps'] キーを持つ配列ではなく、単純な配列を使用していました。サーバー側の問題。ドキュメントにはそうしないと書かれているのに、なぜ Apple が整形式でない通知を送信しているのか、私にはわかりません。その詳細により、サーバー側は問題ないと思いました。そのため、コードを貼り付けませんでした。申し訳ありません。

違う:

  $payload = array('alert' => $this->code->getText(),
                   'sound' => 'default', 
                   'badge' => '1');
  $message['payload'] = json_encode($payload);

右:

$body['aps'] = array(
                'alert' => $this->code->getText(),
                'sound' => 'default',
                'badge' => '1'
            );
            $message['payload'] = json_encode($body);

そしてコードを送信...

  if ($this->sendNotification($message['device_token'], 
                              $message['payload'])) {       
  } else {  // failed to deliver
      $this->reconnectToAPNS();
     }
于 2013-07-12T14:14:40.240 に答える
0

あなたの説明では、APN (Apple プッシュ通知) を受信して​​いると想定しています。AppDelegate でコードを再確認し、以下があるかどうかを確認します。

あなたの- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

あなたが持っている必要があります

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

didReceiveRemoteNotification で、次のコードを試して、APN を受信したときに何が起こるかを確認してください。

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
NSLog(@"remote notification: %@",[userInfo description]);
NSDictionary *apsInfo = [userInfo objectForKey:@"aps"];

NSString *alert = [apsInfo objectForKey:@"alert"];
NSLog(@"Received Push Alert: %@", alert);

NSString *sound = [apsInfo objectForKey:@"sound"];
NSLog(@"Received Push Sound: %@", sound);

NSString *badge = [apsInfo objectForKey:@"badge"];
NSLog(@"Received Push Badge: %@", badge);
}

最後に、APN を受信するために実際に正常に登録されていることを確認します。

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken {
NSLog(@"My token is: %@", deviceToken);
}

APNs の登録でエラーが発生した場合に備えて、次のコードを含めます。

- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error {
NSLog(@"Failed to get token, error: %@", error);
}
于 2013-07-11T20:20:53.293 に答える