我正在實現推送通知,並且如果應用程序處於前臺,它們被正確接收,didReceiveRemoteNotification與數據一起被調用。所以我認爲令牌和服務器問題是零。 當應用程序在後臺時,它變得醜陋:我發送通知,從不在通知中心顯示爲收到,而不顯示徽章。 在設置/通知/ MyApp中,一切都處於活動狀態。 也許是因爲我正在使用開發證書或因爲Apple的沙箱問題? 任何想法將不勝感激。 謝謝系統沒有顯示推送通知
回答
通過您的描述,我假設您在某些時候正在接收APNs(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);
}
包括該代碼的情況下,你會得到一個錯誤的APN註冊:
- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error {
NSLog(@"Failed to get token, error: %@", error);
}
當應用程序處於前景時,所有內容都會進行雙重檢查並正常工作。感謝您的時間和精力。 –
你有關於如何處理傳入的APN的代碼?請記住,如果您的應用程序位於後臺,則只會播放聲音並更新徽章數量。一旦你的應用程序在前臺,你將不得不處理任何更新/同步服務器端。 – sangony
是的,我知道並且我在收到推送請求時會爲該客戶端請求服務器更新,但問題是應該在手機上顯示通知(在通知中心滑塊中),警報(在用戶指定的設置樣式應用程序/通知),聲音和徽章,並且當應用程序處於後臺時都不會顯示,因此用戶從未意識到有新的東西(當他打開應用程序時,它會向服務器請求更新)。 –
固定。在創建有效載荷時,我使用了一個簡單的數組,而不是使用['aps']鍵的數組。服務器端問題。我不知道爲什麼蘋果發送的通知沒有形成,當文件說不會。這個細節讓我覺得服務器端是好的,這就是爲什麼我沒有粘貼代碼,對此抱歉。
錯誤:
$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();
}
- 1. 推送系統沒有node.JS
- 2. Bluemix推送通知消息在系統通知顯示中被截斷
- 3. iOS推送通知顯示
- 4. 推送通知未顯示
- 5. 顯示推送通知
- 6. 全系統警報無推送通知
- 7. Facebook的風格推送通知系統
- 8. 沒有提示的iPhone推送通知
- 9. Xcode推送通知沒有提示
- 10. 推送通知有時不顯示
- 11. 將推送通知從後端系統發送到Azure推送通知中心
- 12. 推遲顯示推送通知警報
- 13. 解析推送 - 推送通知系統爲Android應用程序
- 14. 帶有推送通知的即時通訊系統(php)
- 15. AWS SNS推送通知沒有發送
- 16. Cloudkit沒有發送推送通知
- 17. 離子推送通知不在通知欄上顯示通知
- 18. 系統收到推送通知時顯示(或捕捉)Windows 8應用程序
- 19. 顯示Android的解析信息「沒有推送通知,顯示尚未」
- 20. PubNub推送通知將不會顯示
- 21. 顯示黑莓推送通知
- 22. 顯示接收的推送通知
- 23. iPhone:存儲和顯示推送通知
- 24. 可可顯示推送通知碼頭
- 25. Swift取消推送通知顯示前
- 26. 如何顯示從推送通知FCM
- 27. 顯示前操作推送通知(APNS)
- 28. 顯示Ionic推送通知的操作
- 29. 獲取多個推送通知顯示
- 30. 相同推送通知顯示兩次
我看到同樣的問題在這裏 的http://計算器.COM /曲estions/7965417/ios-push-notification-alert-is-not-shown-when-the-app-is-running – Elto
不是同樣的問題,鏈接的一個是指PN在前臺運行時沒有出現,而這個是在後臺運行時,還是根本沒有運行。不過謝謝。 –