unity跳转外部app固定页面

一、判断是否安装了app

之前写了判断是否安装app的文章,并且如果只是需要跳转app,并不需要跳转到某个页面,前面这篇文章就可以实现

https://www.cnblogs.com/qian-qiang/p/15696834.html

二、打开app某个页面

1、android

android是比较麻烦的,因为仅仅只是打开app的话,使用该app的包名就可以打开app了,但是如果要打开某个页面就需要该app的url schemes

看到这里是不是发现,那直接找app的url schemes就可以啦,反正ios打开也是需要url schemes的,那么问题来了

android打开使用的url schemes和ios使用的url schemes是不完全一样的,是的是不一样的,但是某些app确实也是一样的

例如:不同的

facebook,同样要跳转到facebook的公共主页的某个游戏的粉丝页

android url schemes:fb://page/{id}

ios url schemes:fb://profile/{id} 

id为需要跳转页面的页面id,在网站上打开此页面,查看源码,搜索page_id就可以查到页面id

就是这样,如果用同一个url schemes总会有一个会跳到app首页

例如:相同的

相同的我用的是instagram这个app,它的android和ios的url schemes是一样的,都是instagram://user?username=页面名字

其他不多说了,上代码

using (AndroidJavaClass jcPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
            using (AndroidJavaObject joActivity = jcPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
using (AndroidJavaObject joPackageManager = AndroidJavaObj.Call<AndroidJavaObject>("getPackageManager"))
        {
            using (AndroidJavaObject joIntent = joPackageManager.Call<AndroidJavaObject>("getLaunchIntentForPackage", androidPackageName))
            {
                if (null != joIntent)
                {
                    AndroidJavaClass intentClass = new AndroidJavaClass("android.content.Intent");
                    AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent");
                    intentObject.Call<AndroidJavaObject>("setAction", intentClass.GetStatic<string>("ACTION_VIEW"));
                    AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri"); // 对应的安卓调用函数是Uri.parse()
                    AndroidJavaObject uriObject = uriClass.CallStatic<AndroidJavaObject>("parse", androidUrlScemes); // app特有的url scheme在网上都可以找到
                    intentObject.Call<AndroidJavaObject>("setData", uriObject);
                    intentObject.Call<AndroidJavaObject>("setPackage", androidPackageName); // 记得要set package他才知道在哪里运行url sheme,否则url会从默认的浏览器里打开
                    AndroidJavaObj.Call("startActivity", intentObject);
                }
            }
        }

ios就不说啦,直接用unity的api就可以

 

一步一个脚印

 

posted @ 2021-12-29 21:09  搬砖独行者  阅读(725)  评论(0)    收藏  举报