Preview webpage in progressive webapp? - http-headers

Can PWAs act as browsers? Or more technically: Does the PWA concept allow displaying previews of other webpages, regardless of their X-frame-options or similar settings?
I am not currently persueing specific ideas myself; Rather I am interested into whether the current technology would allow to convert apps such as Feedly, whose native apps allow viewing webpages without leaving the app, to PWAs.

Does the PWA concept allow displaying previews of other webpages, regardless of their X-frame-options or similar settings?
No. Standard web security rules still apply.

Related

What is a progressive web app in layman's terms?

I have been a dev for some years now, but I can't wrap my head around what exactly is a PWA.
For example, if an app runs on a mobile phone it is a native app. I can point to it and tell people that "look it is a native app."
In a similar sense, what is a PWA? Where does it run? Which app can I point to and tell that it is a PWA?
From what I have read on the web I feel that a PWA is a website that has modern technologies and gives a "native app like" experience to the user.
Is my understanding correct?
All in all, it is a website that has native-like experience?
If so how does a user separate a normal website form a PWA?
The concept of the progressive web app (PWA) was approached by Google in late 2015. They are basically web applications (Website) but have look and feel like other native mobile apps. The progressive web app enabled websites can offer functionalities such as working offline, push notifications, and device hardware access.
Benefits of the progressive web app:
1. Smaller and Faster:
The progressive web apps are much smaller in size than native apps. They don’t even need to install. That’s they are not wasting disc space and load very fast.
2. Responsive Interface:
Progressive web app (PWA) supported web pages are capable to fit in every screen sizes automatically. It could be a smartphone, tablet, desktop or laptop.
3. No Updates Required:
Most of the mobile apps need regular weekly updates. Like the normal website, progressive web apps (PWA) are always loaded latest updated version whenever the user interaction happens and no App or Play Store approval required.
4. Cost Effective:
Native mobile apps need to be developed for both Android and iOS devices separately and their development cost is very high. On the other hand, progressive web apps are had the same features but the fraction of the prior price.
5. SEO Advantage:
Progressive web apps are discoverable by search engines and load super-fast. Just like other websites, their links are sharable too. This, in other words, gives good user experience and result in SEO rank boost.
6. Offline capabilities:
Due to the support of service worker API, PWAs are accessible in offline or low internet connections.
7. Security:
PWAs are delivered over HTTPS connection and secure user-data over each interaction.
8. Push Notifications:
By the support of push notifications, PWAs can interact easily with the users and provide a really amazing user experience.
9. Bypass the app stores:
PWAs don’t need the App store or Google play store support. Their updated version can be directly loaded from the web server without the requirement of app store approval. On the other hand, native apps need days of approval if any new update required. There are possibilities of getting rejected or banned.
10. Zero installation:
During browsing, progressive web app gets its own icon on phones and tablets, just like a mobile application, but without the need to go through the tedious and slow App Store installation process.
Disadvantages of the progressive web app:
1. Less access to system features:
Currently, Progressive Web Apps have limited access to native system features than native apps. Also, all browsers are not supporting its full features but maybe in near future, it will be the new standard of development.
2. More Android – Less Apple’s iOS:
progressive web apps are currently, most supported by Android devices. Apple’s iOS is only partially supporting.
3. No review standard:
progressive web apps don’t need any kind of review system which is applicable for native apps from the app store. It may make the process faster but lack of promotional benefits from the app store.
Progressive web app checklist:
The checklist for the progressive web app is extensive. I have described its main few items here.
1. HTTPS
2. Web app manifest - manifest.json
3. Service worker
4. Responsive design
5. App icon
6. First load fast even on 3G
Conclusions:
There are huge possibilities offered for the progressive web app. Although there are lots of features and browser adaptability expected in near future. But, whatever already exists in the market is enough to show a strong mobile presence.
Visit the video blog: https://www.youtube.com/watch?v=NVXP-RzA0Eo
A PWA is a website with certain progressive features, most notably the ability to load offline or in areas with spotty connection, load quickly, display push notifications, and have other native app qualities. The benefits of a PWA is that they run on any browsers (since they're a normal website, if the browser doesn't support PWAs then the user gets a normal website experience), even desktop browsers. On mobile devices, the user will often get prompted to install the web app to the home screen, which happens almost instantaneously and uses barely any data since the website is already loaded. This allows for way more "downloads" than a native app, leading to higher engagement. For another brief overview of what a PWA, Google has some great articles about them.
Technically speaking, a PWA is a website that has two things: a web app manifest file and a service worker.
A manifest is a JSON file (usually called manifest.json) with some information about the progressive web app. It contains information similar to what you would include with a native app. It has the name, the short name for display on home screens, icons, orientation, etc. A web app manifest can be used on any site (even non-PWAs) to give the browser more information and allow the site to create a shortcut on the user's homescreen, but it's required for a PWA. You can read more about it over on the Google Developer's site.
A service worker is a JavaScript file that can be installed by the browser to do certain tasks. This file will be run in the background of the site and can do things like caching resources, intercepting network requests (to do stuff like return data from the cache), receiving push notifications, background synchronization, etc. When a user first visits your site this JS file gets installed and starts running. This is the file that allows for things like offline functionality. You can read more about service workers on the Google Developer's site as well.
Roughly speaking PWA is a web app that has native feeling and can be installed to the users' home screen and can start & work offline with an optional sync to server when Internet connection gets available.
To be considered a Progressive Web App, your app must be:
Progressive - Work for every user, regardless of browser choice,
because they are built with progressive enhancement as a core tenet.
Responsive - Fit any form factor, desktop, mobile, tablet, or whatever
is next.
Connectivity independent - Enhanced with service workers to work
offline or on low quality networks.
App-like - Use the app-shell model to provide app-style navigation and
interactions.
Fresh - Always up-to-date thanks to the service worker update process.
Safe - Served via HTTPS to prevent snooping and ensure content has not
been tampered with.
Discoverable - Are identifiable as “applications” thanks to W3C
manifests and service worker registration scope allowing search
engines to find them.
Re-engageable - Make re-engagement easy through features like push
notifications.
Installable - Allow users to “keep” apps they find most useful on
their home screen without the hassle of an app store.
Linkable - Easily share via URL and not require complex installation.
I think PWA is quite a broad term. I say broad because there are many ways of developing and distributing a PWA. In Layman's terms a Progressive Web App is a 'web site' that is effectively used/displayed like a native app. I believe an example of this would be something like phonegap? where phonegap built an app 'surrounding/scaffolding' and displayed a webpage with some custom CSS over the top. (Editorial Note: Phonegap is not related to progressive web apps. Phonegap creates actual, native applications. Wrapping a website in a native application is very different from progressive web apps.)
Most recently though I've been working on a lot of react only based website which I believe is the closest to PWA you can get at the moment (especially for IOS who only support minimal feature to encourage you to build native apps for their app store).
But yea it's basically an app like app that's not an app; rendering from a web page :thumbsup:
Progressive Web Apps (PWAs) are web apps that follow a set of guidelines
Starts fast, stays fast
Performance plays a significant role in the success of any online experience, because high performing sites engage and retain users better than poorly performing ones. Sites should focus on optimizing for user-centric performance metrics.
Works in any browser
Users can use any browser they choose to access your web app before it's installed.
Responsive to any screen size
Users can use your PWA on any screen size and all of the content is available at any viewport size.
Provides a custom offline page
When users are offline, keeping them in your PWA provides a more seamless experience than dropping back to the default browser offline page.
Is installable
Users who install or add apps to their device tend to engage with those apps more.
For more details see What makes a good Progressive Web App?

Best Practise for building mobile site

I am about to start building a mobile site which is dynamic, working from a lot of dynamic content which must come from the database.
I have already written a REST API for the site which the IOS and Android applications are using to interact with the information.
My question is what would be the absolute best practise for building this site, would it be:
1- Make the mobile classes an extension of the existing site functions
(The downside I see here is that the mobile site would be dependant on the main site library meaning that any bad heat on the main site would also affect the mobile site)
2- Make the mobile site a completely stand alone site running from itself
(The downside I see here is that any change to the main site library will need to be reflected here so in essence we would almost be writing code twice)
3- Make the mobile site run from the REST API and standalone
(The downside i see here is just increased number of HTTP requests for the information rather than communicating with the server directly)
Each one would function normally and there wouldn't really be any problem there, coding is really not too difficult, though if I make it standalone I would need to recreate a lot of the functions from the main site and adapt them for the mobile site which isn't ideal.
Look forward to your comments! Thanks
I would go with 3rd point, but that needs to be architect well.
We will prioritize standalone application after that API, also we can have 2 way communication, any content changed on server it will coordinate with clients to get that updated.
Also I would also suggest go with Bootstrap framework, its an awesome framework and have responsive and adaptive design

iOS App URL is not being detected

I have created a custom App URL for my iOS app. The URL format is similar to this:
myappname://texttobeparsed
This works fine when I paste the URL in safari, My App opens and correctly handles the URL. The problem is that other apps such as iMessage or Notes do not recognize this as a URL.
Why isn't this URL scheme being recognized as a URL? Could it have to do with how I set it up in my info.plist file or something else?
Or, does the URL need to be in a different format to be recognized?
I know it's possible to have the system recognize it as a URL in apps other than web-browsers because I've seen it before with other apps (ex. iTunes: itms://itunes.com/apps/appname or Twitter: twitter:// or Facebook: fb://).
There's nothing you can do about this. If the link isn't explicit (e.g. in an HTML email), these apps can just recognize a built-in set of standard URL schemes. itms:// is one of Apple's own schemes (for the iTunes Store), so it makes sense that it is supported in addition to the standard mailto://, http://, tel://... schemes.
Edit: I would guess that the information that is used to determine what constitutes a valid URL in text views etc. is cached somehow. Contrary to what I initially guessed, it seems that app-specific URLs do work in Notes, etc. I've tested this with tweetbot:// for example (which I have installed) and twitter:// (which I don't have installed) to verify that it doesn't just check for a pattern like *://, but actually uses information about the installed apps.
I'd suggest that you try to restart your device. If it's an issue with some cache, that might help and I don't think there's much else you could do if your URL scheme already works in Safari.
Update: I've installed the official Twitter app to test this, the twitter:// scheme wasn't immediately recognized in Notes, but after killing and restarting the Notes app, it worked.
Update 2: I've done a minimal test app with myappname:// as a custom URL scheme. Again, like with the Twitter app, it worked after restarting the Notes app, so it doesn't seem related to the popularity of the app or whether it's been submitted or not.
I can't answer as to why it's not working (beyond guessing that the link interpreter is hard-coded to only recognize certain URL schemes), but I can say that the typical way around this is to link to a web page, and have the web page redirect to your custom scheme.
It's slightly less elegant, because the user will see Safari open up briefly before being forwarded to your app, but it's also more robust because the web page can provide a link to the app store to install the app if it is not installed on the user's phone.

Getting website thumbnails in a webkit extension

I'm wondering if the WebKit browsers (Safari and/or Chrome) provide a method to generate or retrieve existing thumbnails for websites. If not, is there any way to generate these client-side? If even that is not possible, is there software or a particular API to generate thumbnails server-side?
Thanks!
To people from the future:
At the time of writing, this feature is only available in Safari 5.0+. You can get thumbnails from the Tabs API. Chrome doesn't have any similar features as far as I could find.

How to customize SharePoint 2010 mobile view

I am stuck on developing a mobile view for my SP2010 publishing portal. It is Internet-facing with custom pages / web parts (e.g. http://server/Pages/customPage.aspx with custom webparts on it). The site has a custom master page.
I am having the following issues with the built-in mobile functionality:
The welcome page. Navigating to
http://server/?Mobile=1 redirects me
to
http://server/_layouts/mobile/mbllists.aspx, which just shows a table of lists / document libraries available. For
my portal, I want to show a
dashboard, just like I currently do for the "normal" non-mobile view.
Navigating to one of my custom
pages (e.g.
http://server/Pages/customPage.aspx?Mobile=1)
also redirects to
http://server/_layouts/mobile/mbllists.aspx.
So in effect there is really no helpful built-in mobile support at all; just the ability to view lists with a mobile device.
So I have a number of issues and I'm hoping for some high-level help. My thought is that I should do the following tasks:
Create a separate master page for mobile
Figure out how to choose this master page based on "is client a mobile device?"
Figure out how to prevent the redirection to /_layouts/mobile/mbllists.aspx
Then I think the mobile site will operate similarly to the normal site.
Am I on the right track?
[Edit]
With what I have seen from links from #moontear and other research I've done, it sounds like my best option is to just disable built-in SharePoint mobile support, and just do my own conditional rendering based off of Request.Browser.IsMobileDevice.
Check out the extensive MSDN documentation about how to customize Mobile Views:
How to: Customize Mobile List View and Form Pages
when you check out that page you can see that you can already change the layouts of the list forms and maybe that is enough for you - but as you said you want a custom "Dashboard", you probably want to look into how the mobile redirection works:
Overview of Mobile Pages and the Redirection System
You can set which device is treated as mobile device by editing the compat.browse file as explained in this post: SP2010 Branding Tip #6 – Mobile Browsers, this way the device you set is shown your regular Sharepoint page (answering your questions 2/3).
Copy the "_layouts/mobile" folder to e.g. "_layouts/MyCompany/mobile", in webconfig add following appSetting key:
<add key="mobile_applicationrootdirectory" value="_layouts/MyCompany/mobile/"/>
After that you can add branding, css, etc. to your own mobile folder.
SharePoint is using this by calling SPMobileUtility.GetAppRootDirName()
http://msdn.microsoft.com/en-us/library/ee553908(v=office.14).aspx
using powershell
Disable-SPFeature -Identity MBrowserRedirect -Url http://url