如何使用php从android向gcm发送注册ID数组

如何使用php从android向gcm发送注册ID数组,php,android,arrays,google-cloud-messaging,sinch,Php,Android,Arrays,Google Cloud Messaging,Sinch,我试图使用php将注册ID数组发送到gcm,但它不起作用,我使用的是sinch,下面是我的代码: class sendPushNotifications extends AutoAsyncTask { List<PushPair> pushPairs; String message; String senderId; public sendPushNotifications(Context context, String message, St

我试图使用php将注册ID数组发送到gcm,但它不起作用,我使用的是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;
        } 
我的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();

但我想向所有设备发送通知,告知用户已使用该通知登录到其帐户,因此请提供一些帮助。

您能澄清这个问题吗?您是否试图将推送通知发送到多个设备,但它只发送到阵列中的第一个注册号?@mravca我知道如何将其发送到一个设备,但我不知道如何将包含推送对列表中所有注册ID的数组从android发送到php,也不知道如何将它从php发送到GCM从一个android设备,您希望向服务器发送多少注册ID?通常每个应用程序只有一个注册ID。你能打印出从Android设备接收到的JSON吗?@koh我正试图获取另一端用户的所有注册id,因为pushpairs是该用户注册设备的列表,我获取用户使用pushpairs.get(0).getPushData()登录的第一个设备的注册id,但这不是我想要的,我想要的是,如果用户正在使用多个设备,则获取其所有注册ID。是的,每个应用实例将只有一个注册ID。您可以做的是,从每个设备分别发送每个注册ID。要验证它们是否来自特定用户,您可以在发送的每条消息中包含有效负载(如用户名)。让您的PHP服务器根据每个用户对所有这些注册ID进行排序。
pusPairs.get(0).getPushData();