「Unity/URLからアプリ起動/iOS」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→Unityアプリ側設定) |
|||
| 行15: | 行15: | ||
{ | { | ||
"appIDs": ["TEAMID.bundleid"], | "appIDs": ["TEAMID.bundleid"], | ||
| − | "paths": [ "/invite*" ] | + | "paths": [ |
| + | "/invite*", | ||
| + | "/invite/*" | ||
| + | ] | ||
} | } | ||
] | ] | ||
2025年12月5日 (金) 06:34時点における版
目次
iOSの場合
独自ドメインで、公開場所に、apple-app-site-associationファイルを用意
例:
ttps://example.com/.well-known/apple-app-site-association
MIME が application/json にする。
apple-app-site-association ファイルの中身
{
"applinks": {
"details": [
{
"appIDs": ["TEAMID.bundleid"],
"paths": [
"/invite*",
"/invite/*"
]
}
]
}
}
appIDsの部分の例
TEAMID:8VA6Uxxxxx bundleid:com.example.app1 appIDs:8VA6Uxxxxx.com.example.app1
Content-Typeをapplication/jsonへ
.well-known/.htaccess を設置
<Files "apple-app-site-association">
ForceType application/json
Header set Content-Type "application/json"
</Files>
確認
$ curl -I ttps://example.com/.well-known/apple-app-site-association HTTP/2 200 server: nginx date: Thu, 04 Dec 2025 18:18:45 GMT content-type: application/json
Unityアプリ側設定
xcodeの設定を自動で追加する。(例:example.com)
Assets/Editor/AddAssociatedDomains.cs
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;
using System.IO;
public class AddAssociatedDomains
{
[PostProcessBuild]
public static void OnPostProcessBuild(BuildTarget target, string path)
{
if (target != BuildTarget.iOS) return;
string projPath = PBXProject.GetPBXProjectPath(path);
PBXProject proj = new PBXProject();
proj.ReadFromFile(projPath);
string targetGuid = proj.GetUnityMainTargetGuid();
// 1. entitlements ファイルのパス
string entitlementsPath = Path.Combine(path, "Unity-iPhone.entitlements");
// 2. entitlements がなければ作る
if (!File.Exists(entitlementsPath))
{
var plist = new PlistDocument();
plist.root.CreateArray("com.apple.developer.associated-domains");
File.WriteAllText(entitlementsPath, plist.WriteToString());
}
// 3. entitlements をプロジェクトに追加
proj.AddFile(entitlementsPath, "Unity-iPhone.entitlements");
proj.AddBuildProperty(targetGuid, "CODE_SIGN_ENTITLEMENTS", "Unity-iPhone.entitlements");
// 4. entitlements に applinks を追加
var ent = new PlistDocument();
ent.ReadFromFile(entitlementsPath);
var array = ent.root["com.apple.developer.associated-domains"].AsArray();
array.values.Clear();
array.AddString("applinks:example.com");
File.WriteAllText(entitlementsPath, ent.WriteToString());
// 5. Capability を追加(ここで entitlementsPath が必要)
proj.AddCapability(targetGuid, PBXCapabilityType.AssociatedDomains, "Unity-iPhone.entitlements", false);
proj.WriteToFile(projPath);
}
}
iOSビルドすれば良い。
xcode確認
例:example.com
ビルド後xcodeのSigning&CapabilitiesのAssociatedDomainsにapplinksに、example.comドメインが、追加されてれば良い。
iPhone実機での動作
iPhoneとかの、safariで、以下を開くと、アプリが起動する。 ttps://example.com/invite
開かない場合は、まだファイルが、読み込めてない場合があるので、30分~2時間ぐらい待ってみる。
