General Questions
  • New to Geoloqi? Ask a question here!
  • 36 Comments sorted by
  • Hi all, and thanks for creating Geoloqi.

    I created a private layer. I see that in the layer Settings an "App URL" field is available, which would be "used in the Layer tab of the Geoloqi app. (This requires approval, contact us)".

    Currently, I only plan to use my layer myself - so can I safely ignore this "App URL" field?
  • Hi Waqas, I've merged your accounts so if you log in with Twitter now you should have access to your main account.
  • Hello, there seems to be a bug in 'Connecting Geoloqi account with twitter'. When I connect my account with twitter, it created a separated account and none of my data (application, layers, places etc) was copied from geoloqi account.
    And now I can't login to my twitter-connect account unless I login with my normal geoloqi account and click on connection and then on twitter logo.

    My twitter id is: waqas_siddiqi
  • To give you an idea, our sample Wikipedia layer currently has about 15,000 triggers on it, and handles it just fine for all our users.

    If you think you need capacity greater than this, then please email us at sales@geoloqi.com and we can discuss further.
  • Yes you can safely ignore it. It is only used if you will be making an application that uses the layer.
  • I have an app that needs to check the location in the background every 10 min. Does this mean that there will be 4,320 api calls per month per user? (6 api calls/hr * 24 hrs/day * 30 days/month) 
  • Yes, that is a good estimate of the expected usage volume. If you have a specific use case where our advertised pricing wouldn't be a good fit, feel free to contact us and we can work something out: http://developers.geoloqi.com/enterprise
  • I'm trying to add some Apple APNs p12 certificates (dev & prod) to my app, but I keep getting an error message about the server being unable to open the certificates. I've believe I've configured them properly in the iTunes Provisioning Portal and I've added them to my keychain. I export them from the keychain in p12 format and I specify passwords, which I type into the portal when I attempt to upload them. What am I doing wrong?
  • Can you try uploading them again without a password? That might fix it.
  • Hi,

    I am evaluating geoloqi as the backend for a location-aware Android app, and I am able to get the sample up and running just fine, but I have a question:   It appears that all the trigger/geonote functionality is server-side.  Is this correct?  What I want is just a simple way to set a trigger in geoloqi on the Android phone, and supply a Java callback which will get run when the phone sets off the trigger, without needing to set up an external server to handle any of this.  Is that possible?

    Thanks,
    Scott
  • Hey Scott,

    You can create a trigger via the Geoloqi API from the Android device using the runPostRequest() methods of LQSession. In the current version of the SDK there is not a way to trigger a callback on the Android device when the trigger fires.

    In future releases of the SDK this functionality will be provided through the use of push messaging. Basically you'll be able to specify some kind of payload on a trigger to be delivered to the client via push messaging. You'll be able to set up a BroadcastReceiver to listen for this payload.

    What kind of action are you looking to trigger on the device? Maybe I can provide an interim solution for you.

    -Tristan
  • Hi Tristan,

    Thanks for the reply.  Basically I just want a self-contained solution on the Android device itself.  I don't want to set up a server that needs to deal with callbacks, and ideally it shouldn't even need to talk to your server, so it would work even when out of network service (i.e. when out in the woods or on a lake).  I just want to register a trigger with the geoloqi service on the device, and when the trigger fires, I would like it to tell my app directly rather than tell your server, which then tells my server, which then potentially sends a message back to the device...

    Hopefully that makes sense,
    Scott
  • Hey Scott,

    Since the trigger logic can get pretty complicated it makes more sense for us to offload that processing to the server-side. However, if you're looking to implement a really basic trigger, you could consume the onLocationChanged callback provided by our Android SDK and write your own trigger logic on the client.

    I don't think we have any plans to implement client-side triggers into the SDK anytime soon.

    -Tristan
  • Testing examples of javascript client libraries as posted at 
    http://developers.geoloqi.com/client-libraries/Javascript.

    I've tried both examples.  I can't get either of them to work.  I've inserted my application access token in place of 'YOUR ACCESS TOKEN GOES HERE'  in the first example.  In Firebug receive this error:  o is undefined.  (geoloqi.min.js.)

    In the second example Oauth same issue when using the client_idd.config is undefined .

    Am I missing something?
  • Those demos a have an error in them you should take a look at the updated demos in the Geoloqi JS github repo. Ive also updated the Javascript library page http://developers.geoloqi.com/client-libraries/Javascript.

    Oauth Demo

    You should never user your Application Access Token with the javascript client library because then anyone who loads your page will be able to see your Application Access Token and use it make requests as your application. You should have your user authenticate your users via oauth or use the geoloqi.login method. 
  • Thansk for creating the Geoloqi.

    We're considering to use Geoloqi as part of our app and I was hoping to ask about the scaling properties of your system. How many triggers can we expect your backend to handle per application and per user. Also, how fast can we expect to modify the triggers?

    Will appreciate your response,
    Arash
  • Hi,

    I am evaluating Geoloqi to see if I can use it as part of an app that receives triggers upon entering a specific location. I have been able to download the sample app and get it to compile. Could someone point me out to the server side settings? Where do i need to define the location boundaries?
  • There are a few ways to you can get started the easiest is to 

    1. create an app (link
    2. create a layer for that app (link) and use the visual editor to create your location based triggers
    3. subscribe to the layer (docs)

    You could also take a look at the trigger/create docs if you do not want to user the visual editor.
  • Thanks for your reply. Can you throw more light on the subscribe to the layer? This is what I have done till now.
    1. Downloaded the sample Android project and successfully compiled it in eclipse
    2. Created the app and created the layer to the app.

    I tried to run the sample app on the android mobile but it crashes immediately with the error "unfortunately geoloqi sdk has stopped" though there are no compile errors. I have updated the geoloqi.properties as well. Anything that I could have missed out doing that is throwing this error.
  • Sorry to hear you're having trouble with the Sample Android app! Can you post a stack trace of the crash from logcat?
  • Here is the stack trace below.

    06-11 14:02:22.742: I/dalvikvm(4819): Turning on JNI app bug workarounds for target SDK version 5...
    06-11 14:02:22.781: W/dalvikvm(4819): Unable to resolve superclass of Lcom/geoloqi/android/sample/receiver/SampleReceiver; (63)
    06-11 14:02:22.781: W/dalvikvm(4819): Link of class 'Lcom/geoloqi/android/sample/receiver/SampleReceiver;' failed
    06-11 14:02:22.781: E/dalvikvm(4819): Could not find class 'com.geoloqi.android.sample.receiver.SampleReceiver', referenced from method com.geoloqi.android.sample.ui.LauncherActivity.<init>
    06-11 14:02:22.781: W/dalvikvm(4819): VFY: unable to resolve new-instance 48 (Lcom/geoloqi/android/sample/receiver/SampleReceiver;) in Lcom/geoloqi/android/sample/ui/LauncherActivity;
    06-11 14:02:22.781: D/dalvikvm(4819): VFY: replacing opcode 0x22 at 0x0003
    06-11 14:02:22.781: W/dalvikvm(4819): VFY: unable to find class referenced in signature (Lcom/geoloqi/android/sdk/service/LQService;)
    06-11 14:02:22.785: W/dalvikvm(4819): VFY: unable to find class referenced in signature (Lcom/geoloqi/android/sdk/service/LQService;)
    06-11 14:02:22.785: I/dalvikvm(4819): Could not find method com.geoloqi.android.sdk.service.LQService.getTracker, referenced from method com.geoloqi.android.sample.ui.LauncherActivity.showBatchedLocationCount
    06-11 14:02:22.785: W/dalvikvm(4819): VFY: unable to resolve virtual method 140: Lcom/geoloqi/android/sdk/service/LQService;.getTracker ()Lcom/geoloqi/android/sdk/LQTracker;
    06-11 14:02:22.785: D/dalvikvm(4819): VFY: replacing opcode 0x6e at 0x000d
    06-11 14:02:22.785: E/dalvikvm(4819): Could not find class 'com.geoloqi.android.sdk.service.LQService', referenced from method com.geoloqi.android.sample.ui.LauncherActivity.onCreate
    06-11 14:02:22.785: W/dalvikvm(4819): VFY: unable to resolve const-class 65 (Lcom/geoloqi/android/sdk/service/LQService;) in Lcom/geoloqi/android/sample/ui/LauncherActivity;
    06-11 14:02:22.789: D/dalvikvm(4819): VFY: replacing opcode 0x1c at 0x000b
    06-11 14:02:22.793: W/dalvikvm(4819): Unable to resolve superclass of Lcom/geoloqi/android/sample/receiver/SampleReceiver; (63)
    06-11 14:02:22.793: W/dalvikvm(4819): Link of class 'Lcom/geoloqi/android/sample/receiver/SampleReceiver;' failed
    06-11 14:02:22.793: W/dalvikvm(4819): VFY: Ljava/lang/Object; is not instance of Landroid/content/BroadcastReceiver;
    06-11 14:02:22.793: W/dalvikvm(4819): VFY: bad arg 1 (into Landroid/content/BroadcastReceiver;)
    06-11 14:02:22.793: W/dalvikvm(4819): VFY:  rejecting call to Landroid/content/ContextWrapper;.unregisterReceiver (Landroid/content/BroadcastReceiver;)V
    06-11 14:02:22.793: W/dalvikvm(4819): VFY:  rejecting opcode 0x6e at 0x0011
    06-11 14:02:22.793: W/dalvikvm(4819): VFY:  rejected Lcom/geoloqi/android/sample/ui/LauncherActivity;.onPause ()V
    06-11 14:02:22.793: W/dalvikvm(4819): Verifier rejected class Lcom/geoloqi/android/sample/ui/LauncherActivity;
    06-11 14:02:22.793: W/dalvikvm(4819): Class init failed in newInstance call (Lcom/geoloqi/android/sample/ui/LauncherActivity;)
    06-11 14:02:22.793: D/AndroidRuntime(4819): Shutting down VM
    06-11 14:02:22.793: W/dalvikvm(4819): threadid=1: thread exiting with uncaught exception (group=0x40a3e1f8)
    06-11 14:02:22.796: E/AndroidRuntime(4819): FATAL EXCEPTION: main
    06-11 14:02:22.796: E/AndroidRuntime(4819): java.lang.VerifyError: com/geoloqi/android/sample/ui/LauncherActivity
    06-11 14:02:22.796: E/AndroidRuntime(4819):     at java.lang.Class.newInstanceImpl(Native Method)
    06-11 14:02:22.796: E/AndroidRuntime(4819):     at java.lang.Class.newInstance(Class.java:1319)
    06-11 14:02:22.796: E/AndroidRuntime(4819):     at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
    06-11 14:02:22.796: E/AndroidRuntime(4819):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871)
    06-11 14:02:22.796: E/AndroidRuntime(4819):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
    06-11 14:02:22.796: E/AndroidRuntime(4819):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
    06-11 14:02:22.796: E/AndroidRuntime(4819):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
    06-11 14:02:22.796: E/AndroidRuntime(4819):     at android.os.Handler.dispatchMessage(Handler.java:99)
    06-11 14:02:22.796: E/AndroidRuntime(4819):     at android.os.Looper.loop(Looper.java:137)
    06-11 14:02:22.796: E/AndroidRuntime(4819):     at android.app.ActivityThread.main(ActivityThread.java:4424)
    06-11 14:02:22.796: E/AndroidRuntime(4819):     at java.lang.reflect.Method.invokeNative(Native Method)
    06-11 14:02:22.796: E/AndroidRuntime(4819):     at java.lang.reflect.Method.invoke(Method.java:511)
    06-11 14:02:22.796: E/AndroidRuntime(4819):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    06-11 14:02:22.796: E/AndroidRuntime(4819):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    06-11 14:02:22.796: E/AndroidRuntime(4819):     at dalvik.system.NativeStart.main(Native Method)

  • Did you make any changes to the sample application when you imported the project such as changing the package name? Have you made any other changes to the app code?
  • I changed the project.properties file to point to target android-15 instead of android-5, since I have android-15 installed. Then i changed the java compiler to point to 1.6 followed by Android-tools-> Fix project properties to remove compilation errors.
  • I have not made any changes to the app code..
  • Hrm. Are you running this on an emulator or a device? Do you have any other Geoloqi applications installed?
  • Device.. nope..no other applications installed. I just re-imported the project and these are some observations I made.
    - When i add the jar file to the build path, the following errors start showing up for the package names- The type android.content.Context cannot be resolved. It is indirectly referenced from
         required .class files
        - The type android.os.Bundle cannot be resolved. It is indirectly referenced from required .class files
        - The type android.location.Location cannot be resolved. It is indirectly referenced from
         required .class files
    These errors disappear only when i select Android tools->Fix project properties.

    After clearing all compile errors, this time I tried running on  an emulator. But i get the following error in eclipse- Unknown error: java.lang.NullPointerException.
    Anything i missed doing?
  • I'm having trouble reproducing the issues you're encountering. It looks like something is seriously hosed up with your project configuration. You might make sure you're running the latest version of the Android SDK and the Android Eclipse Plugin.

    You should check and make sure that your project's "gen" folder is on your build path. If you right-click on the project in the package explorer and select "Properties" then navigate to "Java Build Path." Select the "Source" tab and make sure that both the "src" and the "gen" folder are included in the list of "Source folders on build path."

    Also, instead of importing the project, you might try creating a new project from existing source. This option can be found in Eclipse by going to "File -> New -> Android Project" and ticking the "create project from existing source" option. Sometimes this is helpful when I'm having trouble importing the project.
  • thanks for that suggestion!!!
    the creating a new project did the trick! i just repeated all the settings after creating the project and it worked! :)

    I think this should be my final question-- what are we supposed to do for the subscribing to the layer as u mentioned in step 3 a few posts above..could you let me know exactly what i should do there?
  • You'll want to subscribe whatever user is signed-in to the Android client to your layer so they receive push messages. You can do that using the layer/subscribe/:id API endpoint. Simply make a request to that endpoint with your layer_id instead of the ':id' string. Make sure you're authorizing the request as the active user. You can make an API request using curl from the command-line or by using the LQSession methods in the Android SDK: http://developers.geoloqi.com/android/making-api-requests
  • do i have to make any changes to the code in the sample app for that?
  • Not necessarily no. Only if you want to update the application to subscribe the user. If you subscribe the user some other way, you don't need to make any changes to the sample app. One example would be to sign-in to the sample app using your developer account (tap settings -> username). Then open your web browser and subscribe your user to your layer.
  • Hi All,

    I am estimating which type of account i need. What is the number of the geotriggers, the number of them you can create or the number of times it is run, sending a specific message?

    Thank you.
  • Hi,

    Could you clarify this for me? I realise the trigger processing is done server-side by the API which makes sense due to the complexity of analysing the trigger condition, and also because of the variety of options for alerting when the trigger condition fires.

    So..is there any sort of alerting that can be done on the client-side itself, without the server round-trip? For example, if my device loses network connectivity, my app still knows its real-time location. Does the SDK cache any geofences client-side so that the app can still fire alerts (eg push notifications) when working disconnected? Or are we really relying on connected scenarios for all real-time alerting?

    Thanks for your help.
  • How does Geonotes supposed to be work?
  • why im gettting this exception

    07-19 08:00:48.008: E/LQTracker(901): Failed to push UDP location update!
    07-19 08:00:48.008: E/LQTracker(901): java.lang.NullPointerException
    07-19 08:00:48.008: E/LQTracker(901): at com.geoloqi.android.sdk.LQTracker.pushLocationUpdate(LQTracker.java:942)
    07-19 08:00:48.008: E/LQTracker(901): at com.geoloqi.android.sdk.LQTracker.access$1800(LQTracker.java:54)
    07-19 08:00:48.008: E/LQTracker(901): at com.geoloqi.android.sdk.LQTracker$5.run(LQTracker.java:857)
    07-19 08:00:48.008: E/LQTracker(901): at android.os.Handler.handleCallback(Handler.java:725)
    07-19 08:00:48.008: E/LQTracker(901): at android.os.Handler.dispatchMessage(Handler.java:92)
    07-19 08:00:48.008: E/LQTracker(901): at android.os.Looper.loop(Looper.java:137)
    07-19 08:00:48.008: E/LQTracker(901): at android.app.ActivityThread.main(ActivityThread.java:5041)
    07-19 08:00:48.008: E/LQTracker(901): at java.lang.reflect.Method.invokeNative(Native Method)
    07-19 08:00:48.008: E/LQTracker(901): at java.lang.reflect.Method.invoke(Method.java:511)
    07-19 08:00:48.008: E/LQTracker(901): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    07-19 08:00:48.008: E/LQTracker(901): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    07-19 08:00:48.008: E/LQTracker(901): at dalvik.system.NativeStart.main(Native Method)
    07-19 08:00:48.388: E/LQTracker(901): Failed to connect the local UDP socket!
    07-19 08:00:48.388: E/LQTracker(901): java.net.SocketException: Socket is closed
    07-19 08:00:48.388: E/LQTracker(901): at java.net.DatagramSocket.checkOpen(DatagramSocket.java:419)
    07-19 08:00:48.388: E/LQTracker(901): at java.net.DatagramSocket.connect(DatagramSocket.java:486)
    07-19 08:00:48.388: E/LQTracker(901): at com.geoloqi.android.sdk.LQTracker$3.run(LQTracker.java:710)
    07-19 08:00:48.388: E/LQTracker(901): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
    07-19 08:00:48.388: E/LQTracker(901): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
    07-19 08:00:48.388: E/LQTracker(901): at java.lang.Thread.run(Thread.java:856)

  • and this too 
    07-19 10:45:24.602: E/LQTracker(1140): Failed to connect the local UDP socket!
    07-19 10:45:24.602: E/LQTracker(1140): java.net.SocketException: Socket is closed
    07-19 10:45:24.602: E/LQTracker(1140): at java.net.DatagramSocket.checkOpen(DatagramSocket.java:419)
    07-19 10:45:24.602: E/LQTracker(1140): at java.net.DatagramSocket.connect(DatagramSocket.java:486)
    07-19 10:45:24.602: E/LQTracker(1140): at com.geoloqi.android.sdk.LQTracker$3.run(LQTracker.java:710)
    07-19 10:45:24.602: E/LQTracker(1140): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
    07-19 10:45:24.602: E/LQTracker(1140): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
    07-19 10:45:24.602: E/LQTracker(1140): at java.lang.Thread.run(Thread.java:856)

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

In this Discussion