Kiosk Apps on Chrome Store no longer work - kiosk-mode

We have developed a number of kiosk (Chromebook) applications and published them in the Chrome store. Any of our existing ones can be updated and continue to work and are available on the manage kiosk applications screen. You can type in the code on a Chromebook which does not have them and they will be installed.
But ever since the Windows/Mac change which blocks apps on those platforms - when we create a new kiosk app (even if we use the exact same code as before) they no longer will install. If you go into Chrome extensions on the Chromebook you can add them there. But if you go into Manage Kiosk Apps and then type in the code or the URL you get "Invalid Application" as the message. Note that the application is published as UNLISTED not private (same as the ones which work).
We have also used the Google App Builder and used GitHub code for basic kiosk apps to test if its something in our build but it seems to be any kiosk app.
We have tried repeatedly to get help from Google to no avail. Would appreciate any assistance here.
On the off chance its our manifest:
{
"manifest_version": 2,
"name": "test",
"default_locale":"en",
"short_name": "test",
"description":"test is a kiosk app",
"version": "0.0.0.17",
"icons": {
"128": "icon_128.png"
},
"permissions": [ "clipboardWrite","power", "storage", "alarms", "notifications", "webview", "gcm", "https://*/*", "http://*/*"],
"app": {
"background": {
"scripts": ["background.js"]
}
},
"minimum_chrome_version": "46",
"kiosk_enabled" : true,
"kiosk_only" : true
}

ref: https://bugs.chromium.org/p/chromium/issues/detail?id=870300&q=component%3AUI%3EShell%3EKiosk%20&colspec=ID%20Pri%20M%20Stars%20ReleaseBlock%20Component%20Status%20Owner%20Summary%20OS%20Modified
If your Chromebook, Chromebase, or Chromebox is from 2017 or later, it
won't work in kiosk mode unless it's managed by an administrator.
So you have to pay a $10 fee per station or similar to enroll a device into Google management and then you force publish an app to run in kiosk mode. Licenses are acquired from Google partners who presumably can discount in bulk or something, idk.
For comparison commercial TVs for display signage run WebKit or Chromium browser and can be run on closed networks with no subscriptions required. Primary vendors being Samsung and LG. If you visit any of the signage CMS vendors you will find in their support documentation that a device management subscriptions is mandatory (example: Signage Live).

Related

How to install private apps using Android Management API?

I have made the application available to the organization in Google Play Store.
I am using Android Management API to install the application in the device. The public apps are getting installed but the private app is not getting installed.
I am getting the following nonComplianceDetails when calling https://androidmanagement.googleapis.com/v1/{parent=enterprises/*}/devices API
"nonComplianceDetails": [
{
"settingName": "applications",
"nonComplianceReason": "APP_NOT_INSTALLED",
"packageName": "com.xyz.abc",
"installationFailureReason": "IN_PROGRESS"
},
{
"settingName": "persistentPreferredActivities",
"nonComplianceReason": "APP_NOT_INSTALLED",
"packageName": "com.xyz.abc"
}
]
Am I missing something in the policy?
I am not able to view the app in the device play store. App is not getting installed also. And when I am giving installType as KIOSK a page is comming which shows 'Installing work apps'. And never gets installed. Also the app is approved in managed Play Store Enterprise.
Make sure that your private app is distributed properly to your enterprise. You can check this link on how to properly distribute your private app to an enterprise.
The non-compliance indicates that the installation is still in progress. This app could take a while to install depending on the size of the app and network connection speed.

Will the Add-ons disappear and be useless for Google apps on 2017-2018?

I was trying to publish a new version of an Add-on that was already created, but when I tried to publish it, in the Developer Dashboard and on the top of the page a warning message was shown:
As of November 21st, 2016, all newly published packaged or hosted apps are restricted to Chrome OS, and are not available to users on Windows, Mac or Linux. Existing apps will continue to be available on all major platforms and will continue to receive updates. - More Info
Note: This change does not apply to Google Drive Apps or Add-Ons for Google Apps.
So if you click on the "More Info" button you will see more additional information.
So all of this should be a problem to me because I have important applications that I need everyday, so I wonder if there is any other alternative way to keep working with add-ons.
Thank you!
AFAIK, this change (if Google decides to proceed with it) would only apply to Chrome Apps (see my answer here).
In the Chromium Blogpost (also the link for More Info in your post), it mentioned:
In the second half of 2017, the Chrome Web Store will no longer show Chrome apps on Windows, Mac, and Linux, but will continue to surface extensions and themes.
Add-ons weren't specifically mentioned, but as already included in your post, Add-ons that are for Google Drive Apps or any Google Apps in general (e.g. Docs, Sheets, etc.) are the exception.
If you're add-on is associated with a non-Google App, it is possible that you will be affected with the change. Seeing as the Chrome App will be removed, the associated Add-ons would follow.
You probably already know the differences between a Chrome App, an Extension, and an Add-on, but for future readers that are not familiar, might as well post this link to a YouTube video that explains Apps vs Extensions vs Add-ons.

How do you test Apple Pay in Safari?

I am setting up Apple Pay on the web with Stripe and want to use the Sanbox Tester account we setup in iTunes Connect to test on both iOS and macOS in Safari.
On the test device (2017 iPad) I have logged in to iCloud with the Sandbox Tester account and added a test card into Wallet in the settings app. On my development website the Apple Pay button is showing up and interactions work fine.
I created a new account on my MacBook Pro (Retina, Mid 2015) and again logged in to iCloud with the same Sandbox Tester account. When I view my development website on here, however, the checkAvailability function always returns false:
Stripe.applePay.checkAvailability(function(available) {
alert(available);
...
}
Presumably this is because I need further setup for Apple Pay to work. But for the life of me I can't get macOS cooperate. After reading some documentation here are some points that I think are relevant:
In my iPad's Wallet & Apple Pay settings there isn't an "Allow payments on Mac" option anywhere
There is no Wallet & Payments option in my macOS Settings app
There is no mention of Apple Pay in macOS Safari settings, privacy tab
Handoff is enabled on the Mac
Is it possible for me to enable test payments with my sandbox user on macOS using handoff, and if so what steps am I missing?
Update
My macOS Sierra version is 10.12.4 (16E195)
Running window.ApplePaySession.canMakePayments() in the console returns false
Update 2
The steps outlined here are all in place on both devices. When I open Safari on the MacBook and navigate to a page, the handoff icon shows on the multi-tasking screen and vice-vera, when I open a tab in iOS Safari, the handoff icon shows to the left of the dock. It appears handoff is working as expected.
Also, Universal Clipboard is working in both directions.
Note: On a different (non-sandbox) iCloud account on this same MacBook, which is using handoff with a different iPad, the payment options show up in Safari as expected.
Apparently, Apple Pay on the Web using handoff is not possible with iPads. The only compatible devices are:
A Mac model introduced in 2012 or later with an Apple Pay-enabled
iPhone or Apple Watch
This comes directly from Apple. Pretty explicit details can be found on this page.
Edit from Leonardo: only iPhones and iWatches are supported to use ApplePay with handoff.
Looking at the source of the Stripe checkAvailability method might also help troubleshoot the problem.
Stripe.applePay.checkAvailability = function (callback) {
if (location.protocol !== 'https:') {
return callback(false);
}
var canMakePayments = window.ApplePaySession && ApplePaySession.canMakePayments()
if (/^pk_test_/.test(Stripe.key || Stripe.publishableKey)) {
callback(canMakePayments)
} else if (canMakePayments) {
var merchantId = "merchant." + window.location.hostname + ".stripe"
ApplePaySession.canMakePaymentsWithActiveCard(merchantId).then(callback)
} else {
callback(false)
}
}
Given you said that it was working with your iPad, I'm assuming your domain is already using ssl and the right cypher suite.
Since you are testing, the canMakePaymentsWithActiveCard shouldn't even been called since your stripe key should be a testing one, and if your look at the canMakePayments documentation , you can see they clearly stipulate that:
It does not verify whether or not the user has any provisioned cards in Wallet.
To make sure that your device is really supporting it, you should execute directly from your console
window.ApplePaySession.canMakePayments()
And make sure this returns true, if it does that means the issue belongs to the Stripe configuration rather than Apple Pay.
The other thing I see that could cause the problem would be the OS version of your mac. Your iPad is pretty new and thus will have the latest version already, but having bought your MacBook in 2015 does not necessary means you made the upgrade to Sierra (macOS 10.12) which is required to use ApplePay.
I'm sure you probably already tried all these things, I'm just making sure we didn't forgot anything.
Since HandOff seems to be required, make sure you also have all these requirements checked.

Created simple App with WL.Client.connect and mobile web environment, see "Access Denied" when running it on the preview and actual device

Created a simple hybrid app. Only have the following in the code
main.js
function wlCommonInit() {
WL.Client.connect({
onSuccess: function() {alert ("OK");},
onFailure: function (string) {alert ("fail" + string);}
});
}
I created a mobile web environment.
After I did a Build All Environment, Run it on the Server.
I right click on the mobile web environment > Preview
I kept getting a pop up alert saying "Access Denied" with a button named reload
I moved to my iphone and in the safari, typed in the URL for the mobile web. I got exactly the same error on my iphone.
Please assist.
You haven't told us what version of MobileFirst Platform Foundation you are using, but I am guessing that it is 7.1.
In 7.1, a new Session-Independent Mode was introduced, and is turned on by default. However, session-independent mode is not supported in browser-based environments (such as mobile web). If you try to use an app that's configured for session-independent mode in an environment that doesn't support it, you will get this error. If you want to create an app in 7.1 that uses a browser-based environment, you'll need to disable session-independent mode.
If you go into your project's "worklight.properties" file, set (or change) these values:
mfp.session.independent=false
mfp.attrStore.type=HttpSession
and then rebuild/deploy your project, it should work.
Please see the doc page I've linked above for further information about session-independent mode.

Anyway to test kiosk mode with unpublished app?

I have a Chrome app that I'd like to test in kiosk mode, but I can't seem to figure out how.
The manifest file has the kiosk mode flag set, but adding the app ID to the Manage Kiosk Apps screen doesn't work.
The app is unpublished, as it is installed directly on the ChromeBox.
Is there any way to achieve this, or am I going to have to publish it as unlisted, just for testing purposes?
As of Feb 2017, you cannot do this. The only solution is to publish it privately to testers. You can setup tester accounts that are the only ones able to see the app and then you'll be able to enter its ID in the "Manage Kiosk applications" screen.
https://support.google.com/chrome/a/answer/2663860?hl=en
Make sure you enter this as the url:
Enter https://clients2.google.com/service/update2/crx as the URL. The ID is part of the Chrome Web Store URL. In this example, the ID is the string "lfkjhmmdoiphacoihfjjgcdcjppdogjh" in the URL:
https://chrome.google.com/webstore/detail/kiosk-google-app-test/lfkjhmmdoiphacoihfjjgcdcjppdogjh
Source: https://support.google.com/chrome/a/answer/6177431?hl=en