Как отправить массив идентификаторов регистрации в gcm с Android с помощью переполнения стека

Я пытаюсь отправить массив идентификаторов регистрации в gcm с помощью php, но это не работает, я использую sinch, и это мой код:

class sendPushNotifications extends AutoAsyncTask {

List<PushPair> pushPairs;

String message;

String senderId;

public sendPushNotifications(Context context, String message, String senderId, List<PushPair> pushPairs) {
super(context, false);

this.message = message;
this.pushPairs = pushPairs;
this.senderId = senderId;
}

@Override
protected Integer doInBackground(Void... params) {
boolean connectedToInternet = connManager.getNetworkInfo( ConnectivityManager.TYPE_WIFI).isConnected()
|| connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected();
if (connectedToInternet)
{
String regId;
String[] arrayList = new String[]();

for(PushPair p: pushPairs)
{
regId = new String(p.getPushData());
arrayList.add(regId);
}

UserFunctions.sendPushNotifications(senderId, message, arrayList);

asyncTask = null;
return 0;
}

Я знаю, что приведенный выше код неверен, поэтому я спрашиваю.

(p) это список pushpairs, которые содержат идентификаторы регистрации GCM, которые я могу получить, используя функцию p.getPushData()я хочу заполнить массив строк каждым идентификатором регистрации и отправить его на мой сервер, а затем отправить его в GCM, код UserFunctions.sendPushNotifications(senderId, message, arrayList); является :

public static JSONObject sendPushNotifications(String senderId, String message, String[] gcm_regId)
{
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("message", message));
params.add(new BasicNameValuePair("senderId", senderId));

for (int i = 0; i < gcm_regId.length; i++)
params.add(new BasicNameValuePair("gcm_regId", gcm_regId[i]));

JSONObject json = JSONParser.getJSONFromUrl(hostURL+"gcm.php", params);
return json;
}

и мой код PHP:

$message = $_POST['message'];
$gcm_regId = $_POST['gcm_regId'];
$senderId= $_POST['senderId'];

// Set POST variables
$url = 'https://android.googleapis.com/gcm/send';

$fields = array(
'registration_ids'  => array($gcm_regId),
'data'              => array( 'message' => $message ),
'senderId'          => $senderId,
);

$headers = array(
'Authorization: key=' . '*********************',
'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 ) );

curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);

// Execute post
$result = curl_exec($ch);

// Close connection
curl_close($ch);

echo json_encode( $result );

Я могу отправить уведомление на первое устройство, на котором пользователь выполнил вход, используя

pusPairs.get(0).getPushData();

но я хочу отправить уведомление всем устройствам, на которых пользователь вошел в свою учетную запись, поэтому, пожалуйста, помогите.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]