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);
}

 

  1. 在iOS项目中实现
public bool CanOpenClient(string path)
{try{NSUrl url = new NSUrl(path);return UIApplication.SharedApplication.CanOpenUrl(url);}catch{return false;}
}

  1. 通过DependencyService使用,打开App直接用Device.OpenUri方法即可。
bool canOpenUrl = DependencyService.Get<IOpenClientService>().CanOpenClient(url);
if(canOpenUrl) Device.OpenUri(new Uri(url));

 

这样就能满足我们的需求啦!

转载于:https://www.cnblogs.com/devin_zhou/p/9675332.html

Xamarin.Forms 中iOS通过URL Scheme判断应用是否安装相关推荐

  1. Xamarin XAML语言教程Xamarin.Forms中构建进度条

    Xamarin XAML语言教程Xamarin.Forms中构建进度条 ProgressBar被称为进度条,它类似于没有滑块的滑块控件.进度条总是水平放置的.本节将讲解如何使用进度条. 注意:进度条在 ...

  2. Xamarin XAML语言教程Xamarin.Forms中改变活动指示器颜色

    Xamarin XAML语言教程Xamarin.Forms中改变活动指示器颜色 在图12.10~12.12中我们会看到在各个平台下活动指示器的颜色是不一样的.Android的活动指示器默认是深粉色的: ...

  3. Xamarin XAML语言教程Xamarin.Forms中程序状态与进度(一)

    Xamarin XAML语言教程Xamarin.Forms中程序状态与进度(一) 在Xamarin.Forms中,提供了两个控件用来指示程序的状态和进度.他们分别为活动指示器和进度条.其中,活动指示器 ...

  4. Xamarin.Forms中为WebView指定数据来源Source

    Xamarin.Forms中为WebView指定数据来源Source 网页视图WebView用来显示HTML和网页形式内容.使用这种方式,可以借助网页形式进行界面设计,并利于更新和维护.WebView ...

  5. Xamarin.Forms中使用LiteDB分页

    Xamarin.Forms中使用LiteDB分页 在移动应用的开发中,为力提高用户体验,一般都会在本地设计一套数据缓存.这里我使用的是LiteDB来缓存数据. LiteDB是.Net平台的一个开源的N ...

  6. Xamarin.Forms中实现选择本地图片,并进行剪裁。(Android端)

    今天与大家分享在Xamarin.Forms中的如何实现选择本地图片并进行剪裁.实现思路:Xamarin.Forms中定义相应接口,Xamarin.Android中实现该接口,也就是说直接使用Andro ...

  7. Syncfusion教程:在Xamarin.Forms中创建数据输入表单 (3)

    2019独角兽企业重金招聘Python工程师标准>>> 下载Essential Studio for Xamarin最新版本 Essential Studio for Xamarin ...

  8. iOS app url scheme跳转到淘宝商品详情页 唤醒app

    最近涉及的一个业务,在app内的一个广告,点击打开webView,加载的是一个淘宝商品详情页,效果是打开该webView自动跳转至淘宝对应的页面,同时在自己的app仍然加载页面,点击评论等也同样能跳转 ...

  9. iOS 通过URL Scheme跳转到常用的App

    微博开放的接口是最多的(在网上找了个遍) 打开微博: sinaweibo:// 打开微博个人主页: sinaweibo://userinfo?uid=xxxxxxxxx 打开具体某一条微博: sina ...

最新文章

  1. 基于 CODING 轻松搞定持续集成
  2. 如何关掉mysql服务呢
  3. 简单实用的人工智能自学路径
  4. Django:ORM基本操作-CRUD,管理器对象objects,----->查询3(单条更新,批量更新)
  5. Android用外部应用打开文件,Android N 以上使用其他应用打开文件 FileProvider
  6. HDOJ 1505 City Game
  7. 蓝桥杯省赛——杨辉三角java
  8. CTF工具-010editor
  9. 虚拟机使用宿主机全局代理
  10. canal 记录 ROWDATA TRANSACTIONBEGIN
  11. 用C++完成华氏温度换摄氏温度
  12. 爱国者p8880e java_口袋里的电脑 爱国者P8880E MID评测
  13. 第十三章 音视频播放——Qt
  14. dw css规则中文翻译,DW-CS5-CSS规则英汉对照表.docx
  15. 【山东事业单位】公共基础知识——重要国际经济组织
  16. 批处理删除注册表分支方法
  17. 联想S41-70拆机换内存条
  18. Redis主从复制、Redis哨兵模式、Redis集群
  19. java从入门到精通二十四(三层架构完成增删改查)
  20. SAP 相关性(OD)语法作用及实例

热门文章

  1. Redis源码剖析(四)过期键的删除策略
  2. 网站服务器挂了导致排名下降,常见关键词排名消失的原因及解决对策
  3. Html百分比设宽偏差大,absolute和relative元素 设置百分比宽高的差异
  4. php弹出第一个数组中,PHP array_search始终返回数组的第一个键
  5. mongodb存入mysql_关于mongodb转存MySQL
  6. android activity 渐变,关于Android的径向渐变高级编程的实现
  7. FreeBSD设置IP地址,网关,DNS
  8. ZwReadFile读TXT文件
  9. 【代码规范】google开源c\c++项目代码规范
  10. 非常值得一看—九种滤波算法C语言实现