修复GCM 1000消息限制,帮助循环脚本

时间:2016-07-14 07:55:01

标签: php android google-cloud-messaging

我正在使用PHP向用户发送GCM通知。基于他们的令牌保存在服务器上的SQL中。但我一次只能发送1000个通知,

这是我的工作代码,现在我需要编辑它来循环该过程,并分段发送5000通知,1000比1000等。

这是我的PHP代码,以及我没有在这里发布的简单HTML,

- name: private route table
  ec2_vpc_route_table:
    vpc_id: "{{ vpc_a_id }}"
    region: "{{ ec2_region }}"
    tags:
      Name: private
    subnets:
      - "{{ private_subnet_a.id }}"
      - "{{ private_subnet_b.id }}"
      - "{{ private_subnet_c.id }}"
    routes:
      - dest: 0.0.0.0/0
        gateway_id: "{{ nat_instance }}"
      - dest: "{{ vpc_b_cidr }}"
        gateway_id: "{{ vpc_a_to_b_pcx_id }}"
  register: private_route_table

2 个答案:

答案 0 :(得分:0)

不是通过registrationId发送通知,而是为什么不按主题使用发送通知。您只需要让客户订阅某个主题。

在GCM中,您可以使用以下代码发送通知主题:

function send_notification_topic($topicname, $message){
    $url = 'https://android.googleapis.com/gcm/send';
    $fields = array(
         'to' => '/topics/' . $topicname,
         'data' => $message
        );

    $headers = array(
         'Authorization: key=AIzablablablayourServerKey',
         'Content-Type: application/json'
        );

    $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('Curl failed : ' . curl_error($ch));
    }
    curl_close($ch);
    return $result;
}

答案 1 :(得分:0)

使用此代码分割您的代币。

getAvailableLocales()

对于除法GCM可能会推迟通知。它需要2-10分钟。