我正尝试按照描述使用 Google GCM 多播消息传递 here .我需要同时发送 50,000 条消息。
文档说我应该将注册 ID 列表传递给 Sender.send()
。
我的问题 我很困惑,我应该一次传递包含所有 50,000 个 ID 还是 1000 个 ID 的列表,因为文档说 “GCM 中最有用的功能之一是支持最多 1,000 个收件人的一条消息。”
[Edit1] 这样可以吗?
Sender sender = new Sender(API_KEY);
List<List<String>> regIdsParts = regIdInThousands(getRegistrationIds(), 1000);
for (int i = 0; i < regIdsParts.size(); i++) {
Message message = new Message.Builder()
.addData(MsgKey, message).build();
MulticastResult result = sender.send(message, regIdsParts.get(i), 5);
}
public List<List<String>> regIdInThousands(List<String> list, final int L) {
List<List<String>> parts = new ArrayList<List<String>>();
final int N = list.size();
for (int i = 0; i < N; i += L) {
parts.add(new ArrayList<String>(
list.subList(i, Math.min(N, i + L))));
}
return parts;
}
方法 regIdsThousands 来自 this问题谢谢polygenelubricants
最佳答案
一次传递 1,000 个 ID。单封邮件的收件人不能超过 1,000 个。
关于Android GCM 同时发送 50,000 条消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14298471/