The following is a guide for improving your location region experience on Stringify mobile applications.
Android allows the user to set your Location Accuracy. It gives you the options of High accuracy, Battery saving, and Device only. Your Stringify location experience will change slightly based on your setting. I suggest only using either High accuracy or Battery saving. High accuracy will use GPS and will use more battery power than Battery saving which relies on cell towers, wifi, and bluetooth.
To give you an idea of the accuracy differences: High accuracy locations generally come in terms of tens of meters where as Battery saving locations can come in terms of hundreds or thousands of meters. So let's say you have a location region that's 100m in radius. If you're on High accuracy, your device may likely get a location that's accurate within 20 meters. If you're on Battery saving and connected to wifi, your device may also get a location that's accurate within 20 meters. But if you're on Battery saving and NOT connected to wifi, than your device may also get a location that's accurate within 800 meters. I've even seen it as bad as 4,000 meters. When your device is relying on cell towers for location it can be pretty inaccurate.
That being said, i've fully optimized the Stringify application to properly handle location region even when you're on Battery saving mode getting locations that are accurate within 800+ meters. But do be aware that you'll get better and more responsive location triggers with High accuracy set.
Go to Settings -> Location -> Mode.
Doze Mode is an Android feature, Android 6.0 Marshmallow and above, that saves battery by disabling location features and internet access to Stringify’s background service. It's nice for saving battery, but it will hinder your ability use Stringify's location regions. Doze Mode is turned on by default for all Android applications and will kick in a short time after you lock your screen or leave your device idle. Here I will explain the pros and cons to using it as well as when you want to use it and when you want to disable. I'll also show you how to disable it.
Having Doze Mode turned on will delay your Stringify location triggers. The delay is usually between 0-10 minutes, but it can be more. If your location setting is not set to High Accuracy than you are more likely to get longer Doze delays. If your device is unlocked and not idle, Doze should not cause any delays in location triggers. If the couple minute delay doesn't bother you and you'd prefer to save as much battery as possible, then leave Doze Mode turned on and consider setting your Location to High Accuracy.
Having Doze Mode turned off will allow your device to process location and region changes as quickly and consistently as possible with minimal delays. The Stringify application is optimized to battery efficiently with Doze both on and off, although you'll see a little more battery usage with Doze Mode turned off.
Go to Settings -> Battery -> "..." -> Tap Battery optimization.
Filter by All apps.
Find the app in the list.
Set your preference. Optimize means Doze Mode is on. Don't optimize means Doze Mode is off.
All other battery saving "features"
I suggest disabling all other battery saving "features". Android device manufacturers vary and like to put their own spin on things. If you want your location flows to work properly, you should disable all battery saving "features" that are NOT Doze Mode. I do fully support Doze Mode, but will not be testing against the device manufactures specific optimization "features".
Go to Settings -> Battery. Some devices have them and some don't. But they may look like this.
Refrain from overlapping multiple regions in one location. For me, for example, if I stack 6 regions at my house, they all step on each other and none of them work. Sometimes one will work, and sometimes none will work. Try to have only 1 single region per location with little to no overlap. See the "General suggestions regardless of device" section below for more details on this.
Turn off Low Power Mode
This will prevent the Stringify application from doing anything in the background. So keep it off unless you absolutely need it for a short period of time.
Go to Settings -> Battery.
General suggestions regardless of device
Avoid overlapping regions. Avoid creating multiple regions for one single location; example, If you have more than 1 flow containing your home location, you should be using the Mode Thing or the Functions: Variables Thing.
Here's how to use Functions: Variables to manage a region. Import and enable the following two flows. Have "Set home state" flow set a "HomeState" variable based on your location state. The second flow "Home state changes" will trigger when you enter or leave your region.
Make sure you give the Stringify application permissions to access your location. Airplane mode prevents location triggers.