Alpha Software Mobile Development Tools:   Alpha Anywhere    |   Alpha TransForm subscribe to our YouTube Channel  Follow Us on LinkedIn  Follow Us on Twitter  Follow Us on Facebook

Announcement

Collapse

The Alpha Software Forum Participation Guidelines

The Alpha Software Forum is a free forum created for Alpha Software Developer Community to ask for help, exchange ideas, and share solutions. Alpha Software strives to create an environment where all members of the community can feel safe to participate. In order to ensure the Alpha Software Forum is a place where all feel welcome, forum participants are expected to behave as follows:
  • Be professional in your conduct
  • Be kind to others
  • Be constructive when giving feedback
  • Be open to new ideas and suggestions
  • Stay on topic


Be sure all comments and threads you post are respectful. Posts that contain any of the following content will be considered a violation of your agreement as a member of the Alpha Software Forum Community and will be moderated:
  • Spam.
  • Vulgar language.
  • Quotes from private conversations without permission, including pricing and other sales related discussions.
  • Personal attacks, insults, or subtle put-downs.
  • Harassment, bullying, threatening, mocking, shaming, or deriding anyone.
  • Sexist, racist, homophobic, transphobic, ableist, or otherwise discriminatory jokes and language.
  • Sexually explicit or violent material, links, or language.
  • Pirated, hacked, or copyright-infringing material.
  • Encouraging of others to engage in the above behaviors.


If a thread or post is found to contain any of the content outlined above, a moderator may choose to take one of the following actions:
  • Remove the Post or Thread - the content is removed from the forum.
  • Place the User in Moderation - all posts and new threads must be approved by a moderator before they are posted.
  • Temporarily Ban the User - user is banned from forum for a period of time.
  • Permanently Ban the User - user is permanently banned from the forum.


Moderators may also rename posts and threads if they are too generic or do not property reflect the content.

Moderators may move threads if they have been posted in the incorrect forum.

Threads/Posts questioning specific moderator decisions or actions (such as "why was a user banned?") are not allowed and will be removed.

The owners of Alpha Software Corporation (Forum Owner) reserve the right to remove, edit, move, or close any thread for any reason; or ban any forum member without notice, reason, or explanation.

Community members are encouraged to click the "Report Post" icon in the lower left of a given post if they feel the post is in violation of the rules. This will alert the Moderators to take a look.

Alpha Software Corporation may amend the guidelines from time to time and may also vary the procedures it sets out where appropriate in a particular case. Your agreement to comply with the guidelines will be deemed agreement to any changes to it.



Bonus TIPS for Successful Posting

Try a Search First
It is highly recommended that a Search be done on your topic before posting, as many questions have been answered in prior posts. As with any search engine, the shorter the search term, the more "hits" will be returned, but the more specific the search term is, the greater the relevance of those "hits". Searching for "table" might well return every message on the board while "tablesum" would greatly restrict the number of messages returned.

When you do post
First, make sure you are posting your question in the correct forum. For example, if you post an issue regarding Desktop applications on the Mobile & Browser Applications board , not only will your question not be seen by the appropriate audience, it may also be removed or relocated.

The more detail you provide about your problem or question, the more likely someone is to understand your request and be able to help. A sample database with a minimum of records (and its support files, zipped together) will make it much easier to diagnose issues with your application. Screen shots of error messages are especially helpful.

When explaining how to reproduce your problem, please be as detailed as possible. Describe every step, click-by-click and keypress-by-keypress. Otherwise when others try to duplicate your problem, they may do something slightly different and end up with different results.

A note about attachments
You may only attach one file to each message. Attachment file size is limited to 2MB. If you need to include several files, you may do so by zipping them into a single archive.

If you forgot to attach your files to your post, please do NOT create a new thread. Instead, reply to your original message and attach the file there.

When attaching screen shots, it is best to attach an image file (.BMP, .JPG, .GIF, .PNG, etc.) or a zip file of several images, as opposed to a Word document containing the screen shots. Because Word documents are prone to viruses, many message board users will not open your Word file, therefore limiting their ability to help you.

Similarly, if you are uploading a zipped archive, you should simply create a .ZIP file and not a self-extracting .EXE as many users will not run your EXE file.
See more
See less

How are you implementing offline capabilities and is it working

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    How are you implementing offline capabilities and is it working

    I have yet to find an updated discussion on this topic but if it exists please point me in that direction,bbut what I'm looking for is two things (strictly from a general discussion point)..

    1) This question may be better suited for a consultation with an Alpha engineer but maybe some of them will chime in on here, how are alpha anywhere's offline capabilities meant to be implemented? By this, I am curious if they are more for an application that may only run off a single offline list (i.e. the example inspection apps or example optimized form app), or is it capable of handling multiple offline lists all in a single component (so the initial load may be slow but then the user can do multiple things without having a solid Internet connection as I wouldn't auto sync but rather let them choose when to sync)?

    2) What types of apps are being built with offline capability and how well has the implementation worked? For example do you have multiple offline lists in a single component or just the ability of all list based components having offline capabilities so a user can come back to the most recent tool they had open?

    I ask these questions as I deal with a user base that is always connected to the Internet (let's face it there is almost some sort of data connection no matter where you are) but if their connection is weak (or on older standards like 3G) then they have issues loading the initial component and saving data back to the server as well as opening other components from the menu. To rectify this I was hoping I could move all my main tools into a single component which would make the very first load of the application slow, but the hope would be that if every list had offline capabilities running then the app would never need to be reloaded (unless they stay out of it for a few days) thereby giving the allusion of a more responsive application. I know it's technically possible but am curious if this is what the Alpha engineers were envisioning for offline capability or if it was more to build an offline app that did one task really well?

    Look forward to a healthy discussion as I think it'll have great benefits to the community at large! Happy coding!

    #2
    Re: How are you implementing offline capabilities and is it working

    What is your view of the tutorials with disconnected in PhoneGap and SQL Lite and using the cache, images, video etc. are you planning to use PhoneGap, if so have you tried - I'm not aware of a limitation in AA using disconnected UX list components at all in PhoneGap or Desktop. I have not bumped in to the issue you are describing. It might be worth while you going through the on-topic video's in most recent to oldest order.

    Cheers Pete
    Insanity: doing the same thing over and over again and expecting different results.
    Albert Einstein, (attributed)
    US (German-born) physicist (1879 - 1955)

    Comment


      #3
      Re: How are you implementing offline capabilities and is it working

      I have looked into PhoneGap, but my biggest complaint there is if a component needs fixed or added too I can't instantaneously have it up and running if it's a PhoneGap application. I'd need the user to know how to keep their app updated and be willing to check their email for update alerts (which my user base is not going to do). Also, with it remaining as a web app I can easily push updates without any review process as well on the part of Google and Apple.

      The one thing I am pretty sure I can't control when using it as a web app (if there is a way using JavaScript within a clientside event I'd love to know) is that modern web browsers will automatically refresh my app if there is an Internet connection and the user is re-opening the browser app after a prolonged period of time. This would make my use case of wanting to use offline lists moot as this reload would be the one thing that would take the longest in the new apps design (i.e. with multiple offline list controls in a single component, some of which having decently complex join queries involved).

      I know both alpha and PhoneGap have made nice improvements over the last year so I will revisit this but would also be curious if anyone has implemented something similar to what I'm looking to do using the current PhoneGap implementation and how well it's worked so far.

      Comment


        #4
        Re: How are you implementing offline capabilities and is it working

        It sounds like you're wanting the best of both worlds: Disconnected... and... ease of Application updates. I don't think you can have both as this point. You can build a PhoneGap Build app which utilizes embedded components. You can easily update the embedded component and re-publish... but... your app needs a connection to load that component.

        Web apps can't live disconnected. List data can be pushed to LocalStorage (you have limited space) but at some point that browser will refresh. Doing any work to get around this will be time consuming and probably fruitless.

        PhoneGap Build apps will only be as responsive as they are small. I've seen some apps start out small, running fast, and then get loaded up with many Lists. You're working with a WebView and it can only do so much. Multiple Lists within a component is fine... 10+ data bound Lists, usually not.

        What you haven't addressed is Security. You must build a method for Users to get back into your app without a connection.

        Comment


          #5
          Re: How are you implementing offline capabilities and is it working

          Davidk thank you for your feedback. Those were my thoughts exactly when Alpha first demonstrated offline capabilities and then again when they updated the tools available in v4. As you can imagine my boss gets all glossy eyed when he receives emails from alpha about new offline capabilities and thinks its just something that "works," but I've tried to warn him after each iteration that it isn't a good tool in our use case mainly because the users are never truly offline (i.e. mobile data is ubiquitous even if it is slow). So the way I was planning to use the offline capabilities is to not have the app auto sync but let the user sync when they feel they have a good connection. However, and correct me if I'm wrong, the only way to implement this is using the persist data to local storage as the user would need to be able to leave their browser and then come back later to sync the data they entered earlier (but also have to have some way of making sure the browser doesn't run a refresh and cause the data entered to be lost because they are booted from the app due to session expiration or something similar).

          This is precisely why I wanted to start this discussion as I feel the offline capabilities are great for very specific use cases and wanted to see how people are implementing them to better understand if I am in a fight I can win or if I'm going to be trying to make a tool do something it wasn't meant to do.

          Comment


            #6
            Re: How are you implementing offline capabilities and is it working

            I prefer to use PhoneGap Build for the App and SQLite for storage. You get true disconnected, sql capability, and device file storage. You can package a SQLite database with the App and you control how/when syncing takes place.

            It all really comes down to what your app needs to do. Images, Video, Audio, true disconnected? All the pieces are there in Alpha. There are, as always, some tradeoffs, but it's your feature set that will determine your direction.

            Comment


              #7
              Re: How are you implementing offline capabilities and is it working

              I've started digging more into the PhoneGap/SQLite but my main concern here is that I need the data on the users device to be up-to-date in real time. Now I know I can dynamically build SQLite databases on the device but this would require callbacks to the server which would be hindered by the users poor connection (and would require the user to understand how/why they're doing this). This is why I've stuck to leaving it on the web as this gives me the ability to make callbacks to the server to get the most up to date data when needed (for instance a list of vehicles in a dropdown box for an inspection tool).

              I may just need to start with trying to fix this problem (which sounds crazy but again remember my users aren't tech savvy) but they complain about having to type in their email and password over and over again throughout the day (I try to tell them to use the save password function of the browser but they refuse or don't know how). I know I've seen on the forums that people have used browser cookies but my main concern with this approach is the data being entered is being collected to run a business and so someone accidentally opening the site on a users device and being auto logged in poses a potential security issue in my eyes..?

              Comment


                #8
                Re: How are you implementing offline capabilities and is it working

                Josh, I'm confused.

                my main concern here is that I need the data on the users device to be up-to-date in real time
                This means a connected App. If you need data, up-to-date, in real time... you are connected.

                [SQLite]... but this would require callbacks to the server which would be hindered by the users poor connection
                and...

                I've stuck to leaving it on the web as this gives me the ability to make callbacks to the server to get the most up to date data when needed
                These are identical Ajax Callbacks. There is no difference between a Web App making a Callback and a PhoneGap Build App making a Callback.

                And... you mention Security issues. Now this part is far bigger than you can imagine... but that's another discussion. If you require your users to Log In each time the App is started, using the Server to validate, then, once again, it is a Connected App.

                If you need to be Disconnected, you can manage user credentials in a disconnected environment. You determine what level of security you're willing to live with and implement that. You would go through a pseudo login process if a connection is not available.

                For Disconnected Apps your best solutions are either SQLite or using Alpha to create and save tables of data in the Device File System.

                But... to have access to real time data, PhoneGap Build or Web App, you need to be connected in order to make Ajax Callbacks.

                Comment


                  #9
                  Re: How are you implementing offline capabilities and is it working

                  Exactly!! What I'm really trying to do here with the overall direction of this discussion is make sure my assumptions are correct as I'm not going to pretend I know everything there is to know about database management, security, connected/disconnected operations and everything else. You have essentially reassured me that what I've been telling my boss is correct, trying to have a disconnected app that at some points will only work if connected is almost a moot point as trying to manage if/when you will need a connection and getting the user to understand why they can't do something because they haven't done an operation that connects to the server (again I'd say my users are in the bottom 1% of understanding technology on a general basis) is going to be fruitless programming. I believe our app needs to remain online all the time so that the data entry operations can be simplistic to the eyes of the user (i.e. here are a bunch of fields, select the values needed and save) rather than having to manage making sure the dropdownbox for vehicle selection has the most up to date data by warning the user it may not and then asking them to do an operation to update that data IF they feel they have a good enough connection to do said operation.

                  I do appreciate all your feedback on this, starting to rebuild the mobile application for our in field users and wanted to make sure I didn't waste too much time testing disconnected operations if in the end it was going to be pointless based on our user base.

                  Still look forward to hear from others how they've implemented offline capabilities in their apps to see what people have accomplished with those tools.

                  Comment


                    #10
                    Re: How are you implementing offline capabilities and is it working

                    You also need to know how fluid your data is. Is the Vehicle Dropdown data going to change from hour to hour... or more often? Or, is loading that data at some point during the day good enough. Unless you're in the Outback you're going to find a good connection at some point during the day. Load data and then work disconnected. I'll bet even the Outback has a bucket of towers these days.

                    If the user MUST have real-time data then you've no choice... you must design your app to work online.

                    Comment


                      #11
                      Re: How are you implementing offline capabilities and is it working

                      If I had more control over the user (i.e. being able to tell them they have to do certain things a certain way) then this would be a great way to fix my overall problem (using loading data at the beginning of the day). In most cases the list of vehicles wouldn't need to be updated but then there would be that one time that a vehicle broke down and a rental was picked and someone back at the office put the vehicle in but because the users app is offline they wouldn't see the vehicle and then would use the tool to add another vehicle and now there would be two vehicles in the system with the same display number (as the unique identifier for the table is an auto incremented integer field not the display field for the vehicle). This is just one example of where a totally disconnected app could break down for me but I can think of about 10 others that would be a similar scenario (and trying to tell the user there is a duplicate key error would be as useful as slamming my own head with a hammer to become smarter).

                      I think one of the biggest issues I run into (other than the tech savviness of the user) is that I can't control how our clients implement the app to their workers out in the field. Those employees out in the field try to find any reason not to use our app just because they don't like the fact they have to use another tool (especially since it doesn't do anything specifically for them).

                      You've given me a lot to think about with this rebuild! Hopefully I can put some of your advice to work for me!

                      Comment


                        #12
                        Re: How are you implementing offline capabilities and is it working

                        But I think these are the fun challenges of app development. Give the users a reason to use the App. If you've got a situation where an offline entry may duplicate data, then run a summary every hour or once day matching display numbers. If 2 show up then flag them to reconcile. Or, once the office input is done, send off a Push Notification advising of the addition.

                        Comment


                          #13
                          Re: How are you implementing offline capabilities and is it working

                          Haha this challenge is exactly why I do this, I love meeting a challenge. Just hope my users start to get use to using an application to run their business so they aren't so opposed to doing something like data reconciliation! Its going to be fun to see what I can come up with!

                          Comment

                          Working...
                          X