Dum*_*an2 5 xamarin.ios xamarin.forms ios-universal-links
我正在遵循这些说明。该应用程序是 Xamarin.Forms iOS 应用程序。
https://xamarinhelp.com/ios-universal-links/
这是我不确定的。
首先,我将一个众所周知的文件夹添加到我的 MVC 5 Web 应用程序中。我无法添加 .wellknown 文件夹。因为我无法添加“。” 在该文件夹前面,我使用 Azure 门户添加了一个虚拟目录。
当我尝试使用https://portal.mydomain.com/.well-known/apple-app-site-association访问该文件时,我收到以下消息。
“您要查找的资源已被删除、更名或暂时不可用。”
其次,我必须使用 XML 文本编辑器编辑 Entitlements.plist。这是我的条目的样子。
<plist version="1.0">
<dict>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks: portal.mydomain.com</string>
<!--<string>your domain</string>-->
</array>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
接下来,这是ContinueUserActivity 和OpenUrl 的样子。
//AppLinks应用程序运行
Run Code Online (Sandbox Code Playgroud)public override bool ContinueUserActivity(UIApplication application, NSUserActivity userActivity, UIApplicationRestorationHandler completionHandler) { try { if (userActivity.ActivityType == "NSUserActivityTypeBrowsingWeb") { if (userActivity.WebPageUrl.AbsoluteString.Contains("/PublicOffers/OffersPage")) { ((App)Xamarin.Forms.Application.Current).AppLinkRequest(new Uri(userActivity.WebPageUrl.AbsoluteString)); return true; } } } catch { // Ignore issue for now } return base.ContinueUserActivity(application, userActivity, completionHandler); }
//AppLinks应用程序未运行
Run Code Online (Sandbox Code Playgroud)public override bool OpenUrl(UIApplication app, NSUrl url, NSDictionary options) { try { var components = new NSUrlComponents(url, true); var path = components.Path; var query = components.Query; // Is this a known format? if (path == "/PublicOffers/OffersPage") { // Send to App.xaml.cs ((App)Xamarin.Forms.Application.Current).AppLinkRequest(new Uri(url.AbsoluteString)); return true; } } catch { // Ignore issue for now } //return false; return base.OpenUrl(app, url, options); }
最后,我创建了这个调用 OnAppLinkRequestReceived 的方法。
Run Code Online (Sandbox Code Playgroud)public async void AppLinkRequest(Uri uri) { OnAppLinkRequestReceived(uri); }
问题是ContinueUserActivity 和OpenUrl 永远不会被调用。
以下是我想要使用通用链接打开/提示应用程序的 URL 示例。
https://portal.mydomain.com/PublicOffers/OffersPage?id=SOMEGUID&cid=SOMEGUID
如有任何想法、帮助或建议,我们将不胜感激。谢谢!
更新1
我将一个新的 web.config 文件添加到我熟悉的文件夹中,并像这样配置它。我现在可以访问这两个文件。不过,我的 iOS 通用链接仍然无法使用。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<staticContent>
<mimeMap fileExtension="." mimeType="application/octet-stream" />
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
更新2
我终于意识到为什么我的 Entitlements.plist 文件不包含关联域的选项。为了看到该选项,您必须右键单击该文件,选择“打开方式...”,然后选择“属性列表编辑器”。
https://learn.microsoft.com/en-us/xamarin/ios/deploy-test/provisioning/entitlements?tabs=vswin
更新3
我刚刚运行了这个验证器工具,一切都是绿色的。它查找 apple-app-site-association 文件。
http://branch.io/resources/aasa-validator/
您的域名有效(有效的 DNS)。您的文件通过 HTTPS 提供。您的服务器不会返回大于 400 的错误状态代码。已找到文件的“内容类型”标头:) 您的 JSON 已验证。
更新4
我刚刚进行了清理、重建和构建。通用链接仍然无法正常工作。
更新5
我升级到 Visual Studio 2017 Enterprise 和 Xamarin.iOS 11.9.1.24。我现在使用的是 11.3 SDK,但仍然无法使通用链接正常工作。我也升级到 Xamarin.Forms 2.5.1.444934。
我终于通过删除这一行中的空格来使其工作。
<string>applinks: portal.mydomain.com</string>
Run Code Online (Sandbox Code Playgroud)
现在读起来像这样。
<string>applinks:portal.mydomain.com</string>.
Run Code Online (Sandbox Code Playgroud)
我发现了这一点,因为我在将应用程序提交到应用程序商店时遇到错误。错误是:
您的应用程序包的签名包含 iOS 不支持的代码签名权利。具体来说,值 applinks: Portal.mydomain.com 为有效负载中的关键 com.apple.developer.linked-domains...
| 归档时间: |
|
| 查看次数: |
4600 次 |
| 最近记录: |