私はPHPにかなり慣れていないので、この大きな時間で立ち往生しています。
このインスタンスでエラー メッセージ " InvalidRegistration " を抽出しようとしています。これは、配列内の配列にあるように見えます。次に、PHP サーバーでフィルター処理して処理します。
複数の regId へのマルチキャスト メッセージでは、エラー配列の深さが 1 より大きい場合があることに注意してください。
どんな助けでも大歓迎です、ありがとう!
ダンプされた GCM サーバーの応答:
object(stdClass)#3 (5) { ["multicast_id"]=> int(6225919148914620552) ["成功"]=> int(0) ["失敗"]=> int(1) ["canonical_ids"]=> int(0) ["results"]=> array(1) { [0]=> object(stdClass)#4 (1) { ["error"]=> string(19) " InvalidRegistration " } } }
メッセージコードを送信:
$dbf = new push_db_functions();
// a row id which contains an intentionally bad regId
// to trigger the error from 'test' mySql database
$id = '19';
$result = $dbf->sendMessage($id);
// dump GCM server response
$obj2 = json_decode($result);
var_dump($obj2);
// TODO: (Question Subject)
// how to extract and test for if('failure' == 1) { ...?
// and then how to extract 'error' message so I can act upon it appropriately?
メッセージ ヘルパー コードを送信します。
public function sendMessage($id) {
$sqlquery = "SELECT regid FROM test WHERE Id = '$id'";
$results = mysql_query($sqlquery);
$processed = mysql_fetch_row($results);
$url = 'https://android.googleapis.com/gcm/send';
$apiKey = "my api key";
$message = "Hello World";
$fields = array('registration_ids' => $processed, 'data' => array( "message" => $message),);
$headers = array('Authorization: key=' . $apiKey, 'Content-Type: application/json');
// open connection
$ch = curl_init();
// set the url, number of POST vars, POST data
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));
// execute post
$response = curl_exec($ch);
curl_close($ch);
return $response;
}