2012-04-03 80 views
0

這將是我的第一個任何複雜性的iOS應用程序。我想概述組件和結構以獲得一些反饋,然後再着手嘗試。iPhone應用程序,服務器端組件,解析集成

從用戶的角度來看,該應用程序監控當地湖泊的水位,並在水位改變用戶指定量時接收推送通知。我認爲使用Parse對於管理用戶數據是最容易的,我會嘗試在Nodester上使用Node.js服務器端組件(我知道一些基本的JS,並且認爲它是一種很好的語言,可以熟悉它)。以下是我如何看到它工作...

  • 用戶在設備上創建一個帳戶,並指定他們將收到推送通知的金額。用戶的數據被推送到Parse的數據管理。
  • 服務器端組件將運行該程序,每天3-6次:
    • 拉經由HTTP請求
    • 拉從解析用戶數據的currentLakeLevel
    • 比較currentLakeLevel到用戶指定lakeLevelChange
    • 如果差異=>lakeLevelChange,則發送推送通知HTTP發佈請求,每個用戶滿足其指定條件
  • 解析接收POST請求,併發送推送通知到APNS服務器
  • 客戶端收到推送通知

它實際上其時打了出來,聽起來並不可怕複雜。這是構建這個功能的正確方法嗎?我錯過了什麼?建議非常感謝!

+0

讓我們在這裏處理iOS應用程序吧。如果您對節點 – ControlAltDel 2012-04-03 20:25:51

回答

2

位:

服務器端組件將運行該程序,每天3-6次:
拉經由HTTP請求的currentLakeLevel。
從解析
拉用戶數據的currentLakeLevel進行比較,以指定lakeLevelChange
用戶如果該差=> lakeLevelChange,推送通知HTTP POST請求被髮送,每其自己指定的條件滿足用戶

實際上,您也需要爲每個用戶保存最後一次警報級別。否則,增量更改可能會蔓延到用戶的閾值並永遠不會觸發警報。

想象一下,如果我說我想在水平改變6英寸時收到警報。然後記錄每次升高一英寸的七個事件。你沒有觀察到超過6英寸的變化,但總變化超過了我的通知閾值,我可能打算讓你通知我這件事。

因此,當您觸發警報時,您需要存儲當前級別,然後在每次更改事件時,將其與您通知的最後一級進行比較。

+0

我沒有想到這一點,但有道理,謝謝。 – mnort9 2012-04-03 20:44:46

+0

我會對此採取一種深思熟慮的方法來處理一個可能直到後來才被發現的案例。 – jmstone617 2012-04-03 22:27:20

1

你錯過了不快樂的路徑。這是程序員永遠不會旅行,而程序總是旅行的路徑。我們計劃的方式沒有任何變化,所以我們必須計劃失敗。問自己這樣的問題:「當服務器因維護或中斷而掉電並錯過其3-6個預定運行中的一個或全部時會發生什麼?」 「錯過的處決隊伍應該排隊併發出一堆錯過的通知嗎?」 「當用戶更改他們指定爲lakeLevelChange但無線電出局和/或服務器請求無法完成時會發生什麼?」 「當Parse獲取垃圾數據或產生垃圾日期時會發生什麼?」只要詢問其中的一部分,就可以引導您實現最佳設計。一個邏輯問題的

+0

有疑問,請打開另一個問題,謝謝。 – mnort9 2012-04-03 20:45:57