zoukankan      html  css  js  c++  java
  • Xamarin.Forms 中iOS通过URL Scheme判断应用是否安装

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

     

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

  • 相关阅读:
    解决在火狐中不支持onreadystatechange的方法
    jquery ajax与分页的实现(mvc下)
    通过ChekBox设置EditText内容是否呈现密码显示
    Android自定义dialog
    Android Intent笔记
    启动另外的一个应用程序的Activity(三种方式)(转载)
    Android代码中声明一个layout
    在Linux下创建函数库
    五分钟讲清楚UML
    QT中使用QProcess启用外部程序
  • 原文地址:https://www.cnblogs.com/devin_zhou/p/9675332.html
Copyright © 2011-2022 走看看