发送导致问题的50多条消息会导致一般性故障

Has*_*nir 5 sms android smsmanager

我正在开发一个应用程序,我需要发送100多条消息.经过几个线程后我才知道发送邮件有限制,可以在一小时内发送100封邮件.为此,我将收件人列表分成块,并在每个块之间放置5秒的延迟,并在每条消息中放置3秒的延迟.块之间的延迟在每个块之后增加,当它达到100秒时,它将重置为5秒.之后它可以正常工作50条消息,但是当我提出收件人列表时,它会导致问题,一些消息没有首先出现,并显示为本机错误消息.

有没有任何标准的方法来实现这一点我可能需要发送100多条消息,如何一次发送多条消息而没有任何失败.如果我需要延迟应该是块或消息之间的适当延迟.

提前致谢.

private final int MAX_SMS_IN_ONE_TIME = 10;
private final int DELAY_BETWEEN_CHUNKS = 5000;

public void sendMessage(arguments){ 
    // Send long messages in chunk of 20 messages and put gap of increasing 5 seconds till 50 seconds and then reset.

    final Iterator iterator = messageChunks.iterator();
    new Thread(new Runnable() {
        @Override
        public void run(){

        int interval =1;
        while (iterator.hasNext()) {

            for (final Contact contact :
                (List<Contact>) iterator.next()) {

                sendSMS(body, contact.getmMobileNumbers().get(0));

                App.trackEvent("Message", "Sent", "Messages from our sms app");
            }
        }
        try {
            Log.i("chunk", "chunk # " + interval + " delay is " + DELAY_BETWEEN_CHUNKS);
            Thread.sleep(DELAY_BETWEEN_CHUNKS * interval);
            interval++;
            if (interval == 10) {
                interval = 1;
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        }
        }
    }).start();
}

public void sendSMS(final String message, final String phoneNo) {
    try {
        String SENT = "com.ebryx.smscustommessagegeneration"+""+System.currentTimeMillis()+""+((int)this.getmMessageId());
        Intent intentMessageASendStatus = new Intent(SENT);

        final PendingIntent pi = PendingIntent.getBroadcast(App.getContext(),  ((int)this.getmMessageId()),
                intentMessageASendStatus, PendingIntent.FLAG_CANCEL_CURRENT);
        final ArrayList<PendingIntent> sentPI = new ArrayList<PendingIntent>(){{add(pi);}};

        App.getContext().registerReceiver(new BroadcastReceiver(){
            @Override
            public void onReceive(Context arg0, Intent arg1) {


                switch (getResultCode())
                {
                    case Activity.RESULT_OK:

                        Log.i("tag","sent successfully ");
            break;
                    case SmsManager.RESULT_ERROR_GENERIC_FAILURE:

                        Log.i("tag","Generic Failure");
                break;

                    case SmsManager.RESULT_ERROR_NO_SERVICE:

                        Log.i("tag","No service failure");
            break;

        case SmsManager.RESULT_ERROR_NULL_PDU:
                        break;
                    case SmsManager.RESULT_ERROR_RADIO_OFF:

                        Log.i("tag","Airplane mode failure");
                        break;
                }
            }
        }, new IntentFilter(SENT));

        final SmsManager smsManager = SmsManager.getDefault();
        final ArrayList<String> parts = smsManager.divideMessage(message);

        new Timer().schedule(new TimerTask() {
                @Override
                public void run() {
                    smsManager.sendMultipartTextMessage(phoneNo, null, parts, sentPI, null);

                }}, 3000);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 2

从我能找到的以及以下网站来看,似乎没有关于短信发送限制的官方文档。

\n\n
\n

不幸的是,Google\xe2\x80\x99s Android 开发团队似乎没有关于此问题的公开文档。

\n
\n\n

这是2017年5月17日开始的

\n\n

我能找到的有关短信限制的唯一数据来自Commonsware的网站:

\n\n
\n

短信发送限制
\n 在 Android 1.x 和 2.x 设备上运行的应用程序每小时只能发送 100 条短信,然后\n 用户开始收到每个短信请求的提示,以确认\n 他们确实希望发送。

\n\n

在 Android 4.x 设备上运行的应用程序,现在的限制是 30 分钟内 30 条短信\n .../...

\n
\n\n

如果不root手机,似乎没有办法增加这个限制。您需要更改以下设置的地方。以下将允许每 180000 毫秒 == 30 分钟发送 1000 条短信。

\n\n
SMS_OUTGOING_CHECK_MAX_COUNT 1000\nSMS_OUTGOING_CHECK_INTERVAL_MS 1800000\n
Run Code Online (Sandbox Code Playgroud)\n\n

常见的(令人沮丧的)Android 问题(跨设备性能不同)也同样适用。一部手机的性能可能与另一部手机不同。

\n\n

该公司已经确定了其产品中某些手机的最大短信容量。FrontlineSync 和 Android 的 SMS 发送限制。他们还建议可能需要root手机才能增加限制。

\n\n

相关资源:

\n\n

检查android套餐短信限制?

\n\n

发送短信的号码数量有限制吗?

\n\n

Android Java:如何发送短信、接收短信和获取短信,日期为 2017 年 8 月 30 日。

\n