2012-03-10 477 views
1

有沒有辦法確定,如果現在可以發送推送通知? 據我所知不可能,但我不知道。Android C2DM:確定現在是否可以發送推送通知

所以我的情況是這樣的: 我有我的Android手機上的Android應用 我有我自己的服務器

我的應用應該與我的朋友們的應用程序的Android手機通信。 現在我正在尋找一個實時通信框架,我想C2DM可以幫助我。

因此,可以說: 我的手機上的一個應用程序應該寫一點消息,我的應用程序在手機上B. 讓我們假設,一個手機在線,可以與我的服務器進行通信。因此,電話A會將消息發送到我的服務器,而我的服務器現在會嘗試將此消息傳遞給電話B.

而這就是我的服務器將嘗試通過C2DM將消息傳遞到電話B的關鍵,以及這也是我的服務器需要知道的點,如果它可能通過C2DM發送此消息。否則,我的服務器應該使用另一種通信方式來傳遞消息,如短信或其他。

所以問題是,我真的需要知道它是否可能在這個時候通過C2DM(當然,我的服務器知道電話B的C2DM註冊ID)提供給電話B. 否則,例如,如果電話B未連接到互聯網並且無法接收C2DM推送通知,我的服務器會向手機B發送短信。

如果手機B在線,是否可以確定? 我試圖做的是,達到每個用戶(如果他的電話打開)。如果他在線,那麼通過C2DM,否則通過SMS,以便在任何情況下在這個時刻發送消息。

注意: 我知道C2DM可以存儲通知並在手機B在線時發送存儲的通知,但那不是我想要使用它的方式。還請注意,我知道(架構)如何使用C2DM。因此,應該從電話A傳送到電話B的「消息」不會直接通過C2DM推送通知傳遞,消息文本/敏感數據作爲消息主體。當然,傳遞的消息只是一個「更新消息」,告訴我的手機B上的應用程序,有些事情已經發生變化,應用程序應該立即連接到我的服務器,以獲得(輪詢)最新狀態的「文本消息」從手機A發送給您(手機B)

回答

1

有沒有辦法確定,如果現在可以發送推送通知?

號有沒有保證,一個C2DM消息將永遠交付,更不用說馬上。

如果手機B在線,有可能確定它嗎?

電話B可以知道它是否在線。如果您使用某種持久套接字連接(例如XMPP)實現服務器,則該服務器可以知道它是否與電話B具有開放套接字連接。

+0

謝謝您的回答。那麼我想節省電池電量,這就是爲什麼我會通過C2DM實現它。 – sockeqwe 2012-03-10 14:08:59

相關問題