Create a installable PWA (web app) of an existing Rails project - ruby-on-rails

I've created an app in Rails which can be put on the homescreen of an iPhone. With some javascript hacking, I can make sure all internal requests stay within that frame. While this works, there are also some drawbacks. With the rise of PWA, I was wondering whether that would be a good alternative, so my questions:
Isn't PWA overkill if my only requirement is that the app is instalable?
Do I need to install all the service workers to get the PWA installable?
Is there some alternative I might have overlooked?

To answer your questions:
From google's PWA site:
Progressive Web Apps are user experiences that have the reach of the web, and are:
Reliable - Load instantly and never show the downasaur, even in uncertain network conditions.
Fast - Respond quickly to user interactions with silky smooth animations and no janky scrolling.
Engaging - Feel like a natural app on the device, with an immersive user experience.
This new level of quality allows Progressive Web Apps to earn a place on the user's home screen.
So my answer for your first question is, no. It's not overkill, it's exactly for that (and more, but you don't have to implement all the available features).
If you want the user to feel like the user is on a native app, yes you have to. There are a lot of basic service workers and builder to use that enable basic caching already.
Here is a checklist from google on what you need to have a "proper" PWA.
Microsoft suggests this site to get you started for basic modern websites.
Except for using something like Cordova, I don't see any alternative for PWA's that suite your use case, the only alternative I see is leave it as it is, if you don't need a PWA. The hype is currently high and you should definitley check it out. But as always, you don't have to if your product works as it should.

Related

how to build micro apps in iOS

We have a requirement to build apps within an app, like how we have a main app called, Google and when we click the app icon, we get options like gmail, chrome ...and those apps function independently..How to organise these apps within the main app.
Could anyone give some basic idea on how to build micro-apps for iOS.
From my point of view, there is no such thing as a "micro app". What you seem to want to achieve is put various functions in one single app, what is not a good idea.
Thinking about your example with Google, they arent doing what you are mentioning. If the functionality is big enough, they put it in a seperate app (gmail, maps, ...). Same goes for you.
If you really want to go that way tho, i would highly suggest to make seperate storyboards for every "micro app" to keep things easier to maintain.

MoPub Alternative

I am developing a system which has both Tablet & Website.
It's a tool and now more and more professional come to register on my system.
I want to do ads on the system. Both website and Tablet(iPad for now but will support android).
I searched a lot and MoPub seems a good option. I did utilize the MoPub SDK to iOS and website. it works good except, it's for mobile only.(Said by MoPub official, I feel sad because it meet every my requirement except this one. I need do ads on website also, even on PC browser.)
I want find an alternative of MoPub, but seems there is not much options.
Is there any one who knows this and give me some suggestion?
My requirement is:
As the system admin, I can create Ads order for customer, I can define the Ads content&layout displayed on both iPad & website. I can put link on ads and the link should works on both Tablet App and PC website.
As developer who integrate the Ads platform. I can utilize the SDK to request Ads based on customer keywords I defined.
I can see a lot of reports for the revenue, daily, monthly, single ads, multiple ads.
The very basic Ads configuration
Well formed SDK on iOS and android. so that I can integrate quickly.
Thanks!!!
hey man) you’re asking and trying to compare different things: you ask about MoPub Alternative and one of your requirements is that the solution should support both Web and Mobile. MoPub is for mobile platforms (ios/android) only. Frankly speaking both web and mobile ads have own features and nuances, that’s why most of current solutions are focused either on mobile or web. Not sure I can provide lots of info about platforms for web, but this article might be useful for you https://www.adpushup.com/blog/the-best-ad-networks-for-publishers-2015-edition-moving-beyond-adsense/
Mopub is a really good platform, but if you’re still thinking about alternative (i’m speaking about mobile) take a look at mediation solutions. there are lots of them: AdMob Mediation, Heyzap, Fyber, Appodeal and many others. all of them have pros and cons. if you like manual customization and settings give a try to the first three, i’ve heared lots of good things and positive reviews about HeyZap and Fyber, though im not a big fan of "handjob" =). this way you’ll just have to create accounts in networks you’d like to use in mediation. but i personally think that its slightly a longer way, at least for me, because the performance of each network depends on your app and it need to be understood. so you’ll need to analyze which ad networks perform better for you. i’m not a big fan of everyday analysis and comparisons, so i stick to programmatic services, like Appodeal for instanse. the point is that it works out of the box, automatically, without manual settings for each network and account, that helped me to save a lot of time for working on other projects. i’m pretty much sure that you won’t get a 100% right answer, because each developer has own priorities and aims. I suppose that the best way it to collect info on forums like stackoverflow, reddit, and make your own research accordin to your needs. good luck

IOS swift - Tracking used apps

I'm currently looking for a way to track user activity. I'm working on an IOS app using swift and i need stats of apps usage. basically I want to get-make a tracking of the used apps. Data like opened apps, start time and shut down time... I know that for get all stats, maybe is necessary run a backgroud service, but, this is another problem that i think to solve after. for now i want to know if it's posible, if there is some way to get stats for used apps. I know that the UIApplication class call the UIApplicationMain function when an app is launched. Maybe, from my app, there is a way for access this info?... Thanks, i have been a long time reading but really, i can't see some clear option.
If (as David has interpreted your question in the comments) you are trying to track usage of other apps that aren't yours, he's right; you can only track your own app's usage.
If you are needing to track events in your own app, there are a good number of analytic frameworks available to do exactly what you are needing to do.
Flurry is one I've used in the past with success, and is one of the more well know solutions. I've also utilized Google's analytics framework. Both are pretty straightforward to integrate into your app and to track the sort of fine grained events you are looking to capture. You can't go wrong with either one of those.
Here is a (slightly old) list of additional tracking/analytics options beyond Flurry and Google's offerings.
You can record your feedback and user experiences, and bug reports with lookback.io

Can web app for ios run as smoothly as native?

Is there a framework that will allow to create web apps for iOS that will run as smoothly as native app?
I've checked demos of Sencha Touch http://www.sencha.com/products/touch on my iPad there's visible delay for touch events and for how precisely they are recognized. The feeling isn't the same as for native apps.
Is there other frameworks or technics that will allow to provide same experience as native apps?
It depends on your app. If your app is a hard-core heavy-duty 3D game, then no. If your app is primarily displaying static content ... like a web page or collection of photos, you might get close enough.
Think about what experience you want to achieve first. If you want a cross platform application and you want to avoid the stores (App Store, Google Play, BB App World), then by all means, consider a web app.
Other things to consider, how much data do you estimate the user will need store locally (HTML apps are more limited in this respect); how much functionality is lost when there is no network connection, and does this loss of functionality make the app unusable.
Like the answer by #RichardTurner, if you need the kind of performance you find in the higher end games (Infinity Blade or Modern Combat 3), then native is the way to go.
Figure what you want, then you will have better idea of what technology to use.
NO. Native apps will perform better every single time over web apps. If you want a smooth experience, go native. Also consider that some people have older model iOS devices and performance will be even more difficult to achieve on those devices in web apps.
Here are a few things to consider with a Sencha app vs a native application.
You were browsing a Sencha Touch application online and chances are it wasn't a "packaged" version so you would have to download each source file individually.
With Sencha, you can utilize Sencha CMD to package an application which essentially builds a single minified js file containing only the required components from the Sencha library and your application (smaller DOM). You can also look into a production version which takes advantage of appcache. You'll see some performance increases here.
A packaged native Touch application will contain the actual JS, CSS, etc. files as part of the applications source, so their is no downloading from external resources.
You have to consider that any HTML5 application is going to have a ~300ms touch delay, more on that here: http://updates.html5rocks.com/2013/12/300ms-tap-delay-gone-away

Which common features of desktop applications do most web applications miss? [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
Stackoverflow User Luke wrote in this answer:
The boundaries between desktop and web
applications have really blurred.
Whilst once upon a time the nature of
developing for the web was totally
different to developing for the
desktop, nowadays you find the same
concepts [...] cropping up in both.
Since I am continually looking to improve my existing web applications, I'd like to know which common features of "classic" desktop applications do most web application miss?
For example, most desktop apps prompt the user to save unsaved data leaving a page or closing a window - a feature that many web applications miss. It could be that some feature aren't even necessary or are compensated in some other way. Maybe there are features which can't be implemented in (a classic) web application?
The thing you'll never be able to imitate in a web application is the low latency and instant feedback of a well written desktop app.
Even with the ajax techniques to load only parts of the pages, there usually is a noticeable delay in the response (or maybe it's just me and my narrowband). You're (for at least a few more years) just bound to the orders of magnitude of speed difference between network access and no network access.
The Undo button.
Right-click application-specific pop-up menus is the thing I've noticed most.
Usually right-clicking on a browser application will bring up the browser pop-up menu rather than an application-specific menu.
Keyboard support on most web applications is weak to non-existent. This is getting better than it used to be but you will still find plenty of mainstream sites that can't even get the tab order to work correctly. Most sites don't handle focus correctly and force users to use the mouse to activate even the simplest of data entry forms. You can usually forget about accelerator key support.
You can't pull the plug when the application hangs. (Yes, I'm serious)
For fairness is to mention, that desktop-applications miss a common feature of webapps: XSS (Cross-Site-Scripting). ;-)
Support for Big Files.
Integration with the client OS.
Support for special Input/Ouput Devices.
3D or anything else computationally intensive (specific to each users).
Advanced graphics: I've written a C program that draws a surface joining Bézier patches in a simple window and I had to tweak it in unimaginable ways to get it to draw in a decent time. I can't imagine that being ported to the web.
I mean, doing advanced graphics is not what every application needs, but if displaying nontrivial pictures is slow, then we shouldn't even talk about animations.
One Proper Macintosh menu bar support.
If you're a long-term Mac user, even with two large monitors, you have muscles that swoop to the top of the screen for actions, comfortable in the knowledge that the infinite depth effect will kick in and you can slide along that edge, picking from the menus.
No in-browser app can deliver that experience.
Two Command-keys, which is a side-effect of the menu bar not belonging to the app but goes a bit beyond that - good desktop apps have command-key shortcuts (accelerators to you Windows guys, I'm not just talking the Mnemonics which work with alt-key support). Great desktop apps show little reminders next to the buttons that have accelerators, when you hold down the appropriate modifier keys and wait a fraction of a second.
Three Smarter tables. There are a lot of apps where some kind of spreadsheet view works as a paradigm, including editing, sorting, resizing columns. I think I've seen some odd examples of partial support but a good table in a web app is still a bit of a dancing bear.
Four Used to be right-clicking but I'm finding more and more apps that do this properly, like Kerio's excellent webmail engine. It is still missing in enough web apps to be worth emphasizing.
Displaying application request/process status or messages on Taskbar or Status bar.
For the web, Javascript can be used to update text on status bar, but its not a common usage.
The usability benefits of standard GUI elements that look and behave uniformly across applications.
(Although this will surely change as web app developers adopt certain GUI elements and patterns that are considered best-practice, notably by eventually using the same libraries, e.g. for drag-and-drop.)
A common feature of "classic" desktop applications is the ability to work without an internet connection. I miss that in Web applications.
For example, MS word works without an internet connection, but you need to be connected if you want to use Google docs.
Of course, it does not matter if the application requires an internet connection anyway. For example, if its a feed reader, I have to connect to the internet, whether I use a desktop reader or an online reader.
Drag and drop from Finder/Explorer into the web app. And vice-versa.
The ComboBox is the most notable widget omission.
On the web, lack of desktop features such as popup dialogues is actually a boon, making for a simpler interaction experience. Think also of the autosave draft feature of Gmail vs. the desktop convention of prompting the user to save.
So consider carefully before trying to reconstruct that desktop feature in your web app.
Decent help. Seems to always be an afterthought, if it's even implemented...
Desktop integration (may change if we get online desktops)
Offline use (does exist but it is early days)
(Reliable) Responsiveness
Reliability generally (somewhat debatable as there are pros and cons - e.g. your data is probably better backed up online, however security generally is less in your control with an online app, and if the network connection fails an online app tends to freeze or fail horribly.)
Blue Screen of Death
A task-specific UI with no extra controls. A web app, in addition to all the controls of the web app, also has back, next, bookmarks, etc buttons. You end up with an extra inch-high set of buttons that don't directly support the task at hand.
This isn't necessarily a programming feature, but the audience of an application will be different. For a web application you are cutting out a complete segment of your audience (those with slow or no internet access). While this is a relatively low number, it is a difference between a desktop application and a web application.

Resources