Expo. React Native. Deep links do not work on Android - android

Universal links on iOS work well.
I have an issue with Android.
Please see assetlinks and intentFilters.
I will appreciate any help.
SDK Version: 35.0.0
assetlinks - https://ocov.us/.well-known/assetlinks.json
"intentFilters": [
{
"action": "VIEW",
"autoVerify": true,
"data": {
"scheme": "https",
"host": "*.ocov.us"
},
"category": [
"BROWSABLE",
"DEFAULT"
]
}]

Playing with data.host helped.

Related

Share link from app doesnt work - universal ios expo

im trying to implement universal links, but i cant not get it work, im using expo managed workflow, so heres the app.json config:
"expo": {
"scheme": "myapp",
"ios": {
"associatedDomains": ["applinks:myapp"],
}
},
so the scheme is for example is myapp and my server where is the well-known file is also https://myapp
here is the well-known-file:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TEAM_ID.BUNDLE_IDENTIFIER",
"components": [
{
"/": "/*",
}
]
}
]
},
"activitycontinuation": {
"apps": [
"TEAM_ID.BUNDLE_IDENTIFIER"
]
},
"webcredentials": {
"apps": [ "TEAM_ID.BUNDLE_IDENTIFIER" ]
},
"appclips": {
"apps": ["TEAM_ID.BUNDLE_IDENTIFIER"]
}
}
everytime i enter to the page or enter that direction in safari it doesnt detect the app, BUUUUT if i do: myapp:// in safari it will ask me if i want to open it in the app, why using the scheme it works? and using https doesnt, need to share it with https so android users can open the app when click on it

Can't find emulator in VS Code. How can fix

flutter emulators
"Unable to find any emulator sources. Please ensure you have some
Android AVD images available." I am using win10, but when I want to connect to emulator with flutter I get this error. How do I introduce my device in genymotion to Visual Studio Code ?
Launch your emulator, then run in terminal
flutter devices
Then in your file launch.json inside .vscode folder in your project, you can create something like the code above and name the emulators and put the deviceId that you see when you write ´flutter devices`
{
"version": "0.2.0",
"configurations": [
{
"name": "budgets",
"request": "launch",
"type": "dart"
},
{
"name": "iPhone 12 Pro Max",
"request": "launch",
"type": "dart",
"deviceId": "007153FC-9053-4A68-851A-20D1B6013518"
},
{
"name": "iPhone 11",
"request": "launch",
"type": "dart",
"deviceId": "73EE2120-4DB0-42FD-AA3A-DD4D417FE40A"
},
{
"name": "Android",
"request": "launch",
"type": "dart",
"deviceId": "emulator-5554"
}
]
}
I solved the problem by uninstalling vs code, genymotion and virtualbox and reinstalling them.

What pathPrefix in Android to make entire domain a deep linking?

I want to set up deep linking so that any url of myapp.io is opened by the Android app if installed.
Is this a valid pathPrefix? Or should it be "/*"?
"android": {
"intentFilters": [
{
"action": "VIEW",
"data": [
{
"scheme": "https",
"host": "*.myapp.io",
"pathPrefix": "*"
}
],
"category": [
"BROWSABLE",
"DEFAULT"
]
}
]
},
The code above is from my app.json as I'm using Expo, but I think it's clear what React Native values they map to.
It needs to be:
"pathPattern": ".*"
From the docs:
- pathPattern (string): a regex for paths that should be matched by the filter, e.g. ".*"
- pathPrefix (string): a prefix for paths that should be matched by the filter, e.g. "/records/" will match "/records/123"
https://docs.expo.io/workflow/configuration/

read ECONNRESET using expo build

I am building an apk for my application which is built by react native using expo
I use expo build:android command in the terminal and after this I got a prompt to choose from:
? Would you like to upload a keystore or have us generate one for you?
If you don't know what this means, let us handle it! :)
so i choosed that expo will handle it and I got the following steps
Publishing to channel 'default'...
Building iOS bundle
Building Android bundle
Analyzing assets
Uploading assets
Uploading \assets\alert.mp3
Uploading \assets\images\splash.png
Uploading \assets\images\icon.png
and then I got the follwing error
read ECONNRESET
Set EXPO_DEBUG=true in your env to view the stack trace.
I also updated expo-cli to the latest version!
and here is my app.json if it helps
{
"expo": {
"name": "app name",
"slug": "app-name",
"platforms": [
"android"
],
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/images/icon.png",
"scheme": "myapp",
"splash": {
"image": "./assets/images/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"updates": {
"fallbackToCacheTimeout": 0
},
"android": {
"package": "com.el3ameed.appname",
"versionCode": 1,
"adaptiveIcon": {
"foregroundImage": "./assets/images/icon.png",
"backgroundColor": "#171717"
}
},
"assetBundlePatterns": [
"**/*"
],
"ios": {
"bundleIdentifier": "com.el3ameed.appname",
"buildNumber": "1.0.0"
},
"description": ""
}
}
I assume you're on Windows because I faced the exact same issue.
So first verify that you've followed the instructions given here:
https://docs.expo.io/versions/latest/distribution/building-standalone-apps/
Especially regarding installing Ubuntu and enabling WSL (in that order).
I was getting this error even after following the instructions so what worked for me was disabling my Windows Firewall. After that it worked like a charm.
Also as a last resort try using a VPN as that worked for me aswell.

Android-TV app shows white screen

I've built an App with react-native and expo. Installed it on my Android-TV and my Android-TV emulator.
The app works when I run it through the ES File Explorer app, however when I try to run it regularly by clicking it on the Android-TV app section I get a constant white screen.
Built the apk with expo through $exp build:android.
App.json code:
{
"expo": {
"name": "CommuniTV",
"description": "The future of watching TV is here!",
"slug": "CommuniTV",
"privacy": "public",
"sdkVersion": "26.0.0",
"platforms": ["ios", "android"],
"version": "1.0.4",
"orientation": "landscape",
"entryPoint": "./App.js",
"icon": "./assets/icon.png",
"splash": {
"image": "./assets/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"updates": {
"fallbackToCacheTimeout": 0
},
"assetBundlePatterns": [
"**/*"
],
"ios": {
"supportsTablet": true
},
"android": {
"package": "project.communiTV.com",
"versionCode": 104,
"permissions": [],
"icon": "./AppIcon.png",
"adaptiveIcon": {
"foregroundImage": "./launcherIcon.png" // size is 1024x1024
}
}
}
}
Couldn't find any solution on the web and I'm stuck.
Any suggestions?
First screenshot - I click here I get a white screen
Second screenshot - I'll start it from here the App works fine
After spending some time looking at the native code I managed to solve this issue by adding the proper configuration to app.json:
"android": {
...
"intentFilters": [
{
"action": "MAIN",
"category": [
"LEANBACK_LAUNCHER"
]
}
]
},
More detailed answer can be found here: https://gist.github.com/miazga/2e6449e0c591e3ac8e22185b2edb447d
As recommended in this thread, Go to File -> Setting -> Build,Execution,Deployment -> Instant Run then uncheck the Enable Instant Run if it is checked, then run the project.
Also from this link, when your app starts, it first uses the theme of the launching activity to display the window background. If you don't specify windowBackground in your styles.xml, the default white will be used, and damage the UX.
Matt's answer seems to be oudated as of now, its throwing build time error while reading manifest.
TypeError: Cannot convert undefined or null to object
at Function.entries (<anonymous>)
at renderIntentFilterDatumEntries (/app/turtle/node_modules/#expo/xdl/build/detach/AndroidIntentFilters.js:33:17)
at /app/turtle/node_modules/#expo/xdl/build/detach/AndroidIntentFilters.js:37:70
at Array.map (<anonymous>)
at renderIntentFilterData (/app/turtle/node_modules/#expo/xdl/build/detach/AndroidIntentFilters.js:37:48)
at /app/turtle/node_modules/#expo/xdl/build/detach/AndroidIntentFilters.js:25:9
at Array.map (<anonymous>)
at renderIntentFilters (/app/turtle/node_modules/#expo/xdl/build/detach/AndroidIntentFilters.js:22:24)
at runShellAppModificationsAsync (/app/turtle/node_modules/#expo/xdl/build/detach/AndroidShellApp.js:632:115)
at async Object.createAndroidShellAppAsync (/app/turtle/node_modules/#expo/xdl/build/detach/AndroidShellApp.js:392:3)
at async runShellAppBuilder (/app/turtle/build/builders/android.js:95:9)
at async Object.buildAndroid [as android] (/app/turtle/build/builders/android.js:43:28)
at async build (/app/turtle/build/jobManager.js:181:33)
at async processJob (/app/turtle/build/jobManager.js:118:32)
at async Object.doJob (/app/turtle/build/jobManager.js:49:5)
at async main (/app/turtle/build/server.js:66:13)
I updated it with data property, now seems to work fine, tested on expo 39 & 40
Also note that you have to include "LAUNCHER" too in category or else some devices may still show white screen.
"intentFilters": [
{
"action": "MAIN",
"data":{},
"category": [
"LEANBACK_LAUNCHER",
"LAUNCHER"
]
}
]

Categories

Resources