Unity如何判断手机是否安装某APP应用

—————————————————————————————————————————
简单介绍一下如何判断手机里是否安装了某款APP,先配一张图,显得高大上。
这里写图片描述
Android系统手机和iOS系统手机判断方式不同,要分开来做,首先介绍iOS系统,比较简单。
—————————————————————————————————————————
一、iOS判断手机是否安装Line
使用iOS系统提供的canOpenURL函数判断:

BOOL CanOpenLine(){
NSURL *lineURL = [NSURL URLWithString:@"line://"];
if ([[UIApplication sharedApplication] canOpenURL:lineURL])
{
return YES;
}else{
return NO;
}
}

这是OC代码,在unity里面怎么调用呢?
首先在unity中写这个:

[System.Runtime.InteropServices.DllImport("__Internal")]
private static extern bool CanOpenLine();

然后在.mm脚本里面这么做

    extern "C" {
     BOOL CanOpenLine(){

          }
     }

.mm脚本放在工程里这个位置:
unity 路径
介绍完了是否存在Line,那么怎么判断是否存在微信或其他APP呢?
请注意这句:NSURL *lineURL = [NSURL URLWithString:@”line://”];
这里的“line://”叫IOS URL schemes,常用的可以百度搜,如:
QQ mqq:// 微信是 weixin:// 网易新闻 newsapp:// 淘宝 taobao://
对,换成“weixin://”就是判断是否存在微信。对于一些不常用的软件怎么查找url schemes 呢?
找到ipa文件 改成zip解压 在playload文件下找到info.plist 用文本编辑软件打开查schemes 都能找到。

如果你认为到此就完了,你太天真了!在iOS操作系统iOS9以前以上步是没问题的。在iOS9以后需要增加一步。
为应用程序添加白名单:
找到Xcode工程里的“Info.plist”文件,然后打开添加以下代码就没问题了。

<key>LSApplicationQueriesSchemes</key>
    <array>
        <string>line</string>
    </array>

另外附加一个问题,如何查看APP在APP Store的链接?如line:https://itunes.apple.com/jp/app/line/id443904275?mt=8
打开App Store进入应用,右上角的分享按钮(从右往左数第二个),拷贝连接即可^_^
这里写图片描述

—————————————————————————————————————————
二、Android判断是否安装Line
通过遍历所有应用程序的包名,判断是否存在line的包名,在unity里这么写:

    AndroidJavaClass up = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject ca = up.GetStatic<AndroidJavaObject>("currentActivity");
            AndroidJavaObject packageManager = ca.Call<AndroidJavaObject>("getPackageManager");
            AndroidJavaObject appList = packageManager.Call<AndroidJavaObject>("getInstalledPackages",0);
                  int num = appList.Call<int>("size");
                  for(int i = 0; i < num; i++)
                  {
                         AndroidJavaObject appInfo = appList.Call<AndroidJavaObject>("get", i);
                         string packageNew = appInfo.Get<string>("packageName");
                         if(packageNew.CompareTo("jp.naver.line.android") == 0)
                         {
                               return true;
                         }
                  }
                  return false;

然后直接调用即可。

“jp.naver.line.android ”是日本line包名。如何查看其它APP包名呢?
1、百度可以查到大部分常用的包名,小部分查不到的包名使用apktool反编译.apk,到AndroidManifest.xml里找。
2、到Google Play商店该APP页面,以Line为例,https://play.google.com/store/apps/details?id=jp.naver.line.android
URL中的“jp.naver.line.android”便是Package Name了。
这里写图片描述

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值