react-native-onesignal
react-native-onesignal copied to clipboard
http/https launchUrl opens in a browser/webview instead of deep linking in iOS only
Description:
We've managed to get deeplinks to (mostly) work in our mobile apps. The following cases all work fine:
- Links to our website (i.e.
https://app.mysite.com
) deeplink correctly in both iOS and Android when tapped on in emails, messages, Slack, notes, etc, with both cold and warm starts - Branch links (i.e.
https://mysite.app.link
) also deeplink correctly in the above scenario - Both website and Branch links deeplink properly when specified as a Launch URL in the OneSignal web UI in Android
- Custom schemes (i.e.
mysite://
) work in all scenarios
The one scenario left where this is not working is OneSignal notifications sent to iOS. Tapping on a notif with either a Branch or website link will result in our app opening as expected, but then the default browser opens the launch URL, instead of the app routing to the correct screen. However, tapping the option to open that page in the app will then route to the correct screen afterwards.
We have React Navigation set up to override getInitialUrl
, but this also happens without that override. It appears that Linking.getInitialUrl
(or with Branch, Branch.getLatestReferringParams
) always returns null when tapping on an iOS notif set with a http(s) launch URL. However, if we specify a custom scheme instead, then while Linking.getInitialUrl
still returns null, Branch will at least pick up on this link and then route properly.
Environment
- React Native, as an ejected Expo app, running a bare workflow, with React Navigation
- Installed
"react-native-onesignal": "^4.3.5"
via yarn - Launch URLs are either Branch links, or direct links to our site
Steps to Reproduce Issue:
I don't have a great way to repro this in a barebones app since I'm not sure how to set that up, but this is what we've done in our app:
- Followed the setup guide here
- For iOS, set up AASA file
- Set up React Navigation to handle our deeplinking
- Send a notif via the web UI with a http or https launch URL
- Set
OneSignal_suppress_launch_urls
to true in Info.plist (not necessary as this issue still happens without this, but in a webview) - Observe the iOS app open first, then immediately open the default browser to the launch URL
Anything else:
While I didn't find any similar issues in this particular package, I did notice this still-open issue from the Cordova SDK that seems to point as a similar problem: https://github.com/OneSignal/OneSignal-Cordova-SDK/issues/412.
Howdy, We're working on a fix for this and will have it released very soon. Thanks for your patience!
Cheers
We encountered the same issue. With which version we can expect this to be resolved and when?
Cheers
We have also encountered this problem, do you have any clues on when there will be a fix please?
We have the same issue, Hope we can get this resolve soon.
Thanks
Howdy, We're working on a fix for this and will have it released very soon. Thanks for your patience!
Cheers
Since Jan 27, are there any updates?
Any updates? Facing the same issue while using deeplinks created via Firebase
@rgomezp Any updates on this?
@johnnywang have you found a solution for your issue?
It's stuck on the webview
@rgomezp Hi, have any updates? 🙏🏽
Hey guys! Has anyone managed to resolve the issue? We have the same issue.
Hey guys! Has anyone managed to resolve the issue? We have the same issue.
Put this in info.plist
:
<key>OneSignal_suppress_launch_urls</key>
<true/>
it work for me
We're having a similar issue where if we set a www url as the launchUrl in the push, the push opens in safari instead of using the inapp-browser. This behaviour seems configurable in the plain iOS sdk but I don't think that flag is set / exposed/ can be set by the react-native sdk.
The flag seems to be OSUD_NOTIFICATION_OPEN_LAUNCH_URL
/ ONESIGNAL_INAPP_LAUNCH_URL
If our analysis is correct, please make that flag configurable from the react native sdk.