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
相关产品推荐
相关产品推荐

