2013-02-13 168 views
0

我有一個爲iOS和Android構建的應用程序,它具有推送通知。一切都很好,但我想知道是否有方法將推送通知的數據存儲在應用程序中,以便當用戶在收到通知後啓動應用程序時,我可以再次向他們顯示消息?Air iOS/Android推送通知記得應用程序啓動

基本上我允許用戶在他們的朋友之間分享信息和/或聊天。如果他們在應用程序處於後臺時收到通知,它會以正常推送消息的形式發送,但是當他們啓動應用程序時,我想引導他們進入聊天功能以再次查看消息。

我正在存儲在遠程數據庫中發送的消息,但看到它們已經收到有效負載,因此應用程序調用遠程數據庫以檢索相同的消息沒有多大意義。

我在AS3和Air 3.5中使用Distriqt的擴展。

乾杯

+1

使用SQLITE在本地存儲消息 – baboo 2013-02-13 08:13:07

+0

很酷。所以我仍然可以訪問應用程序數據庫,即使它沒有運行?全局變量呢? – puks1978 2013-02-13 09:54:58

回答

1

我問Distriqt對同一件事的支持在幾個星期前,他們解釋說,有沒有辦法讓推送通知消息的信息,而應用程序被關閉,以便他們提出這樣的: - 當用戶打開應用程序時,您可以調用服務器來檢查它們是否沒有遺漏任何內容,並從那裏獲取數據。如果發生推送,您將顯示推送消息,就好像它是在前臺收到的應用程序一樣。

這是有點棘手,不是很令人滿意,但它的工作原理..只要用戶沿着路徑。 如果您的用戶收到推送並選擇不打開您的應用,則在他下次打開應用時,他仍會在您的應用中收到推送消息。

+0

臭蟲!所以最好是說在數據庫中設置一個查看標誌,發送帶有有效負載的數據庫標識,然後使用類似foreground_notification的東西,並在該方法內調用遠程數據庫來將查看標誌更新爲真。然後,當應用程序啓動時,調用遠程數據庫查看標誌爲false的消息,重新打包並重新發送。看起來很亂。如果我不瞭解這個建議,請告訴我。謝謝 – puks1978 2013-02-13 20:47:16

+0

這是我做的。推送通知是關於新聞的,所以它非常簡單。 客戶端發送通知。 - 答:應用程序是開放的,用戶收到它。 (我在本地存儲的ID) - B.應用程序未打開,當他打開它時,我檢查是否有任何推入的數據可能錯過了數據庫,獲取數據,看到它沒有被檢查爲本地接收,然後顯示它。在LocalData對象中的 我只有一個包含所有可見ID的數組。 不知道這是否有幫助。你的項目意味着更多的這些互動。:/ – 2013-02-14 21:42:25

+1

嗨,我是distriqt的主要開發人員之一。我們目前正在爲此制定解決方案,並希望能夠爲APNS儘快做好準備。如果您在G +上關注我們,或者Twitter會盡快公佈。 https://twitter.com/distriqt https://plus.google.com/u/0/b/102477834526618173369/102477834526618173369/posts – Michael 2013-02-15 03:01:34

0

我也遇到了麻煩,但我找到了解決方案!基本上,如果用戶通過通知的方式啓動應用程序(不在後臺運行),它會通過Invoke事件發生,而不是通常的Notification事件。所以這樣做:

NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, invoked); 

private function invoked(evt:InvokeEvent):void 
{ 
    if (evt.reason == InvokeEventReason.NOTIFICATION) 
    { 
     var payload:Object = Object(evt.arguments[0]); 
     // do stuff 
    } 
} 

這幾乎是它。這裏有更多的細節在這裏博客文章:http://blogs.adobe.com/airodynamics/2012/05/29/push-notifications-support-in-ios/

0
NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, invoked); 

無法正常工作的Android推送通知。 Android始終以InvokeEventReason.standard開頭,所以我們不能接收消息。它僅適用於iOS。