Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

in case web page show alert "This site is trying to open another application." alert not shown inside WebView window (works well on chrome mobile) #1048

Open
oleksiivinogradov opened this issue Feb 13, 2024 · 2 comments

Comments

@oleksiivinogradov
Copy link

page https://myhome2.cfc.io/wc/

code:

WebViewObject webViewObject;
IEnumerator StartWebView()
{
webViewObject = (new GameObject("WebViewObject")).AddComponent();
webViewObject.Init(
cb: (msg) =>
{
Debug.Log(string.Format("CallFromJS[{0}]", msg));
},
err: (msg) =>
{
Debug.Log(string.Format("CallOnError[{0}]", msg));
},
httpErr: (msg) =>
{
Debug.Log(string.Format("CallOnHttpError[{0}]", msg));
},
started: (msg) =>
{
Debug.Log(string.Format("CallOnStarted[{0}]", msg));
},
hooked: (msg) =>
{
Debug.Log(string.Format("CallOnHooked[{0}]", msg));
},
cookies: (msg) =>
{
Debug.Log(string.Format("CallOnCookies[{0}]", msg));
},
ld: (msg) =>
{
Debug.Log(string.Format("CallOnLoaded[{0}]", msg));
#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX || UNITY_IOS
// NOTE: the following js definition is required only for UIWebView; if
// enabledWKWebView is true and runtime has WKWebView, Unity.call is defined
// directly by the native plugin.
#if true
var js = @"
if (!(window.webkit && window.webkit.messageHandlers)) {
window.Unity = {
call: function(msg) {
window.location = 'unity:' + msg;
}
};
}
";
#else
// NOTE: depending on the situation, you might prefer this 'iframe' approach.
// cf. #189
var js = @"
if (!(window.webkit && window.webkit.messageHandlers)) {
window.Unity = {
call: function(msg) {
var iframe = document.createElement('IFRAME');
iframe.setAttribute('src', 'unity:' + msg);
document.documentElement.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
iframe = null;
}
};
}
";
#endif
#elif UNITY_WEBPLAYER || UNITY_WEBGL
var js = @"
window.Unity = {
call:function(msg) {
parent.unityWebView.sendMessage('WebViewObject', msg);
}
};
";
#else
var js = "";
#endif
webViewObject.EvaluateJS(js + @"Unity.call('ua=' + navigator.userAgent)");
},
//transparent: false,
//zoom: true,
//ua: "custom user agent string",
//radius: 0, // rounded corner radius in pixel
//// android
//androidForceDarkMode: 0, // 0: follow system setting, 1: force dark off, 2: force dark on
//// ios
enableWKWebView: true
//wkContentMode: 0, // 0: recommended, 1: mobile, 2: desktop
//wkAllowsLinkPreview: true,
//// editor
//separated: false
);
#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX
webViewObject.bitmapRefreshCycle = 1;
#endif
// cf. #512
// Added alertDialogEnabled flag to enable/disable alert/confirm/prompt dialogs. by KojiNakamaru · Pull Request #512 · gree/unity-webview
webViewObject.SetAlertDialogEnabled(true);

        // cf. https://github.com/gree/unity-webview/pull/728
        //webViewObject.SetCameraAccess(true);
        //webViewObject.SetMicrophoneAccess(true);

        // cf. https://github.com/gree/unity-webview/pull/550
        // introduced SetURLPattern(..., hookPattern). by KojiNakamaru · Pull Request #550 · gree/unity-webview
        //webViewObject.SetURLPattern("", "^https://.*youtube.com", "^https://.*google.com");

        // cf. https://github.com/gree/unity-webview/pull/570
        // Add BASIC authentication feature (Android and iOS with WKWebView only) by takeh1k0 · Pull Request #570 · gree/unity-webview
        //webViewObject.SetBasicAuthInfo("id", "password");

        //webViewObject.SetScrollbarsVisibility(true);

        webViewObject.SetMargins(5, 100, 5, 100);// Screen.height / 50);
        webViewObject.SetTextZoom(100);  // android only. cf. https://stackoverflow.com/questions/21647641/android-webview-set-font-size-system-default/47017410#47017410
        webViewObject.SetVisibility(true);
        webViewObject.LoadURL("https://myhome2.cfc.io/wc/");

        yield break;
@KojiNakamaru
Copy link
Member

This plugin doesn't forbid intents by default as it mainly targets trusted origins. You may utilize SetURLPattern() (cf. #550) to hook intents and show a warning dialog in unity.

Also, it might be better to utilize SFSafariViewController/Chrome Custom Tabs instead for your purpose. They are restricted but more compatible with Safari/Chrome. https://github.com/gree/unity-webview/tree/ac07c49acc27e72b2939c4be70bd5d05b1308855/appendix/sample-sfsafariviewcontroller-chromecustomtabs provides a simple example.

@KojiNakamaru
Copy link
Member

I cannot help about how the metamask app works for the url. As noted before, it might be better to use SFSafariViewController/Chrome Custom Tabs. Moreover, it might be better to utilize MetaMask SDK: https://docs.metamask.io/wallet/how-to/use-sdk/mobile/ .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants