dAppView.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { InAppBrowser, DefaultWebViewOptions } from "@capacitor/inappbrowser";
  2. import { Browser } from "@capacitor/browser";
  3. import { openGaoDe } from "./appLauncher";
  4. export const openDapp = async (url, params, open = false) => {
  5. // 将对象参数转换为 URL 查询字符串
  6. const queryString = new URLSearchParams(params).toString();
  7. const fullUrl = queryString?`${url}?${queryString}`:url;
  8. // 判断是web 还是 ios
  9. if (Capacitor.getPlatform() === "web") {
  10. window.open(fullUrl, "_blank");
  11. return;
  12. }
  13. if(open){
  14. await Browser.open({ url: fullUrl });
  15. return
  16. }
  17. // dappView
  18. await InAppBrowser.addListener(
  19. "browserPageNavigationCompleted",
  20. async (data) => {
  21. if (data.url.indexOf("go=gaode") > -1) {
  22. const params = new URLSearchParams(data.url);
  23. const lat = params.get("latitude");
  24. const lan = params.get("longitude");
  25. const address = params.get("address");
  26. await openGaoDe(lat, lan, address);
  27. }
  28. }
  29. );
  30. await InAppBrowser.addListener("browserClosed", async () => {
  31. InAppBrowser.removeAllListeners;
  32. });
  33. await InAppBrowser.addListener(
  34. "browserPageNavigationCompleted",
  35. async (data) => {
  36. if (data.url.indexOf("go=gaode") > -1) {
  37. const params = new URLSearchParams(data.url);
  38. const lat = params.get("latitude");
  39. const lan = params.get("longitude");
  40. const address = params.get("address");
  41. await openGaoDe(lat, lan, address);
  42. }
  43. }
  44. );
  45. await InAppBrowser.openInWebView({
  46. url: fullUrl,
  47. options: {
  48. ...DefaultWebViewOptions,
  49. showURL: false,
  50. showToolbar: false,
  51. androidMixedContentMode: "always_allow", // Android
  52. iosAllowsInsecureHTTPLoads: true, // iOS (部分版本支持)
  53. iosDisallowOverScroll: false
  54. },
  55. });
  56. };