Как заставить Unity автоматически добавлять возможность входа через Apple при компиляции для iOS?

Я часами гуглил и пробовал все варианты этого кода, которые только мог придумать, но мне не удалось автоматически добавить возможность входа в 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())

Мне действительно не помешала бы помощь.


person Phedg1    schedule 19.04.2020    source источник


Ответы (1)


Я использую 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();
    
person FernandoChen    schedule 24.04.2020
comment
Я следил за этим, но у меня нет возможности SignInWithApple для выпуска и отладки, есть идеи? возможности со сценарием постобработки: возможности i.stack.imgur.com/VjsaN.png включены вручную: i.stack.imgur.com/0t2OA.png - person NCoso; 23.07.2020