Binary writer not saving game data on iOS builds

Hi all

Im really stuck here as this problem is stopping the iOS release of my game. I am using binary writer to save data such as currency gains and level unlock data. Everything works perfectly in the editor but when i build to iOS, it does not save, along with my high score which uses playerprefs.

I have researched and seen answers for a similar issue with binary formatter but i used binary writer. I have tried to use Environment.SetEnvironmentVariable (“MONO_REFLECTION_SERIALIZER”, “yes”); in an awake function but it has not helped.

Im really desperate for any help. I reiterate, everything works in editor, but not on iOS. See some of my scripts below for encryption and currency saves:-

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;

class Encryption

{

private byte[] IV = { 0x6c, 0x1e, 0x85, 0x5e, 0x97, 0x4a, 0x9e, 0x39, 0x9b, 0x80, 0x33, 0x31, 0x5d, 0x76, 0x6e, 0xc5 };
private byte[] Key = { 0x78, 0x06, 0x2f, 0x16, 0x3a, 0x5f, 0x4d, 0xcc, 0xe4, 0x28, 0xb7, 0x6f, 0x75, 0x1b, 0xd4, 0xb8 };

public void save(string toFile, int currency)
{

	FileStream fileStream = new FileStream(toFile, FileMode.Create);
    RijndaelManaged RMCrypto = new RijndaelManaged();

    CryptoStream CryptStream = new CryptoStream(fileStream, RMCrypto.CreateEncryptor(Key, IV), CryptoStreamMode.Write);
    BinaryWriter writer = new BinaryWriter(CryptStream);

    writer.Write(currency);

    writer.Close();
    CryptStream.Close();
    fileStream.Close();

}

public int load(string fromFile)
{

    if (!File.Exists(fromFile))
        return 0;

    try
    {

        FileStream fileStream = new FileStream(fromFile, FileMode.Open);
        RijndaelManaged RMCrypto = new RijndaelManaged();

        CryptoStream CryptStream = new CryptoStream(fileStream, RMCrypto.CreateDecryptor(Key, IV), CryptoStreamMode.Read);
        BinaryReader reader = new BinaryReader(CryptStream);

        int currency = reader.ReadInt32();

        reader.Close();
        CryptStream.Close();
        fileStream.Close();

        return currency;

    }
    catch(Exception e)
    {

        return -1;

    }

}

}

This is for the currency script

using UnityEngine;
using System.Collections;
using System;

public class Currency : MonoBehaviour
{

public static Currency instance;
public string file = "currency.bin";//The file to save data in

private int currency;
private Encryption encrypter;

void Start()
{
    encrypter = new Encryption();
    instance = this;
    load();

}

public void save()
{

    encrypter.save(file, currency);

}

public void load()
{

    currency = encrypter.load(file);

    if(currency == -1)
    {

        Debug.LogError("Issue loading file");
        currency = 0;

    }

}

public int get()
{

    return currency;

}

public void add(int toAdd)
{

    currency += toAdd;

}

public void remove(int toRemove)
{

    currency -= toRemove;

}

public void addS(int toAdd)
{

    add(toAdd);
    save();

}

public void removeS(int toRemove)
{

    remove(toRemove);
    save();

}

}

// In Awake
Environment.SetEnvironmentVariable(“MONO_REFLECTION_SERIALIZER”, “yes”);