ios - Xamarin IOS 自定义 URL 方案在 iOS 14 中不起作用

标签 ios xamarin xamarin.forms xamarin.ios

我创建了一个 Xamarin 表单应用程序并为 iOS 配置了自定义 URL 方案,但它在 iOS 14 中没有触发。

因此,我创建了一个示例 native iOS 项目并测试自定义 URL 方案,它正在工作。 这是示例 iOS swift 代码。

 import SwiftUI

 @main
 struct TestApp: App {
 //@UIApplicationDelegateAdaptor var delegate: AppDelegate
 var body: some Scene {
    WindowGroup {
        ContentView().onOpenURL(perform: handleURL)
    }
 }

func handleURL(_ url: URL) {
    print("source application")
    print(url)
}

}

但是我如何将其转换为 Xamarin.因为如何在 Xamarin iOS 中调用 onOpenURL?

最佳答案

在 info.plist 中添加有关自定义方案的信息。您可以在 iOS 项目选项中执行此操作:

双击您的 iOS 项目 >> 构建 > iOS 应用程序 >> 高级(选项卡)

在底部,您将看到“URL 类型”部分。在那里添加有关您的自定义方案的信息。例如:

在“标识符”字段中,输入“com.myapp.urlscheme”。在“URL 方案”字段中,输入“myapp”。

接下来您需要在 AppDelegate 文件中重写:

public override bool OpenUrl (UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
{
// custom stuff here using different properties of the url passed in
return true;
}

继续并在上面的覆盖中的“return true”上设置断点

现在,如果您在模拟器上构建并运行,然后在 Safari(在模拟器上)的 URL 栏中输入“myapp://com.myapp.urlscheme”,它应该启动您的应用程序,命中断点,然后“url”参数将为“myapp://com.myapp.urlscheme”。

关于ios - Xamarin IOS 自定义 URL 方案在 iOS 14 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68827155/

相关文章:

objective-c - GCDAsyncUdpSocket 多播获取 HTTP 412 响应

ios - 获取 <command line> 错误 - 找不到 info.plist 文件

Xamarin Android WindowSoftInput 调整大小(特定页面)

c# - Xamarin Forms 错误 => "jarsigner.exe"以代码 1 退出

c# - 在 Xamarin.Android 中单击 RadioGroup 按钮时未选中 RadioButton

c# - Xamarin UISwipeGestureRecognizer 渲染器

ios - xcode 在 iPhone 设备上运行应用程序时出错

ios - xcode 4.5 不允许我在 ios 5.1 设备上调试

ios - 从堆栈中弹出当前 View 并推送新 View Xamarin

c# - Xamarin - 无法加载程序集“PCLStorage.Abstractions”