2015-05-07 37 views
3

我在我的android應用程序中需要實現推送通知,我已經擁有Google API密鑰以及所有密鑰都已啓用推送通知。我需要關於發送推送通知的建議

據我所知,通知將從服務器發送,下游到應用程序。

從本質上講什麼,我要做的是,每當我的數據庫得到更新,我想回報將消息發送到特定的設備,沒有消息。

但我不是特別明白的是將消息下游發送到手機。這是如何完成的,我只向前發送過HTTP消息給我的服務器,並且對如何完成這件事感到困惑。有沒有任何服務器應用程序可以做到這一點,如果是的話,我在找什麼。

回答

2

有幾種方法從服務器發送下游消息。一個正在使用PHP.You可以編寫PHP腳本發送消息到GCM(實際發送通知到手機)。

這是我想出了我的應用程序:

我用捲曲

$url = 'https://android.googleapis.com/gcm/send'; 
$receive_id=$_POST['receiver_key']; 
$message=$_POST['message']; 

$registrationIDs = array($receive_id); 


    $fields = array(
     'registration_ids' => $registrationIDs, 
     'data' => array("message" => $message), 
    ); 
    $headers = array(
     'Authorization: key=' . $api_key, 
     'Content-Type: application/json' 
    ); 

    $ch=curl_init(); 

curl_setopt($ch,CURLOPT_URL,$url); 
curl_setopt($ch,CURLOPT_POST,true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 

$curl_result = curl_exec($ch); 

什麼其實我是讓應用程序觸發這個PHP腳本來運行時required.This是什麼稱爲從服務器發送下游消息。

+0

這隻會在電話觸發時才起作用,對嗎?假設我想在沒有事先溝通的情況下發送通知給特定的電話。這可以通過PHP來完成嗎? –

+0

是的,它可以完成。你必須在你的數據庫中使用觸發器。每當你的數據庫更新時觸發你的PHP腳本。通過以下谷歌搜索來了解如何使用觸發器從數據庫中激發PHP腳本:[link] https://www.google.co.in/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8# q = trigger + php + from + mysql –

+0

經過進一步分析,我覺得你的問題更適合作爲答案。謝謝。 –

1

既然你正在尋找一個推送通知的特定服務器的功能,我建議去一些軟件,它會爲你而不是寫的所有代碼服務器。

一個這樣的軟件,我所知道的是IBM MobileFirst(以前稱爲工作燈)......在它得到推送通知嵌入...可能有更多的服務器軟件,在我的dev push server做同樣的

+0

謝謝,我看看他們。 –

1

看。所有你需要的只是粘貼你的谷歌API密鑰和註冊ID在相應的領域,併發送推送到您的客戶端。你也可以看看該推送服務器on the Bitbucket

+0

這實際上非常有用,謝謝 –

+1

開發者推送服務器使用aws sns嗎?或者只有GCM – kavita

+0

@kavita那個開發推送服務器只使用GCM,我在2 - 3年前寫過它。我猜aws sns是新東西。無論如何,請隨意修改測試推送服務器https://github.com/alexzatsepin/GcmPusher的源代碼,並使其成爲現在的實際:) – Samik

2

你不處理下游到手機自己的源代碼。您看起來像這樣的過程有幾個部分。

爲自己設定了GCM(聽起來像你已經做了)

了該應用註冊GCM該設備,併成立了處理程序接收推送消息。這通常是在應用程序啓動時完成的,因此,您需要事先與設備進行通信。您通常也會希望給他們選擇退出推送消息的選項。大多數事物的應用程序方面的概述here

有當數據庫被更新時觸發的腳本。然後,您可以通過將消息和特定設備的註冊ID作爲有效負載傳遞給GCM以發送消息。

0

我只是想更新這篇文章,以防萬一這些信息對他人有用。所以基本上我所做的是當用戶安裝應用程序時,它將向谷歌註冊以獲得註冊ID,然後將其發送到我的數據庫,以備日後需要時使用。現在,當用戶通過添加帖子來更新數據庫或者添加評論時,它會觸發一個在tomcat上運行我的web servlet的php腳本,從那裏我的tomcat servlet查詢我的數據庫並計算出誰(註冊ID)爲發送消息給。