Unity3D的安卓端交互——通过URL启动APP并传递参数

        前两天做了Unity3D IOS端的交互,今天要做的是安卓端的交互。

        废话不多说,这里查了挺多资料的,其中很大一部分都是通过包名打开app,其中很多很多很复杂的代码,看都不想看。于是又接着查资料,终于看到了一篇有用又简单的文章。这里记录一下自己的过程。还是挺简单的。新建一个项目,平台切换成安卓。

 打开设置,勾选一个选项,随后会自动生成一个文件。

         接着打开文件,修改成如下,主要是配置一下url scheme,可以根据需求自己修改名字。

<?xml version="1.0" encoding="utf-8"?>
<!-- GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN-->
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.unity3d.player"
    xmlns:tools="http://schemas.android.com/tools">
    <application>
        <activity android:name="com.unity3d.player.UnityPlayerActivity"
                  android:theme="@style/UnityThemeSelector">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
			<intent-filter>
				<action android:name="android.intent.action.VIEW" />
				<category android:name="android.intent.category.DEFAULT" />
				<category android:name="android.intent.category.BROWSABLE" />
				<data android:scheme="unitydl" android:host="mylink" />
			</intent-filter>
        </activity>
    </application>
</manifest>

接着新建一个脚本,做成单例模式(方便外界调用) ,注册一下深层链接事件,这样从别的应用打开时可以处理一些事情了。

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值