アプリケーションでプッシュ通知を受信するために APNS を使用しています。
問題は、すべてのデバイスではなく、一部のデバイスで同じ通知を受け取ることです。この問題を解決するために約 15 日間試みましたが、成功しなかったため、ここに何が問題である可能性がありますか。デバイス トークンは正常に更新されています。そうでなければ、どのデバイスでも通知を受け取ることはなかったでしょう。しかし、奇妙なことに、私は半分のデバイスでそれを取得しています. 助けてください!!
通知を登録して受信するためのコードを次に示します。サーバー側のコードはありません。しかし、私が言ったように、通知は一部のデバイスで機能しています。アンドロイドでも彼らは働いています。
ここには 3 台のデバイスがあり、そのうちの 2 台で動作しています。iPad2:5.0.1 iPodTouch:4.3.3
バージョン5.1の別のiPod touchでは動作しません
また、すべてのデバイスで APNS に正常に登録されたことを示しています。ただし、通知を送信しないものもあります。問題は何ですか?私が見逃しているものはありますか?
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken
{
deviceToken = [devToken retain];
NSLog(@"Registered for APNS %@", deviceToken);
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
NSMutableString *dev = [[NSMutableString alloc] init];
NSRange r;
r.length = 1;
unsigned char c;
for (int i = 0; i < [deviceToken length]; i++)
{
r.location = i;
[deviceToken getBytes:&c range:r];
if (c < 10) {
[dev appendFormat:@"0%x", c];
}
else {
[dev appendFormat:@"%x", c];
}
}
[ud setObject:dev forKey:@"DeviceToken"];
[ud synchronize];
}
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
NSLog(@"Failed to register %@", [error localizedDescription]);
deviceToken = nil;
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
for(int i=0;i<[viewControllers count];i++)
{
if([[viewControllers objectAtIndex:i] isKindOfClass:[Confirmation class]])
{
Confirmation *map = (Confirmation*)[[self.navigationController viewControllers] objectAtIndex:i];
[map setFinalInfo];
[self.navigationController popToViewController:[[self.navigationController viewControllers] objectAtIndex:i] animated:YES];
}
}
}