2017-08-23 26 views
2

我正在創建應用程序,其中包括允許用戶向對方發送消息。我有消息本地存儲在一個sqlite數據庫(使用FMDB構建),它的工作原理如下。然而,我在計算如何向用戶發送消息時遇到了一些問題。我想要做的是在我的主數據庫(parse-server)中創建包含發送者ID,接收者ID和實際消息的短暫文本對象。這本身並不困難。什麼具有挑戰性是弄清楚如何讓接收者的應用程序識別何時消息已發送給他們,然後加載該消息。我可以很容易在viewDidLoad()執行消息的負載:如何讓服務器直接執行應用程序的功能?

func fetchNewestMessageQuery(){ 
    //pull the message 
    tabelView.reloadData() //reload the tableView's data to 
    //populate it with the newest message 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    fetchNewestMessageQuery() 
    //save the new message to the SQLite database 
} 

然而,這意味着用戶在打開該頁面永遠只能得到消息。我如何基本上呼叫我的fetchNewestMessageQuery()任何時間數據庫創建一個新的消息對象,然後發送通知到應用程序(它甚至可能不會在用戶的手機上打開)來運行查詢(這基本上是所有消息應用程序工作)?我一直習慣於在XCode上只對可預測的事件運行動作/函數... viewDidLoad(),viewDidAppear(),UIButton按等等,並且不知道從哪裏開始運行沒有來自應用本身的提示的函數。

回答

1

您可以使用其中content-available參數發送無聲推送通知,即使用戶對您的應用程序禁用推送通知將交付(警報,真的)。如果應用程序尚未運行,您的應用程序甚至會被喚醒,並且會在30秒內處理通知(只要用戶不強制退出應用程序)。

但是,他們必須爲您的應用啓用後臺應用刷新(需要iOS 7+)。好消息是後臺應用程序刷新將默認打開。

請參閱Configuring a Silent Notification

您需要設置一個服務器來發送推送通知。

或者,建立一個你自己的傳出網絡連接到你的服務器,這基本上是iOS對Apple推送通知服務的作用。

+0

我喜歡無聲通知(諷刺雙關語)。但是,既然我也想推送通知,是否可以配置?或者兼容性問題與兩者兼而有之?另外,「您需要設置一個服務器來發送推送通知。」你能再解釋一下嗎?我不能只使用APN嗎? –

+1

爲了澄清,您將需要一個服務器來爲您的應用程序註冊推送通知標記,在那裏您將令牌存儲在某種數據庫中,然後連接到APN並「發送」通知適當的證書。有些服務可以使這個更簡單。如果您設置推送通知,則會同時收到靜默和常規推送通知。對於沉默的用戶,用戶不會收到警報(在家庭/鎖定屏幕上的通知區域)。設置APN有許多部分,但一旦你開始使用它們,它們就非常可靠。您需要徹底閱讀文檔。 –

+0

您可能會推薦一種服務嗎?或者至少給我一個跳板點? –

相關問題