這是一個讓我頭痛的問題。我們正在開發一個跨平臺的應用程序,我們需要推送通知。我們有一臺同步每個應用的服務器,如果應用沒有在一臺設備上運行,我們會在需要時通知後者。 Push在其他平臺上工作正常。使用APNS Sharp的APNS問題 - 前幾個通知未送達
奇怪的是:如果最近打開了應用程序,通知效果很好。但幾個小時後,服務器需要發送至少兩個通知(如果不是更多),然後才能在設備上收到一個通知。如果應用程序最近已經打開,那麼一切都很好。
問題可能來自:
- 服務器端。我們的服務器API使用C#,我們使用「APNS Sharp」向Apple的服務器發送通知。
- 蘋果方(不太可能我猜)
- iphone應用程序。但是,爲什麼我會不時收到一封?我還注意到,有時候,我收到通知,但屏幕上彈出的藍色泡泡在幾秒鐘甚至有時立即消失。 這裏是我的代碼在我的應用程序代表一個片段:
- (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建議保持與服務器的開放連接以限制連接/斷開請求的數量。我們試圖每次打開一個,現在它正常工作。
有時,在沙箱中推送通知可能需要一段時間才能到達。 – malinois