2015-11-16 80 views
1

我正在致力於一個應用程序,其中GETPOST信息到服務器。我這樣做使用AFNetworking框架。我的目標是每當有人向服務器發佈新信息時,都會將通知推送給客戶端。例如:發佈了新的成績,發佈成績的學生必須在他的iDevice上收到通知。 雖然我不熟悉蘋果推送通知的工作原理,但從我閱讀的內容中可以得出結論,我需要添加服務器端代碼才能觸發通知。 請注意,我無法訪問服務器。服務由Fedena提供。 任何建議或提示從哪裏開始?AFNetworking和推送通知

+2

這仍然非常相關:http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1 – Gordonium

回答

2

APNS需要一臺服務器才能工作。通常的流是這樣的:

  1. iOS的應用程序要求用戶以使推送通知
  2. 一旦接入授予,則產生設備令牌,然後必須被髮送到服務器。
  3. 你的服務器必須安裝在您的服務器從蘋果開發者網站產生
  4. 然後適當的APNS證書,創建一個新的職位時,你需要添加在這裏裝載一些邏輯,所有的APNS令牌你已經已收到,然後將通知發送到設備。

這是一個非常簡單的流程描述,但我想你明白你需要訪問服務器才能夠做你正在努力實現的目標。

一些第三方的存在是爲了處理推送通知(如城市飛艇),但這些推送通知通常是手動從一個人推,而不是從服務器事件

+0

謝謝。沒有其他方式可以將推送通知添加到應用程序嗎?例如使用解析推送? – Hussein

+0

我從來沒有試過解析推,但它然後要麼是手動推(即你輸入你想推到設備的評論)或可能是解析分貝的事件,但我真的不確定它 –

0

我建議你可以使用的輔助服務器觸發您自己作爲中間人,並將其用作基礎架構骨骼。您可以使用SignalR庫。使用輔助服務器來創建兩個設備之間的連接。一個客戶會推事件,另一個客戶會聽事件。 以下是用IOS編寫的signalR庫代碼的link

我目前在使用這些庫。你可以做的是使用這些庫啓動集線器和連接。 該庫允許在服務器上調用方法。像這樣的東西。

[_hub invoke:@「MehtodName」withArgs:params];

我會做的是在服務器上創建事件註冊表。因此,一個客戶端可以監聽服務器上的事件,其他人可以推送事件,反之亦然。 因此,您的學生設備可以調用方法「訂閱事件」,服務器將其添加到註冊表列表中。您可以創建輔助服務「發佈事件」。成績發佈者可以通過調用此方法發佈。在這裏,發佈事件將查找註冊表並找到感興趣的客戶端並在客戶端調用所需的方法

瞭解更多關於signalr通過這個site

在APNS上使用Signalr的好處。

  • 成本效益。因爲這樣可以節省您可能需要向Apple推送通知的費用。
  • 以後可以很容易地跨平臺。只需在Android/Windows中實現類似的庫。
  • 更快,因爲數據不會從您的服務器傳送到Apple服務器。
  • 最糟糕的情況下,你可以備份到apns的任何一天,只需將推送通知代碼在任何輔助服務器方法。

我已經完成了電池和性能測試,並且工作得很好。

如果你想知道,在這裏它如何處理連接是非常可靠的。

SRAutoTransport爲客戶端 和服務器選擇最佳支持的傳輸。這通過回落到性能較低的 運輸機實現。默認傳輸回退是:

  1. SRWebSocketTransport
  2. SRServerSentEventsTransport
  3. SRLongPollingTransport

讓我知道如果您有任何其它的問題。我目前正在做類似的工作,可能能夠幫助你解決你的問題。

+0

你能解釋更多對這個? – Hussein

+0

想了解更多關於此的內容? 這是替換APNS或Google的推送通知服務。設置您的服務器以維護用戶列表,其中包含關鍵字,子關鍵字,換言之,客戶端有興趣收聽發佈在特定關鍵字,子關鍵字上的事件。一個客戶端會發布這個密鑰,子密鑰。您的服務器在其他客戶端上指定事件基礎設施創建的時間不長,但一旦創造出像魅力一樣的作品。我在答覆中給出了重要的鏈接。如果您有任何具體問題或疑難解答,請隨時發佈問題。 –