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

     

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

  • 相关阅读:
    MySQL全文索引应用简明教程
    web前端的春天 or 噩梦
    [DeviceOne开发]-手势动画示例分享
    [DeviceOne开发]-土地销售项目源码分享
    [DeviceOne开发]-do_LinearLayout组件使用技巧
    2016年我们重新思考移动互联网创业的风险, 微信还是APP?
    APP技术演化的路
    ReactNative&weex&DeviceOne对比
    what's deviceone
    APP开放源码第一弹《纳豆》
  • 原文地址:https://www.cnblogs.com/devin_zhou/p/9675332.html
Copyright © 2011-2022 走看看