public override void OnOSPermissionChanged(OneSignaliOS.OSPermissionStateChanges permissionStateChanges)
            {
                NotificationPermission from = NativeConversion.PermissionStateToXam(permissionStateChanges.From);
                NotificationPermission to   = NativeConversion.PermissionStateToXam(permissionStateChanges.To);

                _instance.NotificationPermissionChanged?.Invoke(to, from);
            }
            public override void OnOSEmailSubscriptionChanged(OneSignaliOS.OSEmailSubscriptionStateChanges stateChanges)
            {
                EmailSubscriptionState from = NativeConversion.EmailSubscriptionStateToXam(stateChanges.From);
                EmailSubscriptionState to   = NativeConversion.EmailSubscriptionStateToXam(stateChanges.To);

                _instance.EmailSubscriptionStateChanged?.Invoke(to, from);
            }
        public OneSignalImplementation()
        {
            if (_instance != null)
            {
                Debug.WriteLine("Additional instance of OneSignalIOS created.");
            }

            OneSignalNative.AddPermissionObserver(new OSPermissionObserver());
            OneSignalNative.AddSubscriptionObserver(new OSSubscriptionObserver());
            OneSignalNative.AddEmailSubscriptionObserver(new OSEmailSubscriptionObserver());
            OneSignalNative.AddSMSSubscriptionObserver(new OSSMSSubscriptionObserver());

            OneSignalNative.SetNotificationWillShowInForegroundHandler(
                delegate(OneSignaliOS.OSNotification nativeNotification, OneSignaliOS.OSNotificationDisplayResponse response) {
                if (_instance.NotificationWillShow == null)
                {
                    response.Invoke(nativeNotification);
                    return;
                }

                Notification notification = NativeConversion.NotificationToXam(nativeNotification);
                Notification resultNotif  = _instance.NotificationWillShow(notification);
                // OneSignal-iOS-SDK doesn't support modifications to notifications,
                //   null is used to prevent showing.
                response.Invoke(resultNotif != null ? nativeNotification : null);
            }
                );

            OneSignalNative.SetNotificationOpenedHandler(new OneSignaliOS.OSNotificationOpenedBlock(
                                                             result => new OSNotificationOpenedHandler().NotificationOpened(result)));

            OneSignalNative.SetInAppMessageClickHandler(new OneSignaliOS.OSInAppMessageClickBlock((OneSignaliOS.OSInAppMessageAction arg0) =>
                                                                                                  new OSInAppMessageClickHandler().InAppMessageClicked(arg0)));

            OneSignalNative.SetInAppMessageLifecycleHandler(new OSInAppMessageLifeCycleHandler());

            _instance = this;
        }
 public override void OnDidDismissInAppMessage(OneSignaliOS.OSInAppMessage message)
 {
     _instance.InAppMessageDidDismiss?.Invoke(NativeConversion.InAppMessageToXam(message));
 }
 public override void OnWillDisplayInAppMessage(OneSignaliOS.OSInAppMessage message)
 {
     _instance.InAppMessageWillDisplay?.Invoke(NativeConversion.InAppMessageToXam(message));
 }
 public void InAppMessageClicked(OneSignaliOS.OSInAppMessageAction inAppMessageAction)
 {
     _instance.InAppMessageTriggeredAction?.Invoke(NativeConversion.InAppMessageActionToXam(inAppMessageAction));
 }
 public void NotificationOpened(OneSignaliOS.OSNotificationOpenedResult notificationOpenedResult)
 {
     _instance.NotificationOpened?.Invoke(NativeConversion.NotificationOpenedResultToXam(notificationOpenedResult));
 }