A common question when using an Android phone as an SMS gateway for FrontlineCloud and FrontlineSMS is “how many SMS can I send in a set time period?” Our research on this has been far and wide; we originally set out to find out what the SMS rate limits are for each Android OS (OEM) shipped with phones. The official publicised limits for SMS sending per-app are as follows:
- Maximum of 100 SMS per hour for all Android versions below 4.1.1
- Maximum of 30 SMS every 30 minutes, for all Android versions since 4.1.1
Despite this documented limit, our research found inconsistencies in how different phones behave at the limit. Some phones do not show any warning at all and allow unlimited messaging. Most phones respect the limit and show the popup documented below, while still instantly failing the messages instead of waiting for the user's approval.
Due to the device-specific behaviour around these SMS limits, we have accumulated some useful tips, links and test cases below. We will keep the information in this document up to date as we learn more, as new OS versions come out and as more of our users report their findings.
Tests run in May 2016 on Safaricom's network in Kenya using a Samsung J1 Mini have shown a consistent rate of sending at 40 SMS per minute (~1.5 seconds per SMS); 2,400 SMS per hour. There was no Sending Limit restriction on the phone.
We’ve tested on a few different Samsung S Series phones so far, none of which have hit limits, and therefore allowing us to send 100+ SMS in one go (typically sent in under 20 minutes). These top-end handsets might be tending toward best-case performance and there is some non-Google research[1] [2] that suggests users should expect a worst-case performance of sending 100 SMS per hour. At present it appears there is no guarantee we can offer that covers all hardware and software combinations.
An example of the expected behaviour of Android OS when hitting the sending limit. On Android 4.3 and below (Left), 4.4 (Right)
Some other research suggests that Samsung phones may not throttle (restrict the number of messages sent in a certain time period - see image above) the ability of apps to send messages, leading other organisations to endorse Samsung phones for gateway SMS sending[3].
If you do find out what your device's SMs limit is, please let us know your findings, so that we can add them to our device database[4].
Enabling FrontlineSync's built-in Rate Limiting
FrontlineSync now offers the option to limit the rate at which SMS are sent out, to avoid hitting these Android limits. This feature is disabled by default. To enable rate-limiting, follow the steps below:
- Open the FrontlineSync app on your Android phone
- Tap on the Settings option
- In the settings menu, select "SMS Rate Limiting"
- On the rate limiting page, select the appropriate rate limit for your Android version (how do I find out which Android version I have?)
- Press the Save button to enable this
If the SMS Rate Limiting option is not available in your FrontlineSync app, you may be running an older version of FrontlineSync that does not have this feature. Check the Google Play store for updates to the app.
With rate-limiting enabled, FrontlineSync will ensure messages are sent out as fast as possible but without exceeding the Android system limit. You should therefore never see the SMS limit popups when this feature is enabled.
Whenever SMS sending is being delayed to avoid exceeding the Android limit, you will see the alert below in the FrontlineSync app. Using the Activity Log in FrontlineSync, you can also identify the messages that have been delayed due to throttling - they will have the status "QUEUED" next to them in the message list.
Alternative options for handling the Android SMS sending limit
- Use one of our recommend phones: If you are not already using one of the phones we have tested to have better or no SMS sending limits, then switching to one (e.g. the Samsung Galaxy J1 Mini) can fix your problem.
- Root the phone and remove or change the SMS sending limit: You can completely remove the SMS sending limit by rooting your phone using apps like KingoRoot and using an app like SMS Limit Unlock to remove or change limit.
Rooting your phone is a technical task that is often against manufacturer's warranty terms, so please read online about the rules and best practice for this with your particular handset. Rooting can, and does in several cases, result in your phone not working, so this should be carried out with extra precaution. Due to the risks involved here, Frontline does not endorse or recommend this approach, and if carried out in order to use FrontlineSync, you do so at your own risk. - Use an aggregator: We do support integrating with a number of aggregators to send out messages, including Twilio, Nexmo, Clickatell, and WorldText. Feel free to contact us if the aggregator you plan to use is not listed. More information on the aggregators we support can be found in our connections documentation.
- Reduce the size of the SMS batches that you send out: You can also go around the the limit by sending smaller numbers of messages per period of time. There is no global limit at which Android handsets can handle SMS without encountering these issues, so you can determine what that number is for your handset by trying in small batches and incrementally increasing the number of messages sent.
[1] http://smssync.ushahidi.com/features/#toc_1
[2] http://support.telerivet.com/customer/portal/articles/1205288-customizing-app-setttings#rate_limit
[4]http://bit.ly/test-frontlinesync
0 Comments