2015-01-09 91 views
0

我有一個Worklight應用程序執行推送通知。發送推送會導致通知出現在Android和iOS上的通知欄中,如預期的那樣。如果在應用程序運行時收到推送,它會按照它應該調用的消息處理函數。收到消息時推送通知iOS不起作用

我遇到的問題是,如果您通過點擊iOS上的通知啓動應用程序,如果在應用程序運行時發送另一個推送,則消息處理程序永遠不會被調用。我必須退出應用程序並徹底殺死它,然後從啓動器重新啓動應用程序。然後,如果在應用程序運行時收到推送,它將調用消息處理程序。

這隻發生在iOS上。該應用程序將在應用程序運行時響應Android上收到的消息,即使該應用程序是通過點擊通知啓動的。

編輯:

我做鬥爭,以言語表達的情況下,無法找到有意義的話語權,但你做了伊詹的步驟是什麼,我試圖做正確的大部分。我們正在做基於標籤的通知,因此與您所做的不同。我們還利用PersistentCookieAuthentication因爲他們想推送通知用戶不用在明確登錄發送。

  1. 目前,我們正在使用WL建立6.2.0.01-20141216-0427
  2. 我們已經在嘗試了幾個不同的型號,運行8.0.2的iPhone 4s和運行8.1.2的iPhone 5。基於編輯的問題
+0

你能用更好的措辭編輯中段嗎?有些東西聽起來不符合邏輯。當應用程序關閉時,您會在該段落中開始您的解釋,但突然之間,您會說在應用程序打開時它不起作用。澄清。 – 2015-01-09 21:16:18

+0

這個測試過哪些設備? – 2015-01-11 07:25:02

+0

數字狼,基於標記的通知根本不需要登錄,只有基於事件源的通知才需要。廣播和標籤通知都只需要將設備(不是特定用戶)訂閱到標籤,然後通知將發送到該設備。在廣播/標籤中沒有「多用戶訂閱」,因爲您使用的是事件源。您將需要提供與發送和接收通知相關的實際代碼,以便進一步調試。 – 2015-01-12 16:01:03

回答

0

編輯:

基於標籤的通知不需要任何登錄,因爲它是要訂閱到您在應用程序descriptor.xml定義任何標籤的設備;它不是基於登錄的,所以你所做的任何類型的登錄都是不相關的。推送將被髮送到使用subscribeTag API訂閱了您的標籤的任何設備(應用程序...)。

我在iOS中使用基於廣播的通知(基本上是基於標記的通知)做了另一個測試。我將該應用程序保留在後臺併發送了通知。點擊通知欄中的傳入通知將應用程序引導至前臺,然後顯示傳入通知的警報。

您可以使用此應用程序嘗試:https://www.dropbox.com/s/l2yk2pbvykrzfoh/broadcastNotificationsTest.zip?dl=0 請確保放置您自己的.p12證書和pushSender密碼。


我一直在嘗試瞭解您的情況......我懷疑您遺漏了某些東西或需要更好地說出問題描述。

下面是我嘗試使用MobileFirst Platform 6.3(在iOS和6.2之間沒有嚴格推送更改)和iPhone 6運行iOS 8.1.2。

  1. 推出樣品的推送通知的應用程序在設備上
  2. 已登錄在>已申請
  3. 退出應用(其使用事件基於源的通知)

我然後通過調用適配器發送的通知在工作室

  1. 通知到達並顯示在通知欄
  2. 攻通知啓動的應用程序
  3. 已登陸

然後顯示通知提醒。
然後,我將應用程序移至背景。

  • 發送另一個通知,這是到達
  • 攻絲該第二通知帶來了應用到背景時顯示在通知欄,顯示所述警報
  • 我然後將應用程序保留在後臺。

  • 發送第三通知
  • 在這種情況下,因爲應用程序是在前臺,通知沒有在通知欄中顯示 - 如預期 - 而是立即顯示警報。

    如果您的場景與上述場景不同,例如:您甚至不使用基於事件源的通知,而是使用基於廣播或標記的通知,或者您的應用程序流程不同等等,那麼請編輯問題更精確的描述。

    當你編輯的問題,也提到了以下幾點:

    • 工作燈版本和版本號
    • 設備型號
    • 二手IOS版本

    我所知道的一個可能的問題(APAR#PI31988),目前正在調查中,其中的基礎本地代碼調度消息在JavaScript框架準備好處理它之前,因此不顯示消息。這被發現發生在iPhone 4等較慢的設備上。