Can PWA access contacts, gps or use the phone camera? - iphone

Can PWA access contacts, gps or use the phone camera?
Is this possible in any system (ios, android) ?
Is there any plan in development to implement any of these features ?

There are some restrictions that cannot be overcome with a PWA:
- you cannot access the contacts list on a phone. - On the other hand, you can take photos and use GPS location.
On whatwebcando.today web site you can have a list of APIs available via browser compared to native apps. If you click on one feature, you can see a sample snippet showing how you can implement it and also details about the browsers support.
UPDATE 30.09.2019
From Chrome v77 there is a new experimental API available: Contact Picker
The Contact Picker API is an on-demand API that allows users to select entries from their contact list and share limited details of the selected entries with a website. It allows users to share only what they want, when they want.
For example, a web-based email client could use the Contact Picker API to select the recipient(s) of an email. A voice-over-IP app could look up which phone number to call.
Hence it might be that the the remaining PWA restrictions will be solved in a near future.

It depends on the device the PWA is running on.
Camera and audio seem to be universally supported. Contacts, on the other hand, seem to be inaccessible regardless of platform.
Other features, such as GPS and geolocation may vary from device to device.
A good way to find out what your browser is capable of (and thus your PWA - it runs in a web browser) is to go to https://whatwebcando.today with the browser you want to support. Try visiting it with an iPhone, Android or other device for a list of enabled features.
This list changes as browser and OS developers increase access to native features, so there's a good change that if it isn't available now, it will be in the future. However, it's important to be aware that some features such as access to the wider file system and hardware configuration are likely to remain sandboxed for security reasons.

Related

How to list and allow selection of input devices to be used for WebSpeech API?

Is there a way to programmatically list available input devices and allow to change the current one being used for the WebSpeech API?
I'm aware Chrome shows a video icon on the address bar where a device can be chosen, but I want to make this setting available on the web app itself.
Yes, there's a way- take a look at https://webaudiodemos.appspot.com/input/index.html, it lets the user select the input. PS: This works just for chrome.
Also you can look this example using webrtc, however I'm not sure if it can be integrated with webspeechapi: https://webrtc.github.io/samples/src/content/devices/input-output/
Also, take a look at this post: https://developers.google.com/web/updates/2015/10/media-devices It has a lot of information
Sorry to burst your buble but it can't be done, the only way to have access to the devices is using the system API's and the web browser limits your access to specific API's that he chooses to expose, unfortunately for you the device related ones are not exposed.
On a side note, think of the repercussions of exposing your devices to every website you visit...

PWA feature list for each browser

Where can I find list of PWA features that are supported and under development for each browser?
This will greatly help to determine if I shall develop a native app or go directly for PWA. And also know upfront what to expect in the foreseeable future in terms of browser support so that I can enhance my app with newer features.
Thanks
Actually you can try
https://whatwebcando.today/
for test your browser first
Web App Manifest, and
Service Worker API
seem to be the key technologies to watch. Google's Progressive Web App Checklist mentions both of these technologies.
However, other technologies such as BeforeInstallPromptEvent, or PWA installation notifications, are explicitly discouraged by Mozilla Developer Network, MDN:
Do not use it [BeforeInstallPromptEvent] on production sites facing the Web
Also, as an aside, commercial incentives for PWA's appear to exist:
The Supreme Court signaled Apple could face a revived antitrust
lawsuit over its price control [...and 30% take] of the iPhone and
iPad App Store. -Fortune
Google indicates that a progressive web app, PWA, is:
Progressive - Works for every user, regardless of browser choice because it's built with progressive enhancement as a core tenet.
Responsive - Fits 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 - Feels like an app, because the app shell model separates the application functionality from application content .
Fresh - Always up-to-date thanks to the service worker update process.
Safe - Served via HTTPS to prevent snooping and to ensure content hasn't been tampered with.
Discoverable - Is identifiable as an "application" thanks to W3C manifest and service worker registration scope, allowing search
engines to find it.
Re-engageable - Makes re-engagement easy through features like push notifications.
Installable - Allows users to add apps they find most useful to their home screen without the hassle of an app store.
Linkable - Easily share the application via URL, does not require complex installation.
You can check this blog about the features of PWA. Also based from this documentation, Chrome, Opera and Firefox have all implemented support for service worker with Edge having positive public signals about interest in the feature. Safari briefly mentioned interest in it via one engineer's proposed five year plan. You can also check this related thread for more information.

Native App or PhoneGap or appcelerator or something else?

I'm very new to mobile app, and having difficulty finding the right direction to move ahead with our current project. I hope to receive some insights, suggestions from the experts here based on your experience.
Below are are main features our project needs:
1. Get user current GPS location and send to our server (and receive a list of location to display)
Take picture and perhaps even video with phone camera (if available) then store and send to our server when the users want to (in case they do not have free wifi at the mean time, they may decide to send later)
Join chat rooms (hosted on our server)
Store certain info (location info such as address/fone etc and chat logs for offline usage)
We want to support iphone and android first, budget is also a big concern.
If you use the native app approach, it means you will have to code separately for both android and iphone platforms.
Considering your budget concerns, PhoneGap and Appcelerator should work for you. Both are powerful platforms. But before choosing either of these, consider a few points about each of them.
If you choose phone gap, you will be coding in HTML, css and javascript. Also you will be building a mobile web application.
If you choose appcelerator titanium, you will require only javascript skills to develop app and the look and feel you get will be closer to the native app. There might be a slight performance delay with the android build of it as compared to iphone, which is acceptable in most cases.First go through its demo (Kitchensink project), then decide if this platform suits you.

mobile application analytics

HI all,
so we all know "pinch media" - the "spyware" software ;)
i'm searching for some really cool analytics softwares for my iphone application.
pinch media, is the one i know, it looks really great, but we all know, the reputation of this piece of software is very bad.
i'd like to know if i can use it, or if my app then is one of this spyware apps, for users (it isnt really, i know, but users might think it is, when i use this).
are there some alternatives? other programms, with the same good analysis?
I found admob and motally.com, but pinch media/Flurry is the best one atm.
Here is a good pdf that compares some of the main iPhone/iPod touch analytics providers
Try Google Analytics
Any analytics package which reports usage statistics back to a central server (Flurry, Google Analytics, etc.) will be considered "spyware" by some users, not just Pinch Media's offering. The really paranoid users will sniff data traffic out of your application and detect traffic from any service, no matter who provides it.
If you really care about those users who will be upset by this, give them the option to opt-out of data collection in your application's settings or when the application first starts.
If you are looking for more inside on your app, you should try heatma.ps. They let you view heatmaps for your app, and other interaction data.
Example heatmap:
I suggest you to take a look at Appsee
Appsee provides visual in-app analytics, including heatmaps, real user recording and user bahavior reprots. And you can create a free account there.
Flurry, Google Analytics, etc are central server to store the user's data.
If you want to build your private data center. you can visit this url
http://www.github.com/cobub
And the web site is: http://dev.cobub.com
to get the open source system (both server and client sides)
There are two kinds of analytics: business analytics and app performance analytics. Google Analtyics, Flurry etc are good for business analytics but app developers are mostly interested in knowing when app crashes, being able to capture app logs, impact of network speeds and carriers on performance of their apps. For app performance analytics, take a look at http://apigee.com/about/mobile-analytics . You not only get real time performance anlaytics but also ability to do some configuration changes in real time.

What is the iPhone SDK Missing?

I've been doing mobile app development for a long time (2001?), but the systems we worked with back then were dedicated mobile development environments (Symbian, J2ME, BREW). iPhone SDK is a curious hybrid of Mac OS X and Apple's take on mobile (Cocoa Touch).
But it is missing some stuff that other mobile systems have, IMO. Specifically:
Application background processing
SMS/MMS application routing (send an SMS to my application in the background)
API for accessing phone functions/call history/call interception
I realize that Apple has perfectly valid reasons for releasing the SDK the way they did. I am curious what people on SO think the SDK is missing and how would they go about fixing/adding it, were they an Engineering Product Manager at Apple.
The biggest shortcoming in my opinion is support for separating licensing from distribution.
What I mean by this is that it should be possible to download a trial version of an application and later purchase a license for that application (from an API call inside the application or from the app store). This would make it much easier to try-before-you-buy and get rid of the current duplicates of many applications with 'lite' versions.
I think lack of push notifications for apps is the big thing we're missing right now. With push, you can register your application to perform a task (like getting the most recent data from a web service) even when it's not running, at a time and frequency the OS decides is best. In an ideal world, along with the existing concept of iPhone apps loading quickly and resuming where you last left off, this solves the problem of not running in the background. I know some tasks will be more difficult or maybe impossible with this strategy, but it's still a pretty good compromise between third party applications and the iPhone's limited hardware.
Originally push was scheduled for last September, but it was removed from the beta SDK and not spoken of since then.
API's I'm personally looking for:
Apple80211 as a public API (private, current API is fine if documented)
Access to Volume buttons (semi-accessible via Celestial, private, needs new API)
Access to Calendar (private, API status unknown)
Access to Bluetooth + SPP profile (status unknown)
Access to Camera (directly, API status unknown)
Access to JavaScript runtime (directly, not through UIWebView, API status unknown)
WebKit access that's lower-level than UIWebView (private, current API is fine)
Access to Music Library (private, current API is fine)
Garbage Collection.
CoreData is missing.
You've mentioned some of the big ones - copy & paste (or in fact any way for apps to collaborate) is another huge omission.
It also seems to lack a desktop synch framework (at least if it exists I can't find it).
Language independence and especially lack of scripting is another pet peeve - objective-c is all very well but more languages to choose from would be good.
Inability to dynamically extend apps, via scripts or otherwise, is another big omission. This is partly an SDK/OS issue, partly licensing.
My list ordered by priority:
Mapping abstraction (the MapKit looks awesome), but that would require a new Google Maps TOS
Music library
Camera (photo + video) Access to more
UIViews, Apple designed some pretty nice custom ones for their apps
Better UIWebKit abstraction
The features I see missing that it should have is
Access to SMS
Direct Access to Google Maps App. You should be able have access to this so you could extend your application to use the built in features provided by Google Maps.
Access to the Bluetooth functionality of the phone.
Access to the Calendar. Why not allow access to simply post a calendar event for the user.
Access to Active Sync. It would great if we could directly access this and communicate back to the Exchange Server.
Core Image. They provide Core Animation but Core Image is missing. I hope that this is added to the API soon.
These are some of the features that my clients have access for in the past and are supprised when they are not available.
We definitely miss a Calendar API and SMS access. So many applications could leverage such APIs. The iPhone allows users to have everything in their pocket, but it's almost useless as long as developers cannot leverage this integration in their apps.
A language with proper namespaces.
A limitation that bugs me is lack of access to system features that require root or setuid. For example: opening privileged IP ports.
I'm not sure there is a good solution to this, as long as Apple's policy is to keep the device locked-down.
Allow program to set some kind of local timed event for your application to bring up an alert and launch your app if the user agrees (like any calendar app). You could do that with push notifications but there are many cases I'd hate to have to rely on a whole server infrastructure and network connectivity just to basically do some timed thing.
Some idea of what direction the user is facing. I cannot believe the GPS chip the newer iPhones use are not capable of reporting direction.
I would personally love to see
Access to the CoreTelephony Framework (Currently private). Which allows access to all the phone functions (Especially sending MMS / SMS).
Some sort of ability to run stuff in the background. While push notifications is ok for most things, but it is a bit hard to leverage CoreLocation (i.e. have the app show a notification at a certain location). Of course this would probably need an on/off button or app specific like push is.
animation view which will be reduce developer to make a cool app , of course the core business local still need consider more , but the view layer could more easy to use ....