iOSでゲーム画面のスクショを撮って保存しようとすると落ちる現象

Unity製ゲームでSNSシェア機能を入れようと思ったらSocial Connectorですね。

ゲーム画面をcaptureした後、Social Connectorを使ってTwitterなんかに投稿できるようにしようと思っていたのですが、いつの頃からかその機能を使おうとするとアプリが落ちる現象が発生していました。

どうやら、これ、iOS11からNSPhotoLibraryAddUsageDescriptionがないと駄目らしいです。

というわけでビルドのポストプロセスでNSPhotoLibraryAddUsageDescriptionを追加するようにしました。

以下のような感じのスクリプトを書いてEditorフォルダに入れておいています。

using System.Xml;
using System.IO;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;

public static class XcodePostProcessBuild
{
    [PostProcessBuild]
    public static void OnPostProcessBuild(BuildTarget target, string path)
    {
        if (target != BuildTarget.iOS)
        {
            return;
        }

        // Add Privacy Description For Adfurikun
        var plistPath = Path.Combine(path, "Info.plist");
        var plist = new PlistDocument();
        plist.ReadFromFile(plistPath);
        plist.root.SetString("NSPhotoLibraryAddUsageDescription", "Allows user to capture a photo or video to upload to their family circle and so on.");
        plist.WriteToFile(plistPath);
    }
}