2016-08-26 21 views
1

データベース挿入イベントでPHPスクリプトを使用してFCM通知を送信しようとしましたが、FCMコンソールから送信しようとしましたが、トピックオプションを使用して問題なく動作しました。 MainActivity.java OnCreateイベントクラスに次のコードを使用して "exptopic":次のようにアンドロイドのFCM通知

FirebaseMessaging.getInstance().subscribeToTopic("exptopic"); 

今PHPスクリプトは次のとおりです。

明らか $target = "exptopic"、私はsnedMessage機能を実行すると、それは返し
function sendMessage($data,$target){ 
    //FCM api URL 
    $url = 'https://fcm.googleapis.com/fcm/send'; 

    //api_key available in Firebase console -> project settings -> cloud messaging -> server key 

    $server_key = "API_KEY";//my api key 

    $fields = array(); 
    $fields['data'] = array('message'=>$data); 
    $fields['to'] = $target; 

    $headers = array('content-type:application/json', 
      'Authorization:key='.$server_key); 

    $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('FCM Send error: '.curl_error($ch)); 
     echo 'notification not sent'; 
    } 
    curl_close($ch); 
    echo $result; 
    return $result; 
} 

結果:

{"multicast_id":6779996340041741184,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]} 

誰でも手助けできますか?

+0

MySQLが削除この質問、タグに関連すると思われないようになります。たぶん、この試みを与えます。 – tadman

答えて

0

データにpriorityフィールドがありません。これを試してみてください:

$fields["priority"] = "high" //This is required 

編集:私はこの体で成功を持っています

<?php 

// Get cURL resource 
$ch = curl_init(); 

// Set url 
curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send'); 

// Set method 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); 

// Set options 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

// Set headers 
curl_setopt($ch, CURLOPT_HTTPHEADER, [ 
    "Authorization: key=API_KEY", 
    "Content-Type: application/json", 
] 
); 
// Create body 
$json_array = [ 
     "notification" => [ 
      "title" => "TEST", 
      "sound" => "default", 
      "body" => $data 
     ], 
     "to" => $target, 
     "priority" => "high" 
    ]; 
$body = json_encode($json_array); 

// Set body 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $body); 

// Send the request & save response to $resp 
$resp = curl_exec($ch); 

if(!$resp) { 
    die('Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch)); 
} else { 
    echo "Response HTTP Status Code : " . curl_getinfo($ch,  CURLINFO_HTTP_CODE); 
    echo "\nResponse HTTP Body : " . $resp; 
} 

// Close request to clear up some resources 
curl_close($ch); 
+0

返信いただきありがとうございますが、同じエラーが返されました。これは問題ではないと思います。 –

+0

アップデートを確認してください。運が良かった。 –

+0

ありがとう –

1

this documentationに基づいて、toフィールドは/topics/exptopic

+0

ありがとうございました –

+1

この回答が役に立った場合は、その左側のupvoteボタンをクリックしてください。あなたの質問に答えた場合は、チェックマークをクリックしてそれを受け入れます。そうすれば、他の人はあなたが(十分に)助けられたことを知ることができます。 –

関連する問題