Как я могу заставить Unity автоматически добавлять возможность входа в Apple при компиляции для iOS? - PullRequest
0 голосов
/ 19 апреля 2020

Я часами гуглял и пробовал все варианты этого кода, о которых только мог подумать, но не смог автоматически добавить возможность входа в Apple.

Я пытался примеры из этого проекта Github: https://github.com/lupidan/apple-signin-unity/blob/master/AppleAuth/Editor/ProjectCapabilityManagerExtension.cs

Я следил за этими сообщениями: https://forum.unity.com/threads/how-to-put-ios-entitlements-file-in-a-unity-project.442277/

https://answers.unity.com/questions/1224123/enable-push-notification-in-xcode-project-by-defau.html

Файл разрешений без этой возможности выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
</dict>
</plist>

И файл с такой возможностью выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.developer.applesignin</key>
    <array>
        <string>Default</string>
    </array>
</dict>
</plist>

Я пытался угадать с этим кодом:

proj.AddBuildProperty(target, "SystemCapabilities", "{com.apple.developer.applesignin = [Default];}");
proj.AddCapability(target, PBXCapabilityType.SignInWithApple, relativeDestination, true);

Но ни один из них не изменяет файл разрешений или не добавляет возможности.

Я использую ProjectCapabilityManager с этим:

ProjectCapabilityManager capabilityManager = new ProjectCapabilityManager(buildPath, filename, targetName);
capabilityManager.AddSignInWithApple();
capabilityManager.WriteToFile();

Но В консоли появляется сообщение об ошибке, в котором говорится, что доступ к buildPath запрещен (который был предоставлен OnPostProcessBuild ())

Я действительно мог бы использовать некоторую помощь.

1 Ответ

0 голосов
/ 24 апреля 2020

Я на Unity3D 5.6.7f, и это то, что я сделал, чтобы он работал:

  • Загрузите XcodeAPI с официального хранилища битовых корзин Unity

  • Откройте CapabilityManager.cs и добавьте следующий код

    /// <summary>
    /// Add Sign In With Apple capability to the project.
    /// </summary>
    public void AddSignInWithApple()
    {
        var arr = (GetOrCreateEntitlementDoc().root[SignInWithAppleEntitlements.Key] = new PlistElementArray()) as PlistElementArray;
        arr.values.Add(new PlistElementString("Default"));
    }
    

    и этот

    internal class SignInWithAppleEntitlements
    {
        internal static readonly string Key = "com.apple.developer.applesignin";
    }
    

    Теперь вы можете добавить возможность Войти через Apple с сообщением -процесс как это

    ProjectCapabilityManager projCapManager = new ProjectCapabilityManager(projectPath,"YouAppName.entitlements","Unity-iPhone");
    projCapManager.AddSignInWithApple();
    
...