lib_unity_purchase/Editor/AppleCapabilities.cs

60 lines
1.9 KiB
C#
Raw Normal View History

2024-01-29 18:49:33 +08:00
#if UNITY_TVOS || UNITY_IOS
using System;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using UnityEditor.iOS.Xcode;
using UnityEngine;
namespace UnityEditor.Purchasing
{
class AppleCapabilities : IPostprocessBuildWithReport
{
const string k_StorekitFramework = "StoreKit.framework";
public int callbackOrder => 0;
public void OnPostprocessBuild(BuildReport report)
{
if (report.summary.platform == BuildTarget.tvOS || report.summary.platform == BuildTarget.iOS)
{
OnPostprocessBuild(report.summary.platform, report.summary.outputPath);
}
}
static void OnPostprocessBuild(BuildTarget buildTarget, string path)
{
OnPostprocessBuildForApple(path);
}
static void OnPostprocessBuildForApple(string path)
{
var projPath = PBXProject.GetPBXProjectPath(path);
var proj = new PBXProject();
proj.ReadFromFile(projPath);
AddStoreKitFramework(proj, projPath);
AddInAppPurchasingCapability(projPath, proj);
}
static void AddInAppPurchasingCapability(string projPath, PBXProject proj)
{
var manager = new ProjectCapabilityManager(
projPath,
null,
targetGuid: proj.GetUnityMainTargetGuid()
);
manager.AddInAppPurchase();
manager.WriteToFile();
}
static void AddStoreKitFramework(PBXProject proj, string projPath)
{
foreach (var targetGuid in new[] { proj.GetUnityMainTargetGuid(), proj.GetUnityFrameworkTargetGuid() })
{
proj.AddFrameworkToProject(targetGuid, k_StorekitFramework, false);
System.IO.File.WriteAllText(projPath, proj.WriteToString());
}
}
}
}
#endif