You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity Android/iOS应用通过网页链接唤起及社交邀请功能实现咨询

Unity + Photon 社交邀请功能实现方案

一、通过网页链接唤起Unity应用

Android端实现

  • 配置URL Scheme:在Unity的Player Settings中,进入Android > Other Settings > Configuration,在URL Schemes栏添加自定义Scheme(例如mygame),系统会识别该Scheme的链接以唤起应用。
  • 处理唤起逻辑:编写C#脚本获取Intent中的链接参数,解析后调用Photon接口加入对应房间,示例代码:
void Start()
{
    #if UNITY_ANDROID && !UNITY_EDITOR
    var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    var currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
    var intent = currentActivity.Call<AndroidJavaObject>("getIntent");
    var intentClass = new AndroidJavaClass("android.content.Intent");
    
    if (intent.Call<string>("getAction").Equals(intentClass.GetStatic<string>("ACTION_VIEW")))
    {
        var uri = intent.Call<AndroidJavaObject>("getData");
        string roomId = uri.Call<string>("getQueryParameter", "roomId");
        JoinPhotonRoom(roomId);
    }
    #endif
}

void JoinPhotonRoom(string roomId)
{
    if (PhotonNetwork.InLobby)
    {
        PhotonNetwork.JoinRoom(roomId);
    }
    else
    {
        PhotonNetwork.ConnectUsingSettings();
        // 可在OnConnectedToMaster回调中执行JoinRoom
    }
}

iOS端实现

  • 配置URL Scheme:在Unity的Player Settings中,进入iOS > Other Settings > Configuration,添加自定义Scheme(例如mygame)。
  • 处理唤起逻辑:利用Unity的Application.deepLinkActivated事件解析链接参数,示例代码:
void OnEnable()
{
    Application.deepLinkActivated += OnDeepLinkActivated;
}

void OnDisable()
{
    Application.deepLinkActivated -= OnDeepLinkActivated;
}

void OnDeepLinkActivated(string url)
{
    Uri uri = new Uri(url);
    string roomId = uri.Query.Split('=')[1];
    JoinPhotonRoom(roomId);
}

// 复用Android端的JoinPhotonRoom方法

二、生成可唤起应用的邀请链接

  • 链接格式设计:以自定义Scheme开头,携带房间ID等必要参数,示例格式:mygame://join?roomId=abc123&inviter=user456
  • 生成逻辑:获取当前Photon房间ID,拼接成唤起链接,示例代码:
string GenerateInviteLink()
{
    if (PhotonNetwork.CurrentRoom != null)
    {
        string roomId = PhotonNetwork.CurrentRoom.Name;
        string inviterId = PhotonNetwork.LocalPlayer.UserId;
        return $"mygame://join?roomId={roomId}&inviter={inviterId}";
    }
    return string.Empty;
}
  • 分享到WhatsApp/Messenger:通过Application.OpenURL调用系统分享,示例代码:
void ShareInviteLink()
{
    string inviteLink = GenerateInviteLink();
    if (!string.IsNullOrEmpty(inviteLink))
    {
        // 分享到WhatsApp
        string whatsappUrl = $"https://wa.me/?text={Uri.EscapeDataString(inviteLink)}";
        Application.OpenURL(whatsappUrl);
        
        // 分享到Messenger
        string messengerUrl = $"fb-messenger://share?link={Uri.EscapeDataString(inviteLink)}";
        Application.OpenURL(messengerUrl);
    }
}
  • 未安装应用的备选方案:可生成HTTP链接(例如https://mygame.com/join?roomId=abc123),配合后端网页实现:检测用户设备,若已安装应用则唤起,否则引导至应用商店下载。

内容的提问来源于stack exchange,提问作者Super Game Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 04:05:13