使用APNS Sharp的APNS问题 - 前几个通知未送达

时间:2011-08-31 15:39:45

标签: iphone push-notification apple-push-notifications apns-sharp

这是一个令我头疼的问题。我们正在开发一个需要Push Notifications的跨平台应用程序。我们有一台服务器同步每个应用程序,如果应用程序没有在一台设备上运行,我们会在需要时通知后者。推送在另一个平台上正常运行。

奇怪的是:如果最近打开了应用程序,通知效果很好。但几个小时后,服务器需要发送至少两个通知(如果不是更多),然后我才能在设备上收到一个通知。如果应用程序最近已经打开,那么一切都很好。

问题可能来自:     - 服务器端。我们的服务器API在C#中,我们使用“APNS Sharp”向Apple的服务器发送通知     - Apple的一面(不太可能我猜)     - iPhone应用程序。但是,为什么我会不时收到一个?我还注意到,有时候,我会收到通知,但是屏幕上弹出的蓝色气泡会在几秒钟后消失,有时甚至会立即消失。 以下是我的App Delegate中的代码片段:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    NSLog(@"Registering for remote notifications"); 
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
return YES;
}

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken {

    NSString * tokenAsString = [[[[devToken description] 
                             stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]] 
                            stringByReplacingOccurrencesOfString:@" " withString:@""] retain];
    [self sendToken:tokenAsString];
NSLog(@"enregistré");
}

- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {
    NSLog(@"Error in registration. Error: %@", err);
}

以下函数是我自己的函数,用于将设备令牌发送到我们的服务器。无需显示。
    [self sendToken:tokenAsString];

有没有人听说过这样的问题?你认为,根据它可能来自应用程序或Apple的服务器的代码片段?我们应该更多地在服务器端定位我们的搜索吗?

非常感谢。

皮尔

修改

原来是一个服务器问题。 Apple建议保持与其服务器的开放连接,以限制连接/断开连接请求的数量。我们试图每次打开一个,现在它正常工作。

1 个答案:

答案 0 :(得分:0)

对于那些可能感兴趣的人来说,这是一个服务器问题。 Apple建议我们保持连接打开以避免过多的连接请求。

我不确定这个API是如何工作的,但是我们试图偶尔打开它(如果不是每个消息),它现在就像魅力一样。上面的应用程序配置没有错。

干杯