前两天做了Unity3D IOS端的交互,今天要做的是安卓端的交互。
废话不多说,这里查了挺多资料的,其中很大一部分都是通过包名打开app,其中很多很多很复杂的代码,看都不想看。于是又接着查资料,终于看到了一篇有用又简单的文章。这里记录一下自己的过程。还是挺简单的。新建一个项目,平台切换成安卓。
打开设置,勾选一个选项,随后会自动生成一个文件。
接着打开文件,修改成如下,主要是配置一下url scheme,可以根据需求自己修改名字。
xmlns:android="http://schemas.android.com/apk/res/android" package="com.unity3d.player" xmlns:tools="http://schemas.android.com/tools"> android:theme="@style/UnityThemeSelector">
接着新建一个脚本,做成单例模式(方便外界调用) ,注册一下深层链接事件,这样从别的应用打开时可以处理一些事情了。
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ProcessDeepLinkMngr : MonoBehaviour
{
public static ProcessDeepLinkMngr Instance { get; private set; }
public string deeplinkURL;
public Text text;
private void Awake()
{
if (Instance == null)
{
Instance = this;
Application.deepLinkActivated += OnDeepLinkActivated;
if (!string.IsNullOrEmpty(Application.absoluteURL))
{
OnDeepLinkActivated(Application.absoluteURL);
}
else
{
deeplinkURL = null;
}
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(gameObject);
}
}
private void OnDeepLinkActivated(string url)
{
deeplinkURL = url;
text.text = deeplinkURL;
}
}
这里只是一个demo,知道怎么通过app唤起App,不做复杂操作,只是单纯输出传递的字符串。
随后把脚本挂载到场景物体上,手动赋值。
然后就大功告成啦,build一下,这是我们的第一个可以被别的应用唤起的apk包。
接着我们创建下一个工程,用来测试我们刚刚那个项目是否有用。进入项目后同样切换成安卓平台,创建场景如下:
然后就是代码的编写。这里需要一个inputfield填入我们要打开的应用以及传递的参数,一个button,执行唤起app传参的事件,代码如下。
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class NewBehaviourScript : MonoBehaviour
{
public InputField input;
public Button button;
private void Start()
{
button.onClick.AddListener(OnBtnDown);
input.text = "unitydl://mylink";//要传递值的话可在后面加上 ?parameter 测试一下就知道了
}
private void OnBtnDown()
{
Application.OpenURL(input.text);
}
}
把代码挂载到场景物体上,手动赋值就能打包啦。将打包后的两个apk包在安卓手机上安装下来测试一下。大功告成!
相关链接
发表评论