当前位置: 首页 > 知识库问答 >
问题:

在google cloud messenger中参数不能为空异常

毛博
2023-03-14

下面是我的源代码

public final static int sendGCM(final String title, final List<String> registrationID)  throws IOException{         
            int status = 0;
            Sender sender = new Sender(apiKey);

            Message message = new Message.Builder()
                // .collapseKey("1")
                .timeToLive(86400)//sets the time of 1 day for GCM to push notifications when android device is off, offline or unavailable
                .delayWhileIdle(true)
                .addData("message", title)              
                .build();                        

            MulticastResult  result = sender.send(message, registrationID, 1);
            System.out.println("Result "+result);
                if(result == null){
                    throw new IOException("Could not send message");                    
                }else{
                    status = 1;
                }

                return status;  
    } 

共有1个答案

邓焱
2023-03-14

该问题是由于GCM支持单个消息最多1,000个收件人

因此,我将注册数组列表分成1000个相等的部分,然后将消息发送给GCM。现在我可以发送推送通知了。

以下是我更新的代码

public final static int sendGCM(final String title, final List<String> registrationID)  throws IOException{         
        int status = 0;
        MulticastResult  result =null;


        for (int start = 0; start < registrationID.size(); start += 1000) {
            int end = Math.min(start + 1000, registrationID.size());
            List<String> sublist = registrationID.subList(start, end);
            System.out.println(sublist);
            Sender sender = new Sender(apiKey);

            Message message = new Message.Builder()
                // .collapseKey("1")
                .timeToLive(86400)//sets the time of 1 day for GCM to push notifications when android device is off, offline or unavailable
                .delayWhileIdle(true)
                .addData("message", title)              
                .build();                        

            result = sender.send(message, sublist, 1);
            System.out.println("Result "+result);
        }
         if(result == null){
                throw new IOException("Could not send message");                    
            }else{
                status = 1;
            }
            return status;  
        }
 类似资料:
  • 在Client.ExecuteMethod调用上。 为什么会发生这种情况?

  • 问题内容: 我试图在我的appsettings.json文件中写入连接字符串,并将其带入我的启动文件中,但我不断得到一个Value不能为null。参数名称:connectionString。我一直在使用各种示例,但似乎看不到带有ASP.NET 1.0 Core启动类的新设置。 Appsetting.json文件: 尝试Startup.cs的方法 问题答案: 首先, 与在Visual Studio中

  • 我希望我的脚本执行其所有整数参数的乘积。我试图用替换空白,然后计算操作,而不是执行循环。但是我得到了以下我不明白的结果: 为什么第一个在使用中间变量工作正常时产生错误?

  • 在使用RestAssured的cucumber api测试中,我试图将路径参数作为空/空传递。 例如,当我以>>http://localhost:8093/my-rest-call//指令调用endpoint时 它给404但我希望是500。在《邮递员》中,它和预期的一样工作 但是,如果末尾的path参数为null/empty。如下所示,我得到了500个内部服务器错误。 我尝试的其他选项是have“

  • 问题内容: 我有一个发送参数的表格。在我的表格中,我有一个复选框。如果未选中我的复选框,则不会获得任何参数。 如果在我的模块中,我有: 并且如果未选中我的复选框(未传递参数) 然后在调试模式下,我收到错误消息: 错误的请求浏览器(或代理)发送了该服务器无法理解的请求。 什么都没有告诉我错误是什么。 我通过使用防止了异常: 但是我不能改变Flask处理这种​​情况的行为吗? 问题答案: 如果未定义参

  • 我做了一个自动加载用户设置xml文件的程序,但一个问题是,当我在代码中添加新值时,程序试图读取没有“data5”值的xml文件时,程序返回一个错误: 当我关闭程序时,我得到了另一个关于另一个进程使用的文件的错误 我不明白为什么文件仍然被锁定。它应该在之后关闭。我试图让程序在读取xml之前创建一个新的xml值,但这不是一个好主意,因为它将替换修改后的值。这是我的密码