我正在使用 APNS 在我的应用程序中接收推送通知。
问题是我在某些设备上收到了相同的通知,但不是全部。由于我已经尝试了大约 15 天来解决这个问题,但没有成功,可能会出现什么问题。设备令牌正在成功更新。因为如果不是这样,我就不会在任何设备上收到通知。但奇怪的是我在一半的设备上都得到了它。请帮忙!!
这是注册和接收通知的代码。我没有任何服务器端代码。但正如我所说,通知正在某些设备上运行。他们也在android上工作。
我这里有 3 台设备,它在其中两台上工作。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];
}
}
}