Xamarin.Forms 中iOS通過URL Scheme判斷應用是否安裝
阿新 • • 發佈:2018-09-21
原因 turn EDA 策略 erro function 如果 style ace
Xamarin.Forms 中iOS通過URL Scheme判斷應用是否安裝
在移動應用開發中,經常需要判斷一個app是否安裝,iOS中有什麽方式可以判斷app是否安裝呢?
這裏介紹通過Url Scheme來判斷應用是否安裝。
Url Scheme在這裏就不詳講了,可以看文章URL Schemes 使用詳解。
首先我們來看看在原生iOS開發中Objective-C如何編寫判斷代碼:
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"mqq://"]]){ NSLog(@"install--"); }else{ NSLog(@"no---"); }
如果已經安裝了該應用,那麽可以通過如下方法打開它:
[[UIApplication sharedApplication] openURL:url];
註意事項:
Scheme白名單問題(無法判斷手機是否安裝微信等)
-canOpenURL: failed for URL: "weixin://app/wxdaae92a9cfe5d54c/" - error: "This app is not allowed to query for scheme weixin"
原因如下:
iOS 9系統策略更新,此外應用需要在“Info.plist”中將要使用的URL Schemes列為白名單,才可正常檢查其他應用是否安裝。
接下來就是如何轉換成Xamarin中的代碼:
1. 首先定義接口
public interface IOpenClientService { bool CanOpenClient(string path); }
- 在iOS項目中實現
public bool CanOpenClient(string path) { try { NSUrl url = new NSUrl(path); return UIApplication.SharedApplication.CanOpenUrl(url); } catch{ return false; } }
- 通過DependencyService使用,打開App直接用Device.OpenUri方法即可。
bool canOpenUrl = DependencyService.Get<IOpenClientService>().CanOpenClient(url); if(canOpenUrl) Device.OpenUri(new Uri(url));
這樣就能滿足我們的需求啦!
Xamarin.Forms 中iOS通過URL Scheme判斷應用是否安裝