TWA immersive mode - progressive-web-apps

It has been a week now searching for a way to make TWA application that is made by PWA and uploaded to google store working in immersive mode.
according to https://bugs.chromium.org/p/chromium/issues/detail?id=965329 this thing is implemented starting from chrome version 80, but I can't find a way to implement it!
I've made the digital asset and validate it on both google tool and Peter's Asset Link Tool
My digital asset code hosted https://mal-war.com/.well-known/assetlinks.json :
[
{
"relation": [
"delegate_permission/common.handle_all_urls"
],
"target": {
"namespace": "android_app",
"package_name": "com.example.maliciouswar",
"sha256_cert_fingerprints": [
"F7:AC:EF:00:9B:58:E0:63:81:CA:5C:D0:7B:68:B8:90:9B:DD:BA:A8:3A:08:87:27:3E:81:38:66:CB:55:DC:39"
]
}
}
]
and in the string.xml on the
<resources>
<string name="app_name">Malicious War</string>
<string name="asset_statements">
[{
\"relation\": [\"delegate_permission/common.handle_all_urls\"],
\"target\": {
\"namespace\": \"web\",
\"site\": \"https://mal-war.com\"}
}]
</string>
</resources>
I also tried to use https://www.pwabuilder.com/ , but also didn't work in immorsive mode on both my android device and emulator.

I finaly found the solution, is by adding this line:
<meta-data android:name="android.support.customtabs.trusted.DISPLAY_MODE"
android:value="immersive"/>
to AndroidManifest.xml
and there are other great meta tags too, you can find them here.

Related

SAPUI5 - sap.m.Input: Will it automatically invoke a soft(virtual)-keyboard if running on the proper device?

As we can see in the manifest file of each SAPUI5 application, there is the array of device-types, which usually has stuff like this inside:
"sap.ui": {
"technology": "UI5",
"icons": {
"icon": "",
"favIcon": "",
"phone": "",
"phone#2": "",
"tablet": "",
"tablet#2": ""
},
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
}
I am developing my first SAPUI5 application right now, and I wonder, if the runtime or core somehow knows, when to invoke a virtual keyboard (like on tablets, smartphones and other touchscreen-only devices), and then just simply does it.
Since I am not able to BYOD to test it in my current setup, I wanted to ask in here, if my assumption is right or not.
UI5 is at the end only a webpage. Every input on any webpage (e.g. just open amazon) opens the keyboard; if the input is focused.
What exactly happened depends heavily on your browser, device, etc.
If you are ever in doubt and your company is not allowing BYOD and if there aren't any other touch devices (convertible notebooks) you can at least use the examples on your private device.
Off-topic - If you have a MAC-Book you can also spin up the iphone emulator from xcode and access localhost.

How can I set supported languages in a Fiori application?

When we have a stand alone app that has index.html we can have something like data-sap-ui-xx-supportedLanguages="en,de" in the bootstrapping part to determine which languages are implemented in our app. In this case we will not see anymore an error like this:
https://webidetestingXXX.dispatcher.hana.ondemand.com/webapp/i18n/i18n_en_US.properties 404
because we determined that our app does not support en_US!
How can I do the same in a Fiori type application, I mean when we don't have any index.html and it has only Component.js as the starting point!
I remember in the past we set that in manifest.json, but I am not sure!
It is mentioned under the chapter Supported Locales and Fallback Locale in this documentation: https://openui5.hana.ondemand.com/topic/ec753bc539d748f689e3ac814e129563
{
"sap.ui5": {
"models": {
"i18n": {
"type": "sap.ui.model.resource.ResourceModel",
"settings": {
"bundleName": "myapp.i18n.i18n",
"supportedLocales": ["de", "en"],
"fallbackLocale": "de"
}
}
}
}
}
This manifest.json configuration is only supported since UI5 1.77.
For lower releases there is apparently no application-level configuration.

Discord Bot Deployment Problems

I'm currently having problems with getting my Discord bot, RoboMiku, to go online.
There were 2 main problems I had, but they're fixed. But, I have a new problem.
1. Bot not going online
My problems with deploying her are gone, but now she doesn't go online. It might have to do with the fact that when I click on the domain created, it brings an error up. Here is the link.
If it helps, my code on GitHub is here.
Key-value pairs should not have trailing commas in JSON files. So, removing the trailing comma from start script will solve your issue.
{
"name": "robomiku",
"description": "A simple bot that is currently in development.",
"version": "0.0.6a",
"main": "bot.js",
"scripts": {
"start": "node bot.js"
},
"dependencies": {
"discord.js": "^11.5.1"
}
}
Fixing this problem should also fix your dyno issue.

What does "ach" stand for? In manifest file, in overview application of SAP

This is an extract from manifest.json file of my overview application.
created using annotations
https://blogs.sap.com/2016/01/29/steps-to-create-analytic-card-on-overview-page-using-northwind-odata-service-v3-in-web-ide/
"sap.app": {
"id": "ovpdemo",
"type": "application",
"i18n": "i18n/i18n.properties",
"applicationVersion": {
"version": "1.2.2"
},
"title": "{{app_title}}",
"description": "{{app_description}}",
"ach": "sap",
It refers to SAP Support component which you need to use while raising bugs to SAP.
To be precise:
Application component hierarchy (SAP's component names for bug
reports); attribute is mandatory for SAP apps, but is not used so far
for apps developed outside SAP
Cited from:
https://help.sap.com/viewer/0ce0b8c56fa74dd897fffda8407e8272/7.5.6/en-US/be0cf40f61184b358b5faedaec98b2da.html

How can i keep listening to a websocket in a chrome packaged app?

Currently when a background process always becomes inactive, even when i'm waiting for data from a websocket. Is there a way to circumvent this? The documentation is not clear at all in this department (old documentation etc.). What is the 'new' and correct way to do this?
My manifest file:
{
"name": "Media 5",
"manifest_version": 2,
"description": "Html5 media center app for Chrome",
"version": "0.1",
"app": {
"background": {
"persistent": true,
"scripts": ["background.js"]
}
},
"icons": { "16": "small_icon.png", "128": "big_icon.png" },
"sandbox": {
"pages": ["sandbox.html"]
},
"permissions": [
"unlimitedStorage",
"fullscreen",
"notifications",
"webview"
]
}
There are lots of ways to prevent your event page from getting unloaded, including those listed here: http://developer.chrome.com/extensions/event_pages.html. Give one of those a try. Open a message port, or set a chrome.alarms alarm for about a 5-second interval. I don't believe it's documented behavior, but event pages are typically unloaded after 10 seconds of inactivity, so the alarm ought to keep you alive.
I've filed a bug about this; it might be smarter for us to avoid unloading if you're using websockets.
Another thing that keeps packaged apps alive is having an active callback. So, for example, you could use setTimeout with a timeout value of say 5 to ensure you app remains alive. This is only a workaround though, and there should be a better way to reconcile lifetime of websockets and packaged apps.
There is a Chromium bug (https://code.google.com/p/chromium/issues/detail?id=204573) tracking this issue.
As an FYI (because this is confusing), the "persistent": true line is currently ignored by Chrome. Packaged Apps (v2) are always set to "persistent": false.