2016-03-11 82 views
4

我們與反應母語過去2周Android的推送通知有stuckup,也是我們有以下試過反應本機模塊陣營本地推送通知的Android

https://www.npmjs.com/package/react-native-push-notification

有了上述模塊,我們可以獲取本地通知(來自應用程序的靜態),即正在工作,但來自服務器的通知未顯示。我們已經嘗試「https://github.com/oney/react-native-gcm-android」這也..

能與GCM註冊並獲得GCM令牌,但使用已註冊的令牌,無法獲得通知和

我們使用PHP來從服務器和PHP發送通知代碼如下

這是我們正在使用從服務器發送通知的代碼,

<?php 
function sendPushNotificationToGCM($registatoin_ids, $message) { 
    $url = 'https://android.googleapis.com/gcm/send'; 
    $fields = array('registration_ids' => $registatoin_ids, 'data' => array("title" => 'hi', "message" => $message,), ); 
define("GOOGLE_API_KEY", "YOUR API KEY");  
    $headers = array(
    'Authorization: key=' . GOOGLE_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_POSTFIELDS, json_encode($fields)); 
$result = curl_exec($ch);    
if ($result === FALSE) { 
    die('Curl failed: ' . curl_error($ch)); 
} 
curl_close($ch); 
return $result; 
    } 
?> 

我們如何克服呢?

+0

您是否正在使用服務器密鑰,瀏覽器密鑰或Android鍵從console.google.com得到些什麼? –

+0

使用Android密鑰 – Thivya

+0

爲了測試創建瀏覽器密鑰,並且不要在創建瀏覽器密鑰時給出任何安全包名稱,並使用該密鑰並使用該密鑰 –

回答

1

建立用於測試的瀏覽器鍵,並同時創造broswer鍵沒有爲安全提供任何包名稱和使用您提供一個

3
Try this php code 

<?php 
    //Generic php function to send GCM push notification 
    function sendMessageThroughGCM($registatoin_ids, $message) { 
     //Google cloud messaging GCM-API url 
     $url = 'https://android.googleapis.com/gcm/send'; 
     $fields = array(
      'registration_ids' => $registatoin_ids, 
      'data' => $message, 
     ); 
     // Update your Google Cloud Messaging API Key 
     define("GOOGLE_API_KEY", "Browswer Key");  
     $headers = array(
      'Authorization: key=' . GOOGLE_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_VERIFYHOST, 0); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 
     $result = curl_exec($ch);    
     if ($result === FALSE) { 
      die('Curl failed: ' . curl_error($ch)); 
     } 
     curl_close($ch); 
     return $result; 
    } 
?> 
<?php 

    //Post message to GCM when submitted 
    $pushStatus = "GCM Status Message will appear here";  
    if(!empty($_GET["push"])) { 
     $gcmRegID = file_get_contents("GCMRegId.txt"); 
     $pushMessage = $_POST["message"]; 
     if (isset($gcmRegID) && isset($pushMessage)) {  
      $gcmRegIds = array($gcmRegID); 
      $message = array("m" => $pushMessage); 
      $pushStatus = sendMessageThroughGCM($gcmRegIds, $message); 
     }  
    } 

    //Get Reg ID sent from Android App and store it in text file 
    if(!empty($_GET["shareRegId"])) { 
     $gcmRegID = $_POST["regId"]; 
     file_put_contents("GCMRegId.txt",$gcmRegID); 
     echo "Done!"; 
     exit; 
    } 
?> 
+0

我已經在上述ryt中發佈了相同的內容? ..已經嘗試過這...再次沒有從服務器notificaton。 – Thivya

+0

最後一個php標籤是不同的 –

+0

不,這也是行不通的! – Thivya

2

有些設備不支持推送通知有時和延遲接收notifications.So請幾個devices.So檢查,你可以得到答案。

0

PHP代碼是服務器端,對不對?

首先檢查推送通知從FCM服務器發送工作在應用程序或沒有?

新的雲消息項目必須建立在一個Firebase console火力地堡項目。在此過程中,您將爲您的項目生成配置文件和憑據。

1,創建於Firebase console一個火力地堡的項目,如果你不已經有一個。如果您已有與您的移動應用關聯的現有Google項目,請點擊導入Google項目。否則,請單擊創建新項目。

2.單擊添加Firebase到您的Android應用程序並按照設置步驟操作。如果您要導入現有的Google項目,這可能會自動發生,您可以僅使用download the config file

3.當出現提示時,輸入您的應用程序包名稱。輸入您的應用使用的軟件包名稱非常重要;這隻能在您將應用添加到Firebase項目時進行設置。

4.At結束時,你會下載一個谷歌,services.json文件。您可以隨時再次download this file

5.如果你還沒有這樣做的話,複製到項目的模塊文件夾,通常應用程序/本。

一旦你遵循所有的步驟,然後點擊處存在下生長選擇最左側的通知選項。

enter image description here

然後你就可以點擊要發送的第一條消息,並開始發送推送通知。

選擇一臺設備,並進入FCM註冊標記,然後點擊發送消息。

如果仍然沒有得到推送通知,然後檢查是否遵循其通過反應,本機模塊提供的所有步驟。 不要忘記在android/app文件夾中添加google-services.json文件。

它適用於我。

如果您收到通知,然後有一些問題與服務器端代碼。