我遇到了一個小問題,Safari 在直接啟動到 Xamarin 中的本機 Apple Maps 應用程式之前打開。我在某種程度上遵循了本教程:https ://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/map/native-map-app
var locationUrl = Device.RuntimePlatform == Device.iOS ?
$"http://maps.apple.com/?q={address}" :
$"http://maps.google.com/?q={address}";
var uri = new Uri( locationUrl ).AbsoluteUri;
try
{
await Launcher.OpenAsync( uri );
}
catch
{
await AppState.Current.NavigateToExternalBrowserAsync( uri );
}
這在 Android 中完美運行,并直接啟動到本機應用程式中。我遵循了這個蘋果地圖方案:https ://developer.apple.com/library/archive/featuredarticles/iPhoneURLScheme_Reference/MapLinks/MapLinks.html 。任何幫助將非常感激!
uj5u.com熱心網友回復:
我相信這是蘋果的意圖。來自developer.apple.com:
地圖鏈接被指定為常規
http鏈接,可以在 Safari 或目標平臺上的地圖應用程式中打開。
如果它在 Safari 中短暫打開,則很可能會識別瀏覽器內的 URI 并將其移植到應用程式(就像您如何使用某些網站“在應用程式中打開”一樣,但這是自動的)。
uj5u.com熱心網友回復:
根據Apple 檔案:與某些方案不同,地圖 URL 不以“地圖”方案識別符號開頭。相反,地圖鏈接被指定為常規 http 鏈接,并在 Safari 或目標平臺上的地圖應用程式中打開。
uj5u.com熱心網友回復:
與檔案和先前答案中的檔案所說的相反, maps:// 方案似乎創造了我預期的行為。,
因此,將 Apple URI 更新為:
$"maps://http://maps.apple.com/?q={address}"
作業精美。
整個片段:
var locationUrl = Device.RuntimePlatform == Device.iOS ?
$"maps://http://maps.apple.com/?q={address}" :
$"http://maps.google.com/?q={address}";
var uri = new Uri( locationUrl );
try
{
await Launcher.OpenAsync( locationUrl );
}
catch
{
await AppState.Current.NavigateToExternalBrowserAsync( uri.AbsoluteUri );
}
在沒有 safari 作為中介的情況下,創建在地圖應用程式中本地打開的預期行為。唯一的缺點是,如果用戶在 Apple 設備上并且卸載了地圖應用程式(推測很少見),它會提示他們恢復地圖應用程式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/480348.html
上一篇:創建自定義滑塊
