Seems like Particle.publish is best method.
I assume the .publish method uses less Electron cellular data, because it only uploads GPS data to cloud when it changes. And, .variable uses more because my mobile iOS SDK app is calling .getVariable every 5-10 seconds to read GPS from the Electron.
Particle.variable …
Presently, my asset tracker Electrons expose the firmware GPS data with Particle.variable(“g”, my_Lat_Lon).
Then, my mobile iOS SDK based app reads it with [ getVariable:@“g”…
This takes a few seconds because mobile sends request to cloud, which sends to Electron, which sends back response (GPS “g” variable) to cloud, which sends to mobile.
Particle.publish …
This is faster because Electron sends GPS data, when it changes, immediately to cloud, and then cloud pushes new GPS to mobile app.