如何使用php从android向gcm发送注册ID数组
我试图使用php将注册ID数组发送到gcm,但它不起作用,我使用的是sinch,下面是我的代码:如何使用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
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();