2017年8月アーカイブ

リワード動画を実装したら、
アプリ起動するだけで/Library/Cachesにデータがダウンロードされ
アプリ終了後も残り続ける模様。

ストレージが逼迫したらOSが勝手に削除するディレクトリではあるものの、
iOSの「ストレージを管理」で見たときに「書類とデータ」にカウントされ、
無駄に容量を食うアプリという印象を与えてしまう。

起動時や終了時にApplication.temporaryCachePath内をクリアするのが良さそう。


public static void DeleteCaches()
    {
        string path = Application.temporaryCachePath;
        System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(path);
        foreach (System.IO.FileInfo file in di.GetFiles())
        {
            if (file.IsReadOnly == false) {
                try
                {
                    file.Delete ();
                }
                catch (IOException)
                {
                }
            }
        }
        foreach (System.IO.DirectoryInfo dir in di.GetDirectories())
        {
            //iOSが生成するSnapshotsは消せない模様
            if (dir.Name != "Snapshots") {
                try
                {
                    dir.Delete(true);
                }
                catch (IOException)
                {
                }
            }
        }
    }

追記:
AndroidだとApplication.persistentDataPath内にも色々溜め込んでいる。
自前で作成した初期化やコールバック受け取り用のクラスを
AdfurikunMovieRewardUtilityと同じGameObjectにアタッチしてはいけない。

引数の型が異なるMovieRewardCallbackが2つのクラスにあって
SendMessageで両クラスに通知されるので下記エラーが発生する。

MissingMethodException: The best match for method MovieRewardCallback has some invalid parameter.


Androidで動いてたけどiOSではクラッシュする。
以前実装した時も同じようにハマってMovieRewardCallbackが呼ばれないなぁとか思った記憶がある。

追記: SDK ver.2.10からこの作業は不要になりました。

MovieRewardを実装した際のメモ。

XCode側でSDKを手動設定するのは面倒なので
下記を参考にさせて頂いた。

注意点:
アドフリくんから提供されるzip内の各社frameworkのうち、
下記2つはフォルダが1階層深くなってる。
 Tapjoy.embeddedframework
 VungleSDK.embeddedframework
上記のフォルダを取り除いてAssets/Plugins/iOS直下に入れること。
そうしないと、'Tapjoy/Tapjoy.h' file not found などのエラーが出る。

上記やっても、ADFmyMovieReward.h file not found が出たので
下記のやり方に変更した。

・各社のフォルダはそのままの構成で/Assets/Plugins/iOSに入れる。
 /Assets/Plugins/iOS/AdColony_3.1.1
 /Assets/Plugins/iOS/applovin-ios-sdk-3.4.3
 /Assets/Plugins/iOS/Maio_1.2.8
 /Assets/Plugins/iOS/SmaAD_1.1.3
 /Assets/Plugins/iOS/Tapjoy_11.9.1
 /Assets/Plugins/iOS/unityAds_2.0.4
 /Assets/Plugins/iOS/Vungle_4.1.0

・上記フォルダ内にある「〜.framework」フォルダのみを/Assets直下に移動する。
 /Assets/AdColony.framework
 /Assets/Maio.framework
 /Assets/Tapjoy.framework
 /Assets/UnityAds.framework
 /Assets/VungleSDK.framework

・アドフリくんの.frameworkフォルダも/Assets直下におく。
 /Assets/ADFMovieReward.framework

・ /Assets/Editor/AdfurikunMovieRewardPostProcess.cs の176行目あたりに下記を追記。
proj.AddBuildProperty(target, "FRAMEWORK_SEARCH_PATHS", "$(SRCROOT)/Frameworks");
proj.AddBuildProperty(target, "HEADER_SEARCH_PATHS", "$(SRCROOT)/Libraries/Plugins/iOS");

アーカイブ