/// <summary>
        /// This is a better TakeOff methode for using with MonoTouch
        /// The default one tends to crash your app unexpectedly
        /// </summary>
        /// <param name="applicationToken">You can find your Application Token on the TestFlight site</param>
        public static void TakeOffThreadSafe(String applicationToken)
        {
            IntPtr sigbus  = Marshal.AllocHGlobal(512);
            IntPtr sigsegv = Marshal.AllocHGlobal(512);
            IntPtr sigpipe = Marshal.AllocHGlobal(512);

            // Store Mono SIGSEGV and SIGBUS handlers
            sigaction(Signal.SIGBUS, IntPtr.Zero, sigbus);
            sigaction(Signal.SIGSEGV, IntPtr.Zero, sigsegv);
            sigaction(Signal.SIGPIPE, IntPtr.Zero, sigpipe);

            // Enable crash reporting libraries
            //MonoTouch.TestFlight.TestFlight.SetDeviceIdentifier(UIDevice.CurrentDevice.UniqueIdentifier);
            //MonoTouch.TestFlight.TestFlight.SetDeviceIdentifier(MonoTouch.AdSupport.ASIdentifierManager.SharedManager.AdvertisingIdentifier.ToString());
            TestFlight.TakeOff(applicationToken);

            // Restore Mono SIGSEGV and SIGBUS handlers
            sigaction(Signal.SIGBUS, sigbus, IntPtr.Zero);
            sigaction(Signal.SIGSEGV, sigsegv, IntPtr.Zero);
            sigaction(Signal.SIGPIPE, sigpipe, IntPtr.Zero);

            Marshal.FreeHGlobal(sigbus);
            Marshal.FreeHGlobal(sigsegv);
            Marshal.FreeHGlobal(sigpipe);
        }
 private static void SetOption(NSString option, Int32 newValue)
 {
     TestFlight.SetOptions(new NSDictionary(option, NSNumber.FromInt32(newValue)));
 }
 private static void SetOption(NSString option, Boolean newValue)
 {
     TestFlight.SetOptions(new NSDictionary(option, NSNumber.FromBoolean(newValue)));
 }