Exemplo n.º 1
0
        public override void DidReceiveRemoteNotification(UIApplication application
                                                          , NSDictionary userInfo
                                                          , Action <UIBackgroundFetchResult> completionHandler)
        {
            if (App.CurrentUserEnvironment == null ||
                App.CurrentUserEnvironment.User == null ||
                string.IsNullOrEmpty(App.CurrentUserEnvironment.User.Email))
            {
                return;
            }

            if (_oneSignalHandler == null)
            {
                _oneSignalHandler = new OneSignalHandler();
            }

            if (userInfo != null && userInfo.Count > 0)
            {
                if (userInfo.ContainsKey(new NSString("custom")))
                {
                    var result = SeekiosApp.Helper.StringHelper.RemoveWhitespace(userInfo["custom"].ToString());
                    var dic    = ParserHelper.ConvertToDictionaryParser2(result);

                    var notification = new OSNotificationApp();
                    notification.Payload = new OSNotificationPayloadApp();
                    notification.Payload.AdditionalData = new Dictionary <string, object>();
                    notification.Payload.AdditionalData = dic;

                    var handlerReceive = _oneSignalHandler.NotificationReceivedDelegate();
                    handlerReceive.Invoke(notification);
                }
            }
        }
Exemplo n.º 2
0
        private void SetOneSignal()
        {
            var oneSignalHandler = new OneSignalHandler();
            var oneSignal        = new OneSignalIOS();

            oneSignal.StartInit("4dbbcd4b-8108-4711-a923-92ac93cb48b4")
            //.HandleNotificationReceived(oneSignalHandler.NotificationReceivedDelegate())
            //.HandleNotificationOpened(oneSignalHandler.NotificationOpenedDelegate())
            .InFocusDisplaying(OSInFocusDisplayOptionEnum.Notification)
            .Settings(new Dictionary <string, bool> {
                { OneSignalIOS.kOSSettingsKeyAutoPrompt, false }, { OneSignalIOS.kOSSettingsKeyInAppLaunchURL, false }
            })
            .EndInit();

            oneSignal.IdsAvailable((playerID, pushToken) =>
            {
                oneSignal.GetTags(async(result) =>
                {
                    try
                    {
                        //if (result != null && !_isOneSignalRemovedTag)
                        //{
                        //    oneSignal.DeleteTags(result.Keys.ToList());
                        //    _isOneSignalRemovedTag = true;
                        //}
                        await System.Threading.Tasks.Task.Delay(3900);
                        var key   = App.CurrentUserEnvironment.User.IdUser.ToString() + (DataService.UseStaging ? "s" : "p");
                        var value = string.Format("{0}/{1}/{2}"
                                                  , App.CurrentUserEnvironment.User.FirstName
                                                  , App.CurrentUserEnvironment.User.LastName
                                                  , App.CurrentUserEnvironment.User.Email);
                        // TODO : register the PlayerId in DB
                        oneSignal.SendTag(key, value);
                    }
                    catch (Exception)
                    {
                        // TODO : handle popup for this exception ?
                    }
                });
            });

            oneSignal.SetSubscription(true);
            oneSignal.RegisterForPushNotifications();
            oneSignal.SyncHashedEmail(App.CurrentUserEnvironment.User.Email);

            if (SimpleIoc.Default.IsRegistered <IOneSignal>())
            {
                SimpleIoc.Default.Unregister <IOneSignal>();
            }
            SimpleIoc.Default.Register <IOneSignal>(() => oneSignal);
        }