I have started to building PWA without understanding the internal meaning of it. When I searched, PWA gives a native app like look and feel to web apps progressively using the following technology
Manifest
Service workers
Designing App shell
Push notification support for web apps
I found difficult to understand the inner meaning of Progressive in
PWA. Any help is much appreciated.
From what I have understood a progressive web app needs to support progressive enhancement.
Progressive enhancement is a strategy that begins with common browser features, and then adds in functionality or enhancements when the user's browser supports more modern technologies.
Features like service worker, notifications will be added only if the browser supports it and not break the application in older browsers.
This enables your application to run properly in a wide range of browsers with decent user experience.
You can find more details here
As explained in this answer, all PWA features are not supported in every browser/platform yet (mar-2018). Also, new PWA features will be keep coming as the technology evolves. Said that, for you to have a PWA site, you don't have to implement all PWA features to take advantages it provided or to call it a PWA site.
This is not like a standards compliance, where you have to be 100% compliant to call it a "Compliant" site.
You can start with the basic things like having a manifest file to support "Add to home screen" and may be offline capability using service workers and your site is already taking good advantage of PWA.
You can keep "Progressing" on more features as you continue to develop your app. And hence its "Progressive" web application :)
"Progressive Web Apps" has been foisted on the Web App development community by those of the left (especially California) who equate "progressive" with "liberal".
Most everyone else uses just "Web App" or "Ultimate Web App" to be annoying.
The "progressive" adjective could apply to the best-endeavour nature of a PWA in that it will degrade gracefully if certain functionality is unavailable or if that functionality is embargoed due to lack of User Permissions. Analogous to the limp-home-mode in your car.
I am told that Chrome now treats pWAs as first-class Android apps but I have yet to experience them in the App Drawer. Lighthouse struggles to distinguish an elbow let alone a PWA and is more someone's little red book of Web-Apps.
IMHO if it launches from the Homescreen or Desktop via and icon then it is a Web App.
Related
(I have a problem with Google Chrome improvements that will drop support for my current solutions.)
I work on project where I move desktop system to an Intranet web application.
The crucial requirements are:
to move desktop system to a web application
to reproduce every single functionality from the desktop system in the webapp
While 95% of work requires creating casual web application, there is one thing which is non-standard to handle: my application must perform some actions on the client computer. These includes:
connecting with libraries
launching desktop apps
file manipulation in background
The example scenario is to integrate my system with some machine in the lab. I have to integrate my web application with drivers on client computer via DLL (desktop app did this, so my app have to do this as well).
Theoretically scenarios of the desktop actions may vary and I just want to implement some interface that will handle all the "client-machine" job the desktop app has done, so there is no need to work on every single scenario (but of course every scenario should be tested).
My solution was Java Applet. It worked. But then Google Chrome decided to drop support for NPAPI plugins, so in September'15 Java plugin (and my applet) won't be supported (http://blog.chromium.org/2014/11/the-final-countdown-for-npapi.html).
So my another solution is Java Web Start. It works. But now Google Chrome decided to drop support for background operations of external protocols (https://code.google.com/p/chromium/issues/detail?id=348640), so from Google Chrome 45 my Java Web Start solution won't be supported.
(Both above solutions work on Firefox and IE.)
The question:
What other technology can I use to interact with a client machine from my web app?
Other remarks:
I am reluctunt to write my own PPAPI plugin or Chrome Extension - I prefer one solution working on all major browsers.
I know that StackOverflow community does not like discussions about technologies, so please focus on describing possible solution to my problem.
We struggled with a similar problem as we need to connect/access electronic devices over JNI->DLL. The only technology where this is currently possible are applets. Period. (And even that is tricky since certain combinations of browsers/java versions/operating systems do not work or have problems, but this is another story...)
There are web technologies like HTLM5, JScript which can replace some functionalities of applets however in certain scenarios (like yours) there is no current alternative available - and you named some of those:
connecting with libraries like *.dll, *.so etc.
file manipulations
launching applications
And doing that across browsers and operating systems!
Solutions?
Tell your users that certain browsers can't be used (like Chrome and
Opera Next)
Write individual plugins for each browser (which probably is beyond your budget ;-)
Did you consider writing standalone application(s) in form of an executable file? The user must download and run it however e.g. java or plugins also need to be installed. But then there is the security aspect of that (downloading an and executing an executable file) - certainly not an easy decision
Have a look at FireBreath 2 - (just read about it in some posts, however didn't try it)
There are lots of discussions on SO to this topic so take a read:
alternative technologies to replace applets
applet alternative launch from browser
alternatives to java applet to launch microsoft office applications
alternative-java-applet-network-drive-access
what are the alternatives for java applet to launch client programs using chrome
alternative of npapi plugins for flash java applet
python alternative to java applet
npapi alternative for live file editing
... and many, many more!
I have a server at work that I want to host an iphone application on.
I want it so that the user goes to the web browser on their ihpone and clicks a download link on a html page and iphone application is installed on their phone.
Is there any way that this is possible using xocde? Perhaps some way I can build a .plist file that does this?
Thanks
Unfortunately, you cannot install a native iPhone application without going through the App Store (unless you wish to publish your app solely to jailbroken devices). If you really don't want to use the app store, you can build a web app that runs on the server, but you cannot install and run arbitrary binaries on a users device that have not been approved by Apple.
EDIT: As people have pointed out, there are options for testing purposes that will allow you to install your app on other devices via the internet (TestFlightApp, iOS Enterprise program), but for a wide-scale deployment technique this will not work.
Jumhyn is right in his answer but there is a little more to it.
If you want your App to be available to iPhone users (non-jailbroken) you have to have an Apple developer account ($99/yr)
If you want to develop only for jailbroken devices you can, but i'm not sure about the license agreements you accept when using Xcode and Cocoa(touch) framework. It might be a violation of your agreement.
The last solution is the Apple Enterprise developer program ($299/yr). Here you can control who has access to your app and I think it is possible to distribute around the App Store. There is definitely some limitation.
One thing is sure. You cannot do installation from websites as you want without going around Apple's App Store. I strongly recommend sticking to the rules and agreements you accepted when activating OS X, Xcode, iPhone and the Cocoa Framework.
If you are trying to permanently deploy to a website, this will not work for legitimate App Store applications. You can however, once published to the app store, place a link to to it that will take them to the AppStore for downloading it.
If you need this for testing/beta purposes I reccommend www.testflightapp.com
Need to understand what are the basic technical differences between chrome and firefox packages apps & other html5 apps in blackberry,tizen.
All of them support apps in Html,Css,Js but where and how are they technically different
1.Can One app created for one platform be used for another without changes
2.If they cannot be used across then how easily can they be migrated
3.Are the differences only in manifest and main browser/os specific
I don't think there is an easy answer for this one. You'd have to probably study each platform's api layer and then do a comparison. Start with chrome.* and then research all the other platforms. If you do end up doing this, please publish your results as I'm sure many future HTML5 app developers would love to read your findings!
There are 2 type of web apps.
Hosted Apps : It can be publicly accessible Web server, just like any other website.
Packaged Apps : It can be packaged sucg as a zip,wgt and so on, instead of hosting it on a web server. The apps file extension is depends on the plaform. (chrome, firefox, bbx, tizen...)
Both kinds of Web Apps are support all of HTML, CSS, JavaScript, and so on.
One difference from a hosted app is that, a packaged app must specify a platform dependant metadata such as mainfest file. And there are different device apis. For example, firefox os provides their own web api for firefox app. Tizen also provides their own web device api for tizen application.
If one application is only standard API (HTML5), then all web platform supports it (Pacakaing may be differnet.). But if application also use non-standard api(like device api which is mentioned above), it couldn't reuse.
I have developed an web app using MVC4- mobile and HTML5. Every things is working fine when we enter URL from any phone. But i am wondering how to convert my web app into hybrid app so that i could upload in istore or GooglePlay.
Please help me with the procedure or steps i need to follow and is there any tool other than phoneGap that i could use.
Thanks in advance.
There are few options but I will mention only two of them.
Most commonly used is a Phonegap/Cordova app wrapper framework (Also my main choice). Cordova is a new name for a Phonegap framework. It will give you an access to common mobile phone functionalities (Android, iPhone, Blackberry and WP7+). It is rather easy to use and there are a lot of vorking tutorials available, you can even find them in youtube.
Here's an phonegap link: http://cordova.apache.org/. There you will find tutorials how to install/configure it on all available platforms. This is a older link: enter link description here, it still has usable informations.
If in doubt always search for phonegap examples instead of cordova. For some reason Phonegap is still a mostly used name.
Here's an Phonegap + jQuery Mobile example: http://therockncoder.blogspot.com/2012/07/jquery-mobile-phonegap-and-camera.html, there you will find a github link for Android and iOS implementation.
Through the PhoneGap javascript APIs, the "web app" has access to the mobile phone functions such as Geolocation, Accelerometer Camera, Contacts, Database, File system, etc. Basically any function that the mobile phone SDK provides can be "bridged" to the javascript world. On the other hand, a normal web app that runs on the mobile web browser does not have access to most of these functions (security being the primary reason). Therefore, a PhoneGap app is more of a mobile app than a web app. You can certainly use PhoneGap to wrap a web app that does not use any PhoneGap APIs at all, but that is not what PhoneGap was created for.
Now some disadvantages. With PhoneGap for each platform you have to maintain a different project. The burden for that increases when there is a need to use multiple PhoneGap plugins because you need to search and update different files on each platform.
Mosync is also an excellent solution. This framework has a few things better handled then Phonegap. Like:
With MoSync you’ll have only one project to maintain for all the platforms. For iOS you will still need to use Xcode because MoSync outputs a project for it but, other than just building it, there is no need to dig deeper in Apple’s IDE.
The entire provided functionality for JavaScript is placed in the same file for all of the operating systems. There are no files for plugins because it has none (at least that I know of), but the same extensibility is achieved in ways described in the next section.
If there is some functionality that MoSync doesn’t provide on the JavaScript side, there are no plugins that you can use, but there is another way. MoSync provides a lot of features from the C++ side and if they aren’t accessible from JavaScript by default they can be easily made available. I’m sure that in the future the MoSync team will add more features to the JavaScript library.
With MoSync you are not restricted to only JavaScript frameworks to replicate native UI, you can truly create native UI elements that are more responsive using only JavaScript.
Rhomobile on the other hand is much less used thus a lot less supported.
I heard few good things about this framework but never had time to learn/use it.
RhoMobile applications are OS-agnostic, able to support enterprise-
and consumer-class operating systems including Windows® Embedded
Handheld, Windows® CE, Windows® Phone 7 Series, Apple® iOS, Android®
and BlackBerry®. You have complete control over how applications
behave on different devices. With RhoMobile Suite, you are finally
free from OS design constraints, able to create business applications
that are every bit as elegant looking and intuitive as their consumer
counterparts (This was copied from their main site).
Some years ago I dipped my foot in the water of developing WML websites and J2ME apps - and found it a rather unpleasant experience.
Hearing stories about developers making $$$ in their free time, writing trivial apps for iphone and android, and having a (top secret - don't tell anybody) idea for an app that everyone will immediately rush out and buy, I thought I'd have a look at the current state of play regarding development tools - however while there are no end of people pushing branded products, its often unclear what the programming language is like and what integration it provides with mobile devices.
I could develop most of the functionality as an online website - but for reasons of confidentiality and the ridiculous cost and low speed of mobile internet connections, it makes a lot of sense to deploy most of the functionality client-side.
Google gears like the ideal tool for implementing this - but Google have pulled the plug on the project.
The reasons I liked GG were:
html rendering (there will be a lot of content in the app)
a standard programming language (javascript)
integration with geolocation
If it had supported the accelerometer and bluetooth it would have been perfect!
Looking around at other approaches, I see that standard Android apps are developed using Java. While I'm not a big fan of the language, I could stretch a point in this case - but what about all the content rendering? Is there an off-the-shelf html renderer for android which I could then build my own handler for?
(if you're getting the impression that I'm something of a programming snob - you're probably right)
I had a quick look at Appcelerator - which has lots of pages telling me how wonderful it is - but I've yet to see any details of how it works, what the language looks like, how it integrates with hardware on the client, how to produced a packaged app for resale....
Any suggestions for a suitable toolkit/platform?
TIA
Yes google gears is deprecated but so what? As they clearly state they intend to continue with the product until a suitable replacement is found (AKA HTML5). Just be sure to write your application with a migration path to HTML5 in mind and you're sweet.
Besides, its open source... So if you need something added or changed the code is all there.
I am currently in the process of gambling my entire future on the google gears platform. Don’t forget that they currently use it in GMail so I don’t see them stopping at least basic continuing development on the platform.