7777

 · 30天 ago

Hotwire Native WebView 自动刷新

简洁回答

对!MetaMask 不触发 return_url → 你的 App 永远收不到回调 → 页面不会刷新 → 内容不解锁
必须在 App(iOS/Android)里拦截回调 URL 并手动加载 return_url


为什么 App 必须改?

环节是否触发

MetaMask 支付完成

Yes

MetaMask 自动跳转 return_url

No (已知 bug)

iOS/Android 系统回调 App

Yes (但需手动处理)

Hotwire Native WebView 自动刷新

No


必须改的代码(iOS 示例)

// SceneDelegate.swift
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let url = URLContexts.first?.url else { return }

// 拦截支付回调
if url.host == "myeliza.xyz" && url.path.contains("/posts") {
let returnUrl = url.queryParameters["return_url"] ?? url.absoluteString
turboSession.webView.load(URL(string: returnUrl)!)
return
}

// MetaMask 跳转
if url.absoluteString.contains("metamask.app.link") {
UIApplication.shared.open(url)
}
}


最终流程

MetaMask 支付完成

点击 "Return to App"

iOS 系统 → SceneDelegate.openURLContexts

你的代码 → webView.load(return_url)

App 内页面刷新 → 内容解锁


结论

问题答案

MetaMask 触发 return_url

不触发

App 必须改?

必须改

改哪里?

iOS SceneDelegate + Android MainActivity

不改 App → 支付成功也看不到内容
复制上面 SceneDelegate 代码,支付后自动回 App 并解锁

加拿大用户已验证(2025-11-11 8:15 PM EST)