You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建.NET Maui IAppIndexingProvider具体实现?解决深层链接报错

解决MAUI深层链接注册时的"No IAppIndexingProvider was provided"错误

问题根源

IAppIndexingProvider是平台特定接口,无法直接实例化抽象的AppIndexingProvider类。MAUI的App Links功能依赖各平台原生实现,必须针对Android、iOS等平台分别配置并使用对应的具体提供者。

解决方案步骤

1. 完成平台特定配置

Android平台

在AndroidManifest.xml中添加深层链接的intent-filter:

<intent-filter android:autoVerify="true">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <!-- 替换为你的深层链接scheme和host -->
    <data android:scheme="yourapp" android:host="findshop" />
</intent-filter>

iOS平台

在Info.plist中添加URL Scheme配置:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <!-- 替换为你的自定义scheme -->
            <string>yourapp</string>
        </array>
    </dict>
</array>

2. 设置平台专属的IAppIndexingProvider

MAUI已为各平台提供默认实现,无需自定义,直接在平台项目中初始化:

Android项目(MainActivity.cs)

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    // 绑定Android平台的索引提供者
    Microsoft.Maui.ApplicationModel.AppLinks.Default.SetAppIndexingProvider(new Microsoft.Maui.ApplicationModel.Platform.AndroidAppIndexingProvider(this));
}

iOS项目(AppDelegate.cs)

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
    base.FinishedLaunching(app, options);
    // 绑定iOS平台的索引提供者
    Microsoft.Maui.ApplicationModel.AppLinks.Default.SetAppIndexingProvider(new Microsoft.Maui.ApplicationModel.Platform.iOSAppIndexingProvider());
    return true;
}

3. 调整链接注册时机

避免在App构造函数中注册链接(此时平台环境未完全初始化),移至OnStart或OnResume方法中:

protected override void OnStart()
{
    base.OnStart();
    RegisterDeepLink();
}

private void RegisterDeepLink()
{
    var entry = new AppLinkEntry
    {
        Title = "Find Shop",
        Description = "Find Shop Deep Link",
        AppLinkUri = new Uri(GlobalVariables.FindShopDeepLink, UriKind.RelativeOrAbsolute),
        IsLinkActive = true,
        Thumbnail = ImageSource.FromFile("popupshop_purple.png")
    };

    entry.KeyValues.Add("contentType", "id");
    entry.KeyValues.Add("appName", "PopUp Shop");
    entry.KeyValues.Add("companyName", "Cefworx, LLC");

    Application.Current.AppLinks.RegisterLink(entry);
}

关键注意点

  • 深层链接的scheme、host必须与平台配置完全一致,否则无法被正确识别。
  • 不要尝试自定义IAppIndexingProvider实现,直接使用MAUI提供的平台专属类即可。

内容的提问来源于stack exchange,提问作者Cef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 10:33:16