前两天做了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包在安卓手机上安装下来测试一下。大功告成!

相关链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: