60 lines
1.9 KiB
C#
60 lines
1.9 KiB
C#
#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
|