コード例 #1
0
        async partial void RegisterNotificationsClick(UIButton sender)
        {
            if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
            {
                var types      = UIUserNotificationType.Badge | UIUserNotificationType.Sound | UIUserNotificationType.Alert;
                var mySettings = UIUserNotificationSettings.GetSettingsForTypes(types, null);
                UIApplication.SharedApplication.RegisterUserNotificationSettings(mySettings);
            }

            if (client != null && client.IsConnected)
            {
                Output("Creating tile...");

                // remove an old tile
                try {
                    var tiles = await client.TileManager.GetTilesTaskAsync();

                    if (tiles.Any(x => x.TileId.AsString() == tileId.AsString()))
                    {
                        // a tile exists, so remove it
                        await client.TileManager.RemoveTileTaskAsync(tileId);

                        Output("Removed tile!");
                    }
                } catch (BandException ex) {
                    Output("Error: " + ex.Message);
                }

                // create the tile
                NSError operationError;
                var     tileName  = "iOS Sample";
                var     tileIcon  = BandIcon.FromUIImage(UIImage.FromBundle("tile.png"), out operationError);
                var     smallIcon = BandIcon.FromUIImage(UIImage.FromBundle("badge.png"), out operationError);
                var     tile      = BandTile.Create(tileId, tileName, tileIcon, smallIcon, out operationError);
                tile.BadgingEnabled = true;

                // add the tile to the band
                try {
                    Output("Adding tile...");
                    await client.TileManager.AddTileTaskAsync(tile);
                } catch (BandException ex) {
                    Output("Error: " + ex.Message);
                }

                try {
                    Output("Registering notification...");
                    await client.NotificationManager.RegisterNotificationTaskAsync();

                    Output("Completed registration!");

                    Output("Sending notification...");

                    var localNotification = new UILocalNotification();
                    localNotification.FireDate    = NSDate.Now.AddSeconds(20);
                    localNotification.TimeZone    = NSTimeZone.DefaultTimeZone;
                    localNotification.AlertBody   = "Local notification";
                    localNotification.AlertAction = "View Details";
                    localNotification.SoundName   = UILocalNotification.DefaultSoundName;

                    UIApplication.SharedApplication.PresentLocalNotificationNow(localNotification);

                    Output("Notification sent!");
                } catch (BandException ex) {
                    Output("Error: " + ex.Message);
                }
            }
            else
            {
                Output("Band is not connected. Please wait....");
            }
        }
コード例 #2
0
        //
        // This method is invoked when the application has loaded and is ready to run. In this
        // method you should instantiate the window, load the UI into it and then make the window
        // visible.
        //
        // You have 17 seconds to return from this method, or iOS will terminate your application.
        //
        public override bool FinishedLaunching(UIApplication app, NSDictionary launchOptions)
        {
            global::Xamarin.Forms.Forms.Init();

            // define useragent android like
            string userAgent = "Mozilla/5.0 (Linux; Android 5.1.1; Nexus 5 Build/LMY48B; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/43.0.2357.65 Mobile Safari/537.36";

            // set default useragent
            NSDictionary dictionary = NSDictionary.FromObjectAndKey(NSObject.FromObject(userAgent), NSObject.FromObject("UserAgent"));

            NSUserDefaults.StandardUserDefaults.RegisterDefaults(dictionary);

            // On IOS:

            /* var account = AccountStore.Create().FindAccountsForService("Facebook").FirstOrDefault();
             * if (account != null)
             *   App.IsLoggedIn = true;*/

            // Get Shared User Defaults
            var plist = NSUserDefaults.StandardUserDefaults;
            // Get value
            var useHeader = plist.StringForKey("PrefName");

            if (!String.IsNullOrEmpty(useHeader))
            {
                App.IsLoggedIn = true;
            }


            // Register for push notifications.
            var settings = UIUserNotificationSettings.GetSettingsForTypes
                               (UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, new NSSet());

            UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
            UIApplication.SharedApplication.RegisterForRemoteNotifications();

            //

            App.Init((IAuthenticate)this);


            App.ScreenWidth  = (int)UIScreen.MainScreen.Bounds.Width * 4;
            App.ScreenHeight = (int)UIScreen.MainScreen.Bounds.Height * 2;
            App.ScreenDPI    = 600;

            // check for a notification
            if (launchOptions != null)
            {
                // check for a local notification
                if (launchOptions.ContainsKey(UIApplication.LaunchOptionsLocalNotificationKey))
                {
                    var localNotification = launchOptions[UIApplication.LaunchOptionsLocalNotificationKey] as UILocalNotification;
                    if (localNotification != null)
                    {
                        UIAlertController okayAlertController = UIAlertController.Create(localNotification.AlertAction, localNotification.AlertBody, UIAlertControllerStyle.Alert);
                        okayAlertController.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));

                        var window = UIApplication.SharedApplication.KeyWindow;
                        window.RootViewController.PresentViewController(okayAlertController, true, null);

                        // reset our badge
                        UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
                    }
                }
            }

            if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
            {
                // Ask the user for permission to get notifications on iOS 10.0+
                UNUserNotificationCenter.Current.RequestAuthorization(
                    UNAuthorizationOptions.Alert | UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound,
                    (approved, error) => { });

                // Watch for notifications while app is active
                UNUserNotificationCenter.Current.Delegate = new UserNotificationCenterDelegate();
            }
            else if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
            {
                // Ask the user for permission to get notifications on iOS 8.0+
                var settingss = UIUserNotificationSettings.GetSettingsForTypes(
                    UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound,
                    new NSSet());

                UIApplication.SharedApplication.RegisterUserNotificationSettings(settingss);
            }

            LoadApplication(new App());

            WireUpLongRunningTask();



            return(base.FinishedLaunching(app, launchOptions));
        }
コード例 #3
0
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            ServicePointManager.ServerCertificateValidationCallback +=
                (sender, cert, chain, sslPolicyErrors) =>
            {
                System.Diagnostics.Debug.WriteLine(cert.GetSerialNumberString());
                System.Diagnostics.Debug.WriteLine(cert.Issuer);
                System.Diagnostics.Debug.WriteLine(cert.Subject);
                return(true);
            };

            UIApplication.SharedApplication.SetStatusBarStyle(UIStatusBarStyle.LightContent, false);
            UIApplication.SharedApplication.SetStatusBarHidden(false, false);

            UINavigationBar.Appearance.SetTitleTextAttributes(new UITextAttributes()
            {
                Font      = UIFont.FromName("HelveticaNeue-Light", (nfloat)20f),
                TextColor = UIColor.White
            });

            global::Xamarin.Forms.Forms.Init();

            iRate.SharedInstance.DaysUntilPrompt = 10;
            iRate.SharedInstance.UsesUntilPrompt = 20;
            ZXing.Net.Mobile.Forms.iOS.Platform.Init();

            CachedImageRenderer.Init();
            SlideOverKit.iOS.SlideOverKit.Init();
            OxyPlot.Xamarin.Forms.Platform.iOS.PlotViewRenderer.Init();

            LoadApplication(new App(SaveToken));
            CrossPushNotification.Initialize <CrossPushNotificationListener>();

            // Register your app for remote notifications.
            if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
            {
                var authOptions = UNAuthorizationOptions.Alert | UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound;
                UNUserNotificationCenter.Current.RequestAuthorization(authOptions, (granted, error) =>
                {
                    App.AddLog("GC Authorization granted");
                });

                // For iOS 10 display notification (sent via APNS)
                UNUserNotificationCenter.Current.Delegate = this;

                // For iOS 10 data message (sent via FCM)
                Messaging.SharedInstance.RemoteMessageDelegate = this;
            }
            else
            {
                // iOS 9 or before
                var allNotificationTypes = UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound;
                var settings             = UIUserNotificationSettings.GetSettingsForTypes(allNotificationTypes, null);
                UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
            }

            UIApplication.SharedApplication.RegisterForRemoteNotifications();


            App.AddLog("GCM: Setup Firebase");
            Firebase.Core.App.Configure();
            Firebase.InstanceID.InstanceId.Notifications.ObserveTokenRefresh((sender, e) =>
            {
                var refreshedToken = Firebase.InstanceID.InstanceId.SharedInstance.Token;
                tokenUploaded      = false;
                SaveToken();
            });

            return(base.FinishedLaunching(app, options));
        }
コード例 #4
0
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
            {
                // Ask the user for permission to get notifications on iOS 10.0+
                UNUserNotificationCenter.Current.RequestAuthorization(
                    UNAuthorizationOptions.Alert | UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound,
                    (approved, error) => { });

                // Watch for notifications while app is active
                UNUserNotificationCenter.Current.Delegate = new UserNotificationCenterDelegate();
            }
            else if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
            {
                // Ask the user for permission to get notifications on iOS 8.0+
                var settings = UIUserNotificationSettings.GetSettingsForTypes(
                    UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound,
                    new NSSet());

                UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
            }

            global::Xamarin.Forms.Forms.Init();

            LoadApplication(new App());

            return base.FinishedLaunching(app, options);
        }
コード例 #5
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            this.NavigationController.NavigationBar.Translucent = true;
            //Estilos para la barra de navegacion
            this.NavigationController.NavigationBar.TintColor = UIColor.Gray;
            //this.NavigationController.NavigationBar.BarTintColor =  UIColor.Blue;
            this.NavigationController.NavigationBar.Translucent = true;
            //Fin estilos barra navegacion

            GetData();
            DataSource data = new DataSource(jsonObj, this);

            tvDatos.Source = data;
            tvDatos.ReloadData();
            tvDatos.ReloadInputViews();

            //Nuevos beacons

            var settings = UIUserNotificationSettings.GetSettingsForTypes(
                UIUserNotificationType.Alert
                | UIUserNotificationType.Badge
                | UIUserNotificationType.Sound,
                new NSSet());

            UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);

            locationMgr = new CLLocationManager();

            if (locationMgr.RespondsToSelector(new Selector("requestWhenInUseAuthorization")))
            {
                locationMgr.RequestAlwaysAuthorization();
            }

            //primer beacon
            var shopUUID     = new NSUuid(uuid);
            var beaconRegion = new CLBeaconRegion(shopUUID, firstShopId);

            beaconRegion.NotifyEntryStateOnDisplay = true;
            beaconRegion.NotifyOnEntry             = true;
            beaconRegion.NotifyOnExit = true;

            locationMgr.StartMonitoring(beaconRegion);
            locationMgr.StartRangingBeacons(beaconRegion);

            //segundo beacon
            var shop2UUID     = new NSUuid(uuid2);
            var beaconRegion2 = new CLBeaconRegion(shop2UUID, secondShopId);

            beaconRegion2.NotifyEntryStateOnDisplay = true;
            beaconRegion2.NotifyOnEntry             = true;
            beaconRegion2.NotifyOnExit = true;

            locationMgr.StartMonitoring(beaconRegion2);
            locationMgr.StartRangingBeacons(beaconRegion2);



            locationMgr.RegionEntered += (object sender, CLRegionEventArgs e) => {
                Console.WriteLine("RegionEntered");

                switch (e.Region.Identifier)
                {
                case "shop2":
                    UILocalNotification notification = new UILocalNotification()
                    {
                        AlertBody = "Existe una promoción A!!!"
                    };
                    UIApplication.SharedApplication.PresentLocationNotificationNow(notification);
                    break;

                case "shop1":
                    UILocalNotification notification2 = new UILocalNotification()
                    {
                        AlertBody = "Existe una promoción B!!!"
                    };
                    UIApplication.SharedApplication.PresentLocationNotificationNow(notification2);
                    break;
                }

                /*
                 * if (e.Region.Identifier == secondShopId) {
                 *      UILocalNotification notification = new UILocalNotification () { AlertBody = "Existe una promoción A!!!" };
                 *      UIApplication.SharedApplication.PresentLocationNotificationNow (notification);
                 * }
                 * if (e.Region.Identifier == firstShopId) {
                 *      UILocalNotification notification = new UILocalNotification () { AlertBody = "Existe una promoción B!!!" };
                 *      UIApplication.SharedApplication.PresentLocationNotificationNow (notification);
                 * }
                 */
            };

            locationMgr.DidRangeBeacons += (object sender, CLRegionBeaconsRangedEventArgs e) => {
                System.Diagnostics.Debug.WriteLine("Entramos");
                if (e.Beacons.Length > 0)
                {
                    if (e.Region.Identifier == firstShopId)
                    {
                        CLBeacon beacon = e.Beacons [0];
                        switch (beacon.Proximity)
                        {
                        case CLProximity.Immediate:
                            Console.WriteLine("Beacon 1");
                            var CategoryVC = new iBeaconVC();
                            this.NavigationController.PresentViewController(CategoryVC, true, null);
                            break;
                        }
                    }
                    if (e.Region.Identifier == secondShopId)
                    {
                        CLBeacon beacon = e.Beacons [0];
                        switch (beacon.Proximity)
                        {
                        case CLProximity.Immediate:
                            Console.WriteLine("Beacon 2");
                            var Category2VC = new Catego2ViewController();
                            this.NavigationController.PresentViewController(Category2VC, true, null);
                            break;
                        }
                    }
                }
            };



            //locationMgr.StartMonitoring (beaconRegion2);
            //locationMgr.StartRangingBeacons (beaconRegion2);


            //this.NavigationController.PushViewController(CategoryVC, true);
        }
コード例 #6
0
        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            try
            {
                //downloading all wine images
                BlobWrapper.DownloadAllImages();
                // Override point for customization after application launch.
                // If not required for your application you can safely delete this method
                UITabBarController RootTab = (UITabBarController)Window.RootViewController;
                //CurrentUser.Clear();
                CurrentUser.Store("48732", "user Simulator");
                //for direct log in
                //CurrentUser.PutCa	rdNumber("7207589007");
                //Console.WriteLine(DateTime.Now + " App opened");
                UIImage profile = UIImage.FromFile("profile.png");
                profile = ResizeImage(profile, 25, 25);
                _window = Window;
                UIImage info = UIImage.FromFile("Info.png");
                info = ResizeImage(info, 25, 25);
                //Checking the user already logged in or not
                if (CurrentUser.RetreiveUserId() != 0)
                {
                    ManageTabBar(RootTab);
                    LoggingClass.LogInfo("App opened " + CurrentUser.RetreiveUserId(), screen);
                    nav = new UINavigationController(RootTab);
                    //Window.RootViewController = RootTab;
                    AddNavigationButtons(nav);
                    UIBarButtonItem.Appearance.TintColor = UIColor.FromRGB(128, 0, 128);
                    Window.RootViewController            = nav;
                }
                //Checking Guest logged in or not
                else if (CurrentUser.GetGuestId() != "0" && CurrentUser.GetGuestId() != null)
                {
                    CurrentUser.Store("0", "Guest");
                    ManageTabBar(RootTab);
                    //Console.WriteLine(DateTime.Now + " App opened");
                    nav = new UINavigationController(RootTab);
                    //Window.RootViewController = RootTab;
                    AddNavigationButtons(nav);
                    UIBarButtonItem.Appearance.TintColor = UIColor.FromRGB(128, 0, 128);
                    Window.RootViewController            = nav;
                }
                else
                {
                    ManageTabBar(RootTab);
                    var login = new LoginViewController();
                    login.RootTabs = Window.RootViewController;
                    login._window  = Window;
                    nav            = new UINavigationController(login);
                    //nav.NavigationBar.BackgroundColor = UIColor.FromRGB(97, 100, 142);
                    UIBarButtonItem.Appearance.TintColor = UIColor.FromRGB(128, 0, 128);
                    Window.RootViewController            = nav;
                }
            }
            catch (Exception exe)
            {
                LoggingClass.LogError(exe.Message, screen, exe.StackTrace);
            }
            //Notification Settings
            if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
            {
                var pushSettings = UIUserNotificationSettings.GetSettingsForTypes(
                    UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound,
                    new NSSet());

                UIApplication.SharedApplication.RegisterUserNotificationSettings(pushSettings);
                UIApplication.SharedApplication.RegisterForRemoteNotifications();
            }
            else
            {
                UIRemoteNotificationType notificationTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound;
                UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(notificationTypes);
            }
            return(true);
        }
コード例 #7
0
        async public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            try
            {
                if (string.IsNullOrEmpty(sUserAccountNumber))
                {
                    sUserAccountNumber = "0000";
                }

                ImagePersonalQRCode.Image = IosHelper.GetQrCode(sUserAccountNumber, 240, 240, 0);
                lblCustomerId.Text        = sUserAccountNumber;

                lblQRCodeBackground.Layer.CornerRadius  = 10f;
                lblQRCodeBackground.Layer.MasksToBounds = true;

                qrCodePlaceHolderBorder.Layer.CornerRadius  = 10f;
                qrCodePlaceHolderBorder.Layer.MasksToBounds = true;
                qrCodePlaceHolderBorder.Layer.BorderColor   = UIColor.White.CGColor;
                qrCodePlaceHolderBorder.Layer.BorderWidth   = 1f;

                if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
                {
                    var pushSettings = UIUserNotificationSettings.GetSettingsForTypes(
                        UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound,
                        new NSSet());

                    UIApplication.SharedApplication.RegisterUserNotificationSettings(pushSettings);
                    UIApplication.SharedApplication.RegisterForRemoteNotifications();
                }
                else
                {
                    UIRemoteNotificationType notificationTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound;
                    UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(notificationTypes);
                }

                //string sAccessToken = Helpers.Settings.AccessToken;
                //string sUserEmail = Helpers.Settings.UserEmail;

                //if (!string.IsNullOrEmpty(sAccessToken) && !string.IsNullOrEmpty(sUserEmail))
                //{
                //    Joyces.Platform.AppContext.Instance.Platform.CustomerId = sUserEmail;

                //    var getCustomer = await RestAPI.GetCustomer(sUserEmail, sAccessToken);

                //    if (getCustomer != null && getCustomer is Customer)
                //    {
                //        Joyces.Platform.AppContext.Instance.Platform.CustomerList = (Customer)getCustomer;

                //        var resp = await RestAPI.GetOffer(sUserEmail, sAccessToken);

                //        if (resp != null && resp is List<Offer>)
                //            Joyces.Platform.AppContext.Instance.Platform.OfferList = (List<Offer>)resp;
                //        else
                //            Joyces.Platform.AppContext.Instance.Platform.OfferList = null;

                //        resp = await RestAPI.GetNews(sUserEmail, sAccessToken);

                //        if (resp != null && resp is List<Joyces.News>)
                //            Joyces.Platform.AppContext.Instance.Platform.NewsList = (List<Joyces.News>)resp;
                //        else
                //            Joyces.Platform.AppContext.Instance.Platform.NewsList = null;

                //        Joyces.Platform.AppContext.Instance.Platform.MoreList = await RestAPI.GetMore(sAccessToken);
                //    }
                //    else
                //    {
                //        Helpers.Settings.AccessToken = string.Empty;
                //        Helpers.Settings.UserEmail = string.Empty;

                //        var mainController = Storyboard.InstantiateViewController("loginNavigationController");
                //        UIApplication.SharedApplication.KeyWindow.RootViewController = mainController;
                //    }
                //}
                //else
                //{
                //    //Något är JÄÄÄVLIGT FEL, hit ska den absolut aldrig kunna komma!!!

                //    Helpers.Settings.AccessToken = string.Empty;
                //    Helpers.Settings.UserEmail = string.Empty;

                //    var mainController = Storyboard.InstantiateViewController("loginNavigationController");
                //    UIApplication.SharedApplication.KeyWindow.RootViewController = mainController;

                //    return;
                //}

                if (!string.IsNullOrEmpty(Joyces.Helpers.Settings.AccessToken))
                {
                    sendDeviceToken(Joyces.Helpers.Settings.AccessToken);
                }
            }
            catch (Exception ex)
            {
            }
        }
コード例 #8
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

#if !ENABLE_TEST_CLOUD
            var notificationSettings = UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, null);
            UIApplication.SharedApplication.RegisterUserNotificationSettings(notificationSettings);
            UIApplication.SharedApplication.RegisterForRemoteNotifications();
#endif

            ShowHelpIfNecessary(TutorialHelper.Welcome, () =>
            {
                ShowHelpIfNecessary(TutorialHelper.FindFavorites);
            });

            SlideOutMenuController               = Storyboard.InstantiateViewController <MenuViewController> ();
            SlideOutMenuController.View.Frame    = new CGRect(-UIScreen.MainScreen.Bounds.Width, 0, UIScreen.MainScreen.Bounds.Width - 60, UIScreen.MainScreen.Bounds.Height);
            SlideOutMenuController.MenuItemClick = MenuItemClicked;
            View.Add(SlideOutMenuController.View);
            AddChildViewController(SlideOutMenuController);

            homeController = Storyboard.InstantiateViewController <HomeViewController> ();
            AddChildViewController(homeController);
            vwContent.Add(homeController.View);
            homeController.View.AddMatchParentSizeConstraints();
            //MenuItemClicked (5);
            bool touchStartAccepted    = false;
            UIPanGestureRecognizer pan = new UIPanGestureRecognizer((gesture) =>
            {
                if (gesture.State == UIGestureRecognizerState.Began)
                {
                    View.EndEditing(true);
                    var location = gesture.LocationInView(View);
                    if ((location.X < 35 && !IsMenuOpen) || IsMenuOpen)
                    {
                        touchStartAccepted = true;
                    }
                    else
                    {
                        touchStartAccepted = false;
                    }
                }
                else if (gesture.State == UIGestureRecognizerState.Changed)
                {
                    if (touchStartAccepted)
                    {
                        UIView.Animate(.1f, () =>
                        {
                            var f = SlideOutMenuController.View.Frame;
                            f.X   = (nfloat)Math.Min(gesture.LocationInView(View).X - f.Width, 0);
                            SlideOutMenuController.View.Frame = f;
                            vwDarkenView.Alpha = (nfloat)Math.Min(Math.Abs(gesture.LocationInView(View).X) / UIScreen.MainScreen.Bounds.Width, 0.75);
                        });
                    }
                }
                else if (gesture.State == UIGestureRecognizerState.Ended)
                {
                    if (touchStartAccepted)
                    {
                        var velocity = gesture.VelocityInView(View);
                        if (velocity.X < 0)
                        {
                            AnimateMenuClosed();
                        }
                        else
                        {
                            AnimateMenuOpen();
                        }
                    }
                }
            })
            {
                CancelsTouchesInView = false
            };
            pan.ShouldRecognizeSimultaneously = new UIGesturesProbe((gestureRecognizer, otherGestureRecognizer) =>
            {
                if (otherGestureRecognizer is UITapGestureRecognizer)
                {
                    return(false);
                }

                if (otherGestureRecognizer is UIPanGestureRecognizer)
                {
                    var other = otherGestureRecognizer as UIPanGestureRecognizer;
                    if (other.View == SlideOutMenuController.GetMenu())
                    {
                        return(false);
                    }
                }

                return(true);
            });

            View.AddGestureRecognizer(pan);

            vwDarkenView.AddGestureRecognizer(new UITapGestureRecognizer((gesture) =>
            {
                AnimateMenuClosed();
            }));

            var user = CrossSettings.Current.GetValueOrDefaultJson <User>("User");
            InvokeOnMainThread(() =>
            {
                CrossPushNotifications.Current.Register(new string[] { user.Id });
            });

            if (AppDelegate.ClickedNotification != null)
            {
                Navigator.HandleNotificationTap(NavigationController, AppDelegate.ClickedNotification.MetaData, AppDelegate.ClickedNotification.Title, AppDelegate.ClickedNotification.Message);
                AppDelegate.ClickedNotification = null;
            }
        }
コード例 #9
0
        // class-level declarations

        private static void RegisterNotifications()
        {
            var settings = UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Alert | UIUserNotificationType.Sound, new NSSet());

            UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
        }
コード例 #10
0
        void RequestUserAccess()
        {
            UIUserNotificationSettings settings = UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Sound | UIUserNotificationType.Alert | UIUserNotificationType.Badge, null);

            UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
        }
コード例 #11
0
        //
        // This method is invoked when the application has loaded and is ready to run. In this
        // method you should instantiate the window, load the UI into it and then make the window
        // visible.
        //
        // You have 17 seconds to return from this method, or iOS will terminate your application.
        //
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            global::Xamarin.Forms.Forms.Init();
            VideoViewRenderer.Init();
            AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException;
            TaskScheduler.UnobservedTaskException      += TaskSchedulerOnUnobservedTaskException;
            ImageCircleRenderer.Init();
            FloatingActionButtonViewRenderer.Init();
            _secureStorage = DependencyService.Get <ISecureStorage>();
            try
            {
                // check for a notification
                if (options != null)
                {
                    // check for a local notification
                    if (options.ContainsKey(UIApplication.LaunchOptionsLocalNotificationKey))
                    {
                        if (options[UIApplication.LaunchOptionsLocalNotificationKey] is UILocalNotification
                            localNotification)
                        {
                            var action = localNotification.AlertAction;
                            var body   = localNotification.AlertBody;
                            var alert  = new UIAlertView()
                            {
                                Title   = action,
                                Message = body
                            };
                            alert.AddButton("OK");
                            alert.Show();

                            // reset our badge
                            UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
                        }
                    }

                    // check for a remote notification
                    if (options.ContainsKey(UIApplication.LaunchOptionsRemoteNotificationKey))
                    {
                        if (options[UIApplication.LaunchOptionsRemoteNotificationKey] is NSDictionary remoteNotification
                            )
                        {
                            //new UIAlertView(remoteNotification.AlertAction, remoteNotification.AlertBody, null, "OK", null).Show();
                        }
                    }
                }
            }
            catch (System.Exception ex)
            {
                new ExceptionHandler(TAG, ex);
            }

            try
            {
                // REGISTER : REMOTE PUSH NOTIFICATION
                //#if DEBUG
                //            // NO PUSH NOTIFICATION REGISTRATION FOR DEBUGGING MODE
                //#else
                if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
                {
                    var pushSettings = UIUserNotificationSettings.GetSettingsForTypes(
                        UIUserNotificationType.Alert |
                        UIUserNotificationType.Badge |
                        UIUserNotificationType.Sound,
                        new NSSet());

                    UIApplication.SharedApplication.RegisterUserNotificationSettings(pushSettings);

                    // register for remote notifications
                    UIApplication.SharedApplication.RegisterForRemoteNotifications();
                }
                else
                {
                    //==== register for remote notifications and get the device token
                    // set what kind of notification types we want
                    UIRemoteNotificationType notificationTypes =
                        UIRemoteNotificationType.Alert |
                        UIRemoteNotificationType.Badge |
                        UIRemoteNotificationType.Sound;

                    // register for remote notifications
                    UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(notificationTypes);
                }
                //#endif

                // Watch for notifications while the app is active
                UNUserNotificationCenter.Current.Delegate = new UserNotificationCenterDelegate();

                // Get current notification settings
                UNUserNotificationCenter.Current.GetNotificationSettings((settings) =>
                {
                    var alertsAllowed = (settings.AlertSetting == UNNotificationSetting.Enabled);
                });
            }
            catch (System.Exception ex)
            {
                new ExceptionHandler(TAG, ex);
            }

            LoadApplication(new App());
            return(base.FinishedLaunching(app, options));
        }
コード例 #12
0
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            UIApplication.SharedApplication.RegisterForRemoteNotifications();

            global::Xamarin.Forms.Forms.Init();
            CarouselViewRenderer.Init();

            var x = typeof(Behaviors.EventHandlerBehavior);

            //Azure services
            Microsoft.WindowsAzure.MobileServices.CurrentPlatform.Init();

            //Zxing barcode scanning lib
            global::ZXing.Net.Mobile.Forms.iOS.Platform.Init();

            TimeZoneInfo.GetSystemTimeZones();
            var builder = new ContainerBuilder();

            RegisterDeviceSpecificImpl(builder);
            var TEKUtsavApp = new App(builder);

            // Monitor token generation
            InstanceId.Notifications.ObserveTokenRefresh(TokenRefreshNotification); 

            ////Firebase implementation////
                
 // get permission for notification
            if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
            {
                // iOS 10
                var authOptions = UNAuthorizationOptions.Alert | UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound;
                UNUserNotificationCenter.Current.RequestAuthorization(authOptions, (granted, error) =>
                {
                    Console.WriteLine(granted);
                });

                // For iOS 10 display notification (sent via APNS)
                UNUserNotificationCenter.Current.Delegate = this;
            }
            else
            {
                var allNotificationTypes = UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound;
                var settings             = UIUserNotificationSettings.GetSettingsForTypes(allNotificationTypes, null);


                UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
            }

            UIApplication.SharedApplication.RegisterForRemoteNotifications();

            // Firebase component initialize
            Firebase.Core.App.Configure();

            Firebase.InstanceID.InstanceId.Notifications.ObserveTokenRefresh((sender, e) =>
            {
                var newToken = Firebase.InstanceID.InstanceId.SharedInstance.Token;
                // if you want to send notification per user, use this token
                System.Diagnostics.Debug.WriteLine(newToken);

                connectFCM();
            });
            //////
            LoadApplication(TEKUtsavApp);

            CurrentDomain_UnhandledException(App.AppLogger);

            return(base.FinishedLaunching(app, options));
        }
コード例 #13
0
ファイル: AppDelegate.cs プロジェクト: boy12371/Trato
        //resturar paquetes,   actualizar    limpiar compilar   revisar que el infop.list este en 8
        // This method is invoked when the application has loaded and is ready to run. In this
        // method you should instantiate the window, load the UI into it and then make the window
        // visible
        // You have 17 seconds to return from this method, or iOS will terminate your application.
        //
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            global::Xamarin.Forms.Forms.Init();

            ZXing.Net.Mobile.Forms.iOS.Platform.Init();
            //paypal produccion AQrrFs8D-iSCYiAEEmO9ni3CcQ7GjgjPqSBBVhxNTmRKOnLR_Ol_qRcy2Pr4yxhwcQ2BK1BoZbzl0Hka
            //paypal sandbox  AVART2W6j2cnNhmWej6EcQjx_ytsVpl1hmnArzHtVWSsZFRVAWOlZq6y3EjPFM0FHUhG_yrvkftXAAtN
            var config = new PayPalConfiguration(PayPalEnvironment.Production, "AQrrFs8D-iSCYiAEEmO9ni3CcQ7GjgjPqSBBVhxNTmRKOnLR_Ol_qRcy2Pr4yxhwcQ2BK1BoZbzl0Hka")
                         //var config = new PayPalConfiguration(PayPalEnvironment.Sandbox, "AVART2W6j2cnNhmWej6EcQjx_ytsVpl1hmnArzHtVWSsZFRVAWOlZq6y3EjPFM0FHUhG_yrvkftXAAtN")
            {
                //If you want to accept credit cards
                AcceptCreditCards = false,
                //Your business name
                MerchantName = "Tienda",
                //Your privacy policy Url
                MerchantPrivacyPolicyUri = "http://tratoespecial.com/politicas-de-privacidad/",
                //Your user agreement Url
                MerchantUserAgreementUri = "http://tratoespecial.com/terminos-y-condiciones/",
                // OPTIONAL - ShippingAddressOption (Both, None, PayPal, Provided)
                ShippingAddressOption = ShippingAddressOption.Both,
                // OPTIONAL - Language: Default languege for PayPal Plug-In
                Language = "es",
                // OPTIONAL - PhoneCountryCode: Default phone country code for PayPal Plug-In
                PhoneCountryCode = "52",
            };

            CrossPayPalManager.Init(config);
            LoadApplication(new App());



            if (options != null)
            {
                //check for remote notification
                if (options.ContainsKey(UIApplication.LaunchOptionsRemoteNotificationKey))
                {
                    NSDictionary _remoteNotif = options[UIApplication.LaunchOptionsRemoteNotificationKey] as NSDictionary;
                    if (_remoteNotif != null)
                    {
                        // new UIAlertView(_remoteNotif.a)
                    }
                }
            }

            // pedir permiso para enviar notificaciones
            if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
            {
                // iOS 8 or later
                var notifSettings = UIUserNotificationSettings.GetSettingsForTypes(
                    UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, null);

                // For iOS 8 display notification (sent via APNS)
                app.RegisterUserNotificationSettings(notifSettings);
                app.RegisterForRemoteNotifications();

                /*  UNUserNotificationCenter.Current.Delegate = this;
                 * System.Diagnostics.Debug.WriteLine($"antes 11: {app.IsRegisteredForRemoteNotifications.ToString()}");
                 * UIApplication.SharedApplication.RegisterForRemoteNotifications();
                 * System.Diagnostics.Debug.WriteLine($"despues 11: {app.IsRegisteredForRemoteNotifications.ToString()}");*/
            }
            else
            {
                //register for remote notifications and get the device token
                //set what kind of notifiaction type we want
                UIRemoteNotificationType _notifTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge;
                //register for remtote notif
                UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(_notifTypes);

                /*var allNotificationTypes = UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound;
                 * var settings = UIUserNotificationSettings.GetSettingsForTypes(allNotificationTypes, null);
                 * UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
                 * System.Diagnostics.Debug.WriteLine($"antes 9: {app.IsRegisteredForRemoteNotifications.ToString()}");
                 * UIApplication.SharedApplication.RegisterForRemoteNotifications();
                 * System.Diagnostics.Debug.WriteLine($"despues 9: {app.IsRegisteredForRemoteNotifications.ToString()}");*/
            }
            Firebase.Core.App.Configure();

            Firebase.InstanceID.InstanceId.Notifications.ObserveTokenRefresh((sender, e) =>
            {
                var newtoken = Firebase.InstanceID.InstanceId.SharedInstance.Token;
                System.Diagnostics.Debug.WriteLine($"FCM Token observe: {newtoken}");
                App.Fn_SetToken(newtoken);
            });
            //Firebase.InstanceID.InstanceId.TokenRefreshNotification;
            //debugAlert(UIApplication.SharedApplication.IsRegisteredForRemoteNotifications.ToString(),V_Token);
            // Console.WriteLine(" token device " + V_Token);
            //https://github.com/codercampos/FirebaseXF-XamarinLatino/blob/master/src/FirebaseXL/FirebaseXL.iOS/AppDelegate.cs        // blog.xamarians.com/blog/2017/9/18/firebase-cloud-messaging
            return(base.FinishedLaunching(app, options));
        }
コード例 #14
0
        public override bool FinishedLaunching(UIApplication uiApplication, NSDictionary launchOptions)
        {
            // insights should be initialized first to maximize coverage of exception reporting
            InsightsInitialization.Initialize(new iOSInsightsInitializer(UIDevice.CurrentDevice.IdentifierForVendor.AsString()), SensusServiceHelper.XAMARIN_INSIGHTS_APP_KEY);

            #region configure context
            SensusContext.Current = new iOSSensusContext
            {
                Platform = Sensus.Context.Platform.iOS,
                MainThreadSynchronizer = new MainConcurrent(),
                SymmetricEncryption    = new SymmetricEncryption(SensusServiceHelper.ENCRYPTION_KEY)
            };

            // iOS introduced a new notification center in 10.0 based on UNUserNotifications
            if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
            {
                UNUserNotificationCenter.Current.RequestAuthorizationAsync(UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound | UNAuthorizationOptions.Alert);
                UNUserNotificationCenter.Current.RemoveAllDeliveredNotifications();
                UNUserNotificationCenter.Current.RemoveAllPendingNotificationRequests();
                UNUserNotificationCenter.Current.Delegate = new UNUserNotificationDelegate();
                SensusContext.Current.CallbackScheduler   = new UNUserNotificationCallbackScheduler();
                SensusContext.Current.Notifier            = new UNUserNotificationNotifier();
            }
            // use the pre-10.0 approach based on UILocalNotifications
            else
            {
                UIApplication.SharedApplication.RegisterUserNotificationSettings(UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Badge | UIUserNotificationType.Sound | UIUserNotificationType.Alert, new NSSet()));
                SensusContext.Current.CallbackScheduler = new UILocalNotificationCallbackScheduler();
                SensusContext.Current.Notifier          = new UILocalNotificationNotifier();
            }
            #endregion

            SensusServiceHelper.Initialize(() => new iOSSensusServiceHelper());

            // facebook settings
            Settings.AppID       = "873948892650954";
            Settings.DisplayName = "Sensus";

            Forms.Init();
            FormsMaps.Init();
            MapExtendRenderer.Init();
            new SfChartRenderer();
            ZXing.Net.Mobile.Forms.iOS.Platform.Init();

            LoadApplication(new App());

#if UI_TESTING
            Forms.ViewInitialized += (sender, e) =>
            {
                if (!string.IsNullOrWhiteSpace(e.View.StyleId))
                {
                    e.NativeView.AccessibilityIdentifier = e.View.StyleId;
                }
            };

            Calabash.Start();
#endif

            // background authorization will be done implicitly when the location manager is used in probes, but the authorization is
            // done asynchronously so it's likely that the probes will believe that GPS is not enabled/authorized even though the user
            // is about to grant access (if they choose). now, the health test should fix this up by checking for GPS and restarting
            // the probes, but the whole thing will seem strange to the user. instead, prompt the user for background authorization
            // immediately. this is only done one time after the app is installed and started.
            _locationManager.RequestAlwaysAuthorization();

            return(base.FinishedLaunching(uiApplication, launchOptions));
        }
コード例 #15
0
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)

        {
            // Override point for customization after application launch.

            // If not required for your application you can safely delete this method



            //(Window.RootViewController as UINavigationController).PushViewController(new UserInfoViewController(this), true);

            //UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.LightContent;



            global::Xamarin.Forms.Forms.Init();

            Firebase.Core.App.Configure();
            LoadApplication(new App());



            // Register your app for remote notifications.

            if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
            {
                // For iOS 10 display notification (sent via APNS)

                UNUserNotificationCenter.Current.Delegate = this;



                var authOptions = UNAuthorizationOptions.Alert | UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound;

                UNUserNotificationCenter.Current.RequestAuthorization(authOptions, (granted, error) => {
                    Console.WriteLine(granted);
                });
            }
            else
            {
                // iOS 9 or before

                var allNotificationTypes = UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound;

                var settings = UIUserNotificationSettings.GetSettingsForTypes(allNotificationTypes, null);

                UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
            }



            UIApplication.SharedApplication.RegisterForRemoteNotifications();



            Messaging.SharedInstance.Delegate = this;



            // To connect with FCM. FCM manages the connection, closing it

            // when your app goes into the background and reopening it

            // whenever the app is foregrounded.

            Messaging.SharedInstance.ShouldEstablishDirectChannel = true;



            return(base.FinishedLaunching(app, options));
        }
コード例 #16
0
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            XfxControls.Init();
            ButtonCircle.FormsPlugin.iOS.ButtonCircleRenderer.Init();

            UINavigationBar.Appearance.TintColor = Color.White.ToUIColor();

            global::Xamarin.Forms.Forms.Init();

            Firebase.Core.App.Configure();

            KeyboardOverlapRenderer.Init();

            DependencyService.Register <ToastNotification>(); // Register your dependency
            ToastNotification.Init();

            FFImageLoading.Forms.Touch.CachedImageRenderer.Init();

            var ignore = new CircleTransformation();

            //CarouselViewRenderer.Init();

            DependencyService.Register <IGoogleManager, GoogleManager>();
            DependencyService.Register <IFacebookManager, FacebookManager>();

            var googleServiceDictionary = NSDictionary.FromFile("GoogleService-Info.plist");

            SignIn.SharedInstance.ClientID = googleServiceDictionary["CLIENT_ID"].ToString();

            FormsMaps.Init();
            Rg.Plugins.Popup.Popup.Init();

            LoadApplication(new App());

            //var statusBar = UIApplication.SharedApplication.ValueForKey(new NSString("statusBar")) as UIView;
            //if (statusBar.RespondsToSelector(new ObjCRuntime.Selector("setBackgroundColor:")))
            //{
            //    statusBar.BackgroundColor = UIColor.White;
            //    statusBar.TintColor = UIColor.White;
            //}

            ImageCircle.Forms.Plugin.iOS.ImageCircleRenderer.Init();

            //FirebasePushNotificationManager.Initialize(options, new NotificationUserCategory[]
            //{
            //    new NotificationUserCategory("message",new List<NotificationUserAction> {
            //        new NotificationUserAction("Reply","Reply",NotificationActionType.Foreground)
            //    }),
            //    new NotificationUserCategory("request",new List<NotificationUserAction> {
            //        new NotificationUserAction("Accept","Accept"),
            //        new NotificationUserAction("Reject","Reject",NotificationActionType.Destructive)
            //    })

            //});

            // Register your app for remote notifications.
            if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
            {
                // iOS 10 or later
                var authOptions = UNAuthorizationOptions.Alert | UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound;
                UNUserNotificationCenter.Current.RequestAuthorization(authOptions, (granted, error) => {
                    Console.WriteLine(granted);
                });

                // For iOS 10 display notification (sent via APNS)
                UNUserNotificationCenter.Current.Delegate = this;

                // For iOS 10 data message (sent via FCM)

                Messaging.SharedInstance.RemoteMessageDelegate = this;
            }
            else
            {
                // iOS 9 or before
                var allNotificationTypes = UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound;
                var settings             = UIUserNotificationSettings.GetSettingsForTypes(allNotificationTypes, null);
                UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
            }

            UIApplication.SharedApplication.RegisterForRemoteNotifications();

            return(base.FinishedLaunching(app, options));
        }
コード例 #17
0
        public override bool FinishedLaunching(UIApplication uiApplication, NSDictionary launchOptions)
        {
            // insights should be initialized first to maximize coverage of exception reporting
            InsightsInitialization.Initialize(new iOSInsightsInitializer(UIDevice.CurrentDevice.IdentifierForVendor.AsString()), SensusServiceHelper.XAMARIN_INSIGHTS_APP_KEY);

            #region configure context
            SensusContext.Current = new iOSSensusContext
            {
                Platform = Sensus.Context.Platform.iOS,
                MainThreadSynchronizer = new MainConcurrent(),
                Encryption             = new SimpleEncryption(SensusServiceHelper.ENCRYPTION_KEY)
            };

            // iOS introduced a new notification center in 10.0 based on UNUserNotifications
            if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
            {
                UNUserNotificationCenter.Current.RequestAuthorizationAsync(UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound | UNAuthorizationOptions.Alert);
                UNUserNotificationCenter.Current.RemoveAllDeliveredNotifications();
                UNUserNotificationCenter.Current.RemoveAllPendingNotificationRequests();
                UNUserNotificationCenter.Current.Delegate = new UNUserNotificationDelegate();
                SensusContext.Current.CallbackScheduler   = new UNUserNotificationCallbackScheduler();
                SensusContext.Current.Notifier            = new UNUserNotificationNotifier();
            }
            // use the pre-10.0 approach based on UILocalNotifications
            else
            {
                UIApplication.SharedApplication.RegisterUserNotificationSettings(UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Badge | UIUserNotificationType.Sound | UIUserNotificationType.Alert, new NSSet()));
                SensusContext.Current.CallbackScheduler = new UILocalNotificationCallbackScheduler();
                SensusContext.Current.Notifier          = new UILocalNotificationNotifier();
            }
            #endregion

            SensusServiceHelper.Initialize(() => new iOSSensusServiceHelper());

            // facebook settings
            Settings.AppID       = "873948892650954";
            Settings.DisplayName = "Sensus";

            Forms.Init();
            FormsMaps.Init();
            MapExtendRenderer.Init();
            new SfChartRenderer();

            // toasts for iOS
            DependencyService.Register <ToastNotificatorImplementation>();
            ToastNotificatorImplementation.Init();

            LoadApplication(new App());

#if UNIT_TESTING
            Forms.ViewInitialized += (sender, e) =>
            {
                if (!string.IsNullOrWhiteSpace(e.View.StyleId))
                {
                    e.NativeView.AccessibilityIdentifier = e.View.StyleId;
                }
            };

            Calabash.Start();
#endif

            return(base.FinishedLaunching(uiApplication, launchOptions));
        }
コード例 #18
0
        async partial void LoginClick(UIButton sender)
        {
            if (LoginButton.Title(UIControlState.Normal) == "Logout")
            {
                NSUserDefaults.StandardUserDefaults.RemoveObject("CrmUserId");
                LoginButton.SetTitle("Login To CRM", UIControlState.Normal);
                Output("Cleared CRM user id");
                return;
            }

            if (string.IsNullOrEmpty(CrmUrl.Text) || string.IsNullOrEmpty(CrmUsername.Text) ||
                string.IsNullOrEmpty(CrmPassword.Text))
            {
                return;
            }

            string url = CrmUrl.Text;

            if (!url.EndsWith("/"))
            {
                url += "/";
            }

            CrmAuthenticationHeader authHeader = null;
            CrmAuth auth = new CrmAuth();

            authHeader = url.Contains("dynamics.com") ?
                         auth.GetHeaderOnline(CrmUsername.Text, CrmPassword.Text, url) :
                         auth.GetHeaderOnPremise(CrmUsername.Text, CrmPassword.Text, url);

            if (authHeader == null)
            {
                Output("Unable to connect to CRM");
                return;
            }

            string userid = CrmWhoAmI(authHeader, url);

            if (string.IsNullOrEmpty(userid))
            {
                Output("Unable to retrieve user info from CRM");
                return;
            }

            //Save the userid
            NSUserDefaults.StandardUserDefaults.SetString(userid, "CrmUserId");

            //Register for notifications
            //Moved from AppDelegate.cs - FinishedLaunching
            var settings = UIUserNotificationSettings.GetSettingsForTypes(
                UIUserNotificationType.Alert
                | UIUserNotificationType.Badge
                | UIUserNotificationType.Sound,
                new NSSet());

            UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
            UIApplication.SharedApplication.RegisterForRemoteNotifications();

            LoginButton.SetTitle("Logout", UIControlState.Normal);
            Output("Retrieved CRM user id");
        }
コード例 #19
0
ファイル: AppDelegate.cs プロジェクト: JamChan/iOSTips
        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            // Override point for customization after application launch.
            // If not required for your application you can safely delete this method

            // Code to start the Xamarin Test Cloud Agent
                        #if ENABLE_TEST_CLOUD
            Xamarin.Calabash.Start();
                        #endif

            // 需要使用者授權,才能發出 Notification
            if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
            {
                var notificationSettings =
                    UIUserNotificationSettings.GetSettingsForTypes(
                        UIUserNotificationType.Alert |
                        UIUserNotificationType.Badge |
                        UIUserNotificationType.Sound, null);

                application.RegisterUserNotificationSettings(notificationSettings);

                UIApplication.SharedApplication.RegisterForRemoteNotifications();
            }



            if (launchOptions != null)
            {
                // 如果是因為 Local Notification 啟動 App
                if (launchOptions.ContainsKey(UIApplication.LaunchOptionsLocalNotificationKey))
                {
                    var localNotification = launchOptions[UIApplication.LaunchOptionsLocalNotificationKey] as UILocalNotification;
                    if (localNotification != null)
                    {
                        //
                        Debug.WriteLine("Start with Local Notification");

                        UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
                    }
                }

                if (launchOptions.ContainsKey(UIApplication.LaunchOptionsRemoteNotificationKey))
                {
                    NSDictionary remoteNotification = launchOptions[UIApplication.LaunchOptionsRemoteNotificationKey] as NSDictionary;
                    if (remoteNotification != null)
                    {
                    }

                    UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
                }
            }

            //
            NSError configureError;
            Context.SharedInstance.Configure(out configureError);
            if (configureError != null)
            {
                Console.WriteLine("Error configuring the Google context: {0}", configureError);
                SignIn.SharedInstance.ClientID = clientId;
            }

            return(true);
        }
コード例 #20
0
        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            // Registration of the navigation
            var navigation = new SeekiosApp.Services.NavigationService();

            navigation.Initialize((UINavigationController)Window.RootViewController);
            navigation.Configure(App.LOGIN_PAGE, "LoginView");
            navigation.Configure(App.NEED_UPDATE_PAGE, "NeedUpdateView");
            navigation.Configure(App.LIST_SEEKIOS_PAGE, "ListSeekiosView");
            navigation.Configure(App.DETAIL_SEEKIOS_PAGE, "DetailSeekiosView");
            navigation.Configure(App.MAP_PAGE, "MapView");
            navigation.Configure(App.MAP_HISTORIC_PAGE, "MapHistoricView");
            navigation.Configure(App.MODE_ZONE_PAGE, "ModeZoneFirstView");
            navigation.Configure(App.MODE_ZONE_2_PAGE, "ModeZoneThirdView");
            navigation.Configure(App.MODE_ZONE_3_PAGE, "ModeZoneSecondView");
            navigation.Configure(App.MODE_DONT_MOVE_PAGE, "ModeDontMoveFirstView");
            navigation.Configure(App.MODE_DONT_MOVE_2_PAGE, "ModeDontMoveSecondView");
            navigation.Configure(App.MODE_TRACKING_PAGE, "ModeTrackingView");
            navigation.Configure(App.ALERT_PAGE, "AlertView");
            navigation.Configure(App.ALERT_SOS_PAGE, "AlertSOSView");
            navigation.Configure(App.PARAMETER_PAGE, "ParameterUserView");
            navigation.Configure(App.ABOUT_PAGE, "AboutView");
            navigation.Configure(App.ADD_SEEKIOS_PAGE, "AddSeekiosView");
            navigation.Configure(App.MAP_ALL_SEEKIOS_PAGE, "MapAllSeekiosView");
            navigation.Configure(App.RELOAD_CREDIT_PAGE, "RechargeCreditsView");
            navigation.Configure(App.TRANSACTION_HISTORIC_PAGE, "TransactionHistoricView");
            navigation.Configure(App.LIST_TUTORIAL_PAGE, "ListTutorialView");
            navigation.Configure(App.TUTORIAL_BACKGROUND_FIRST_LAUNCH_PAGE, "TutorialBackgroundView");
            navigation.Configure(App.TUTORIAL_POWERSAVING_PAGE, "TutorialPowerSavingView");
            navigation.Configure(App.TUTORIAL_CREDITCOST_PAGE, "TutorialCreditCostView");
            navigation.Configure(App.TUTORIAL_SEEKIOS_LED_PAGE, "TutorialSeekiosLedView");

            // Registration of the others services
            SimpleIoc.Default.Reset();
            //ServiceLocator.SetLocatorProvider(new ServiceLocatorProvider());
            ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
            SimpleIoc.Default.Register <INavigationService>(() => navigation);
            SimpleIoc.Default.Register <ISaveDataService, SaveDataService>();
            SimpleIoc.Default.Register <Interfaces.IDialogService, Seekios.iOS.Services.DialogService>();
            SimpleIoc.Default.Register <IDispatchOnUIThread, DispatchService>();
            SimpleIoc.Default.Register <IMapControlManager, ControlManager.MapControlManager>();
            SimpleIoc.Default.Register <ITimer, Services.Timer>();
            SimpleIoc.Default.Register <ILocalNotificationService, LocalNotificationService>();
            ViewModel.ViewModelLocator.Initialize();

            // MVVM Light's DispatcherHelper for cross-thread handling.
            DispatcherHelper.Initialize(application);

            // Setup the application version
            App.Locator.Login.VersionApplication = NSBundle.MainBundle.InfoDictionary["CFBundleVersion"].ToString();

            // Initialize HockeyApp
            var hockeyApp = BITHockeyManager.SharedHockeyManager;

            hockeyApp.Configure("ba744679c8894526b78271606dbae95e", new HockeyAppCrashDelegate());
            hockeyApp.DisableMetricsManager           = true;
            hockeyApp.CrashManager.CrashManagerStatus = BITCrashManagerStatus.AutoSend;
            hockeyApp.StartManager();

            // Set up the style of all the navigation bars in your application
            UINavigationBar.Appearance.BarTintColor = UIColor.FromRGB(98, 218, 115);
            UINavigationBar.Appearance.TintColor    = UIColor.White;
            UIApplication.SharedApplication.SetStatusBarStyle(UIStatusBarStyle.LightContent, false);

            // Subscribe to notification
            if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
            {
                var pushSettings = UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, new NSSet());
                UIApplication.SharedApplication.RegisterUserNotificationSettings(pushSettings);
                UIApplication.SharedApplication.RegisterForRemoteNotifications();
            }
            else
            {
                UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound);
            }

            // Set up in app purchases
            InitializeInAppPurchases();
            var controller = new PackView();

            controller.AttachToPurchaseManager(null, PurchaseManager);

            return(true);
        }
コード例 #21
0
        /// <summary>
        /// Finisheds the launching.
        /// </summary>
        /// <returns><c>true</c>, if launching was finisheded, <c>false</c> otherwise.</returns>
        /// <param name="application">Application.</param>
        /// <param name="launchOptions">Launch options.</param>
        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            // Monitor token generation
            InstanceId.Notifications.ObserveTokenRefresh(TokenRefreshNotification);

            // Register your app for remote notifications.
            if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
            {
                // iOS 10 or later
                var authOptions = UNAuthorizationOptions.Alert | UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound;
                UNUserNotificationCenter.Current.RequestAuthorization(authOptions, (granted, error) =>
                {
                    Console.WriteLine(granted);
                });

                // For iOS 10 display notification (sent via APNS)
                UNUserNotificationCenter.Current.Delegate = this;

                // For iOS 10 data message (sent via FCM)
                Messaging.SharedInstance.RemoteMessageDelegate = this;
            }
            else
            {
                // iOS 9 or before
                var allNotificationTypes = UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound;
                var settings             = UIUserNotificationSettings.GetSettingsForTypes(allNotificationTypes, null);
                UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
            }

            UIApplication.SharedApplication.RegisterForRemoteNotifications();

            App.Configure();

            // database initialisation
            Database.DefaultInstance.PersistenceEnabled = true;
            RootNode = Database.DefaultInstance.GetRootReference();

            //#if ENABLE_TEST_CLOUD
            //Xamarin.Calabash.Start();
            //#endif

            //MobileCenter.Start("34d7d8ca-c1f9-4099-b41c-da723fb37bf6",
            //typeof(Analytics), typeof(Crashes));

            // hockey app
            //var manager = BITHockeyManager.SharedHockeyManager;
            //manager.Configure("com.flusharcade.ReactiveUIAroundMe");
            //manager.StartManager();
            //manager.Authenticator.AuthenticateInstallation(); // This line is obsolete in crash only builds

            RxApp.SuspensionHost.SetupDefaultSuspendResume();

            _suspendHelper = new AutoSuspendHelper(this);
            _suspendHelper.FinishedLaunching(application, launchOptions);

            UIApplication.SharedApplication.SetStatusBarStyle(UIStatusBarStyle.LightContent, false);

            var bootstrapper = RxApp.SuspensionHost.GetAppState <AppBootstrapper>();

            _window = new UIWindow(UIScreen.MainScreen.Bounds);
            //_window.RootViewController = new SplitViewController(bootstrapper.CreateFlyoutMenu(),
            //                                                     bootstrapper.CreateRouteHost());

            _window.RootViewController = bootstrapper.CreateRouteHost();
            _window.MakeKeyAndVisible();

            return(true);
        }
        public static async Task Initialize(NSDictionary options, bool autoRegistration = true)
        {
            CrossFirebasePushNotification.Current.NotificationHandler = CrossFirebasePushNotification.Current.NotificationHandler ?? new DefaultPushNotificationHandler();

            TaskCompletionSource <bool> permisionTask = new TaskCompletionSource <bool>();

            // Register your app for remote notifications.
            if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
            {
                // iOS 10 or later
                var authOptions = UNAuthorizationOptions.Alert | UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound;
                UNUserNotificationCenter.Current.RequestAuthorization(authOptions, (granted, error) =>
                {
                    if (error != null)
                    {
                        _onNotificationError?.Invoke(CrossFirebasePushNotification.Current, new FirebasePushNotificationErrorEventArgs(error.Description));
                    }
                    else
                    {
                        System.Diagnostics.Debug.WriteLine(granted);
                    }

                    permisionTask.SetResult(granted);
                });

                // For iOS 10 display notification (sent via APNS)
                UNUserNotificationCenter.Current.Delegate = CrossFirebasePushNotification.Current as IUNUserNotificationCenterDelegate;

                // For iOS 10 data message (sent via FCM)
                Messaging.SharedInstance.RemoteMessageDelegate = CrossFirebasePushNotification.Current as IMessagingDelegate;
            }
            else
            {
                // iOS 9 or before
                var allNotificationTypes = UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound;
                var settings             = UIUserNotificationSettings.GetSettingsForTypes(allNotificationTypes, null);
                UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
                permisionTask.SetResult(true);
            }



            /*if (options != null && options.Keys != null && options.Keys.Count() != 0 && options.ContainsKey(new NSString("UIApplicationLaunchOptionsRemoteNotificationKey")))
             * {
             *  NSDictionary data = options.ObjectForKey(new NSString("UIApplicationLaunchOptionsRemoteNotificationKey")) as NSDictionary;
             *
             *  // CrossFirebasePushNotification.Current.OnNotificationOpened(GetParameters(data));
             *
             * }*/
            var permissonGranted = await permisionTask.Task;

            if (!permissonGranted)
            {
                _onNotificationError?.Invoke(CrossFirebasePushNotification.Current, new FirebasePushNotificationErrorEventArgs("Push notification permission not granted"));
            }


            App.Configure();

            // Monitor token generation
            InstanceId.Notifications.ObserveTokenRefresh((sender, e) =>
            {
                // Note that this callback will be fired everytime a new token is generated, including the first
                // time. So if you need to retrieve the token as soon as it is available this is where that
                // should be done.
                var refreshedToken = InstanceId.SharedInstance.Token;
                if (!string.IsNullOrEmpty(refreshedToken))
                {
                    _onTokenRefresh?.Invoke(CrossFirebasePushNotification.Current, new FirebasePushNotificationTokenEventArgs(refreshedToken));
                    Connect();
                }
            });

            if (autoRegistration)
            {
                UIApplication.SharedApplication.RegisterForRemoteNotifications();
            }
        }
コード例 #23
0
ファイル: AppDelegate.cs プロジェクト: javila80/JobMe
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            Xamarin.Forms.Forms.SetFlags(new string[] { "CarouselView_Experimental", "SwipeView_Experimental", "IndicatorView_Experimental", "MediaElement_Experimental" });
            UINavigationBar.Appearance.TintColor = UIColor.Red;

            UINavigationBar.Appearance.SetTitleTextAttributes(new UITextAttributes()
            {
                TextColor = UIColor.Red
            });


            //Actualizar el token de las notificaciones
            MessagingCenter.Subscribe <JobMe.ViewModels.MainEmployeeViewModel>(this, "DeleteToken", sender =>
            {
                if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
                {
                    UNUserNotificationCenter.Current.RequestAuthorization(UNAuthorizationOptions.Alert | UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound,
                                                                          (granted, error) =>
                    {
                        if (granted)
                        {
                            InvokeOnMainThread(UIApplication.SharedApplication.RegisterForRemoteNotifications);
                        }
                    });
                }
                else if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
                {
                    var pushSettings = UIUserNotificationSettings.GetSettingsForTypes(
                        UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound,
                        new NSSet());

                    UIApplication.SharedApplication.RegisterUserNotificationSettings(pushSettings);
                    UIApplication.SharedApplication.RegisterForRemoteNotifications();
                }
                else
                {
                    UIRemoteNotificationType notificationTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound;
                    UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(notificationTypes);
                }
            });

            MessagingCenter.Subscribe <JobMe.ViewModels.LoginViewModel>(this, "DeleteToken", sender =>
            {
                if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
                {
                    InvokeOnMainThread(UIApplication.SharedApplication.RegisterForRemoteNotifications);
                }
                else if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
                {
                    var pushSettings = UIUserNotificationSettings.GetSettingsForTypes(
                        UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound,
                        new NSSet());

                    UIApplication.SharedApplication.RegisterUserNotificationSettings(pushSettings);
                    UIApplication.SharedApplication.RegisterForRemoteNotifications();
                }
                else
                {
                    UIRemoteNotificationType notificationTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound;
                    UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(notificationTypes);
                }
            });


            if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
            {
                UNUserNotificationCenter.Current.RequestAuthorization(UNAuthorizationOptions.Alert | UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound,
                                                                      (granted, error) =>
                {
                    if (granted)
                    {
                        InvokeOnMainThread(UIApplication.SharedApplication.RegisterForRemoteNotifications);
                    }
                });
            }
            else if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
            {
                var pushSettings = UIUserNotificationSettings.GetSettingsForTypes(
                    UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound,
                    new NSSet());

                UIApplication.SharedApplication.RegisterUserNotificationSettings(pushSettings);
                UIApplication.SharedApplication.RegisterForRemoteNotifications();
            }
            else
            {
                UIRemoteNotificationType notificationTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound;
                UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(notificationTypes);
            }

            global::Xamarin.Forms.Forms.Init();
            SfPopupLayoutRenderer.Init();

            SfPullToRefreshRenderer.Init();
            SfCardLayoutRenderer.Init();
            CarouselViewRenderer.Init();
            SfTabViewRenderer.Init();
            SfRotatorRenderer.Init();
            SfBadgeViewRenderer.Init();
            Syncfusion.XForms.iOS.Chat.SfChatRenderer.Init();
            SfBorderRenderer.Init();
            new SfComboBoxRenderer();
            SfTextInputLayoutRenderer.Init();
            SfMaskedEditRenderer.Init();
            SfPdfDocumentViewRenderer.Init();
            SfRangeSliderRenderer.Init();
            SfPickerRenderer.Init();
            SfListViewRenderer.Init();
            SfEffectsViewRenderer.Init();
            SfAvatarViewRenderer.Init();
            SfMaskedEditRenderer.Init();
            Syncfusion.XForms.iOS.PopupLayout.SfPopupLayoutRenderer.Init();
            //SfRotatorRenderer.Init();
            Syncfusion.XForms.iOS.Buttons.SfSegmentedControlRenderer.Init();

            FFImageLoading.Forms.Platform.CachedImageRenderer.Init();

            FormsVideoPlayer.Init();

            CardsViewRenderer.Preserve();

            App.ScreenWidth  = UIScreen.MainScreen.Bounds.Width;
            App.ScreenHeight = UIScreen.MainScreen.Bounds.Height;

            LoadApplication(new App(false));
            //  LoadApplication(new App(false));

            // Watch for notifications while the app is active
            UNUserNotificationCenter.Current.Delegate = new UserNotificationCenterDelegate();

            return(base.FinishedLaunching(app, options));
        }
コード例 #24
0
        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            // Override point for customization after application launch.
            // If not required for your application you can safely delete this method
            Window = new UIWindow(UIScreen.MainScreen.Bounds);
            Window.BackgroundColor = UIColor.GroupTableViewBackgroundColor;

            #region 极光推送注册
            MsgBoxHelper.Initialize(this);
            if (float.Parse(UIDevice.CurrentDevice.SystemVersion.Split('.')[0]) >= 10.0)
            {
                UNUserNotificationCenter center = UNUserNotificationCenter.Current;
                center.RequestAuthorization((UNAuthorizationOptions.CarPlay | UNAuthorizationOptions.Alert | UNAuthorizationOptions.Sound | UNAuthorizationOptions.Badge), (bool arg1, NSError arg2) =>
                {
                    if (arg1)
                    {
                        Console.WriteLine("ios 10 request notification success");
                    }
                    else
                    {
                        Console.WriteLine("IOS 10 request notification failed");
                    }
                });
            }
            else if (float.Parse(UIDevice.CurrentDevice.SystemVersion.Split('.')[0]) >= 8.0)
            {
                UIUserNotificationSettings notiSettings = UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Badge | UIUserNotificationType.Sound | UIUserNotificationType.Alert, null);
                UIApplication.SharedApplication.RegisterUserNotificationSettings(notiSettings);
            }
            else
            {
                UIRemoteNotificationType myTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Sound | UIRemoteNotificationType.Badge;
                UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(myTypes);
            }

            /*
             * JPUSHService.SetupWithOption(launchOptions, "466439cd8279089311ead639", "Publish channel", false);
             * 将上面代码中的应用程序码换成你在极光服务器上注册的应用码,通过极光服务器发送推送消息,在真机上测试即可收到。
             */
            JPUSHService.SetupWithOption(launchOptions, "466439cd8279089311ead639", "Publish channel", false);
            JPUSHService.SetDebugMode();
            UIApplication.SharedApplication.RegisterForRemoteNotifications();
            //JPUSHService.RegistrationIDCompletionHandler((int arg1, NSString arg2) =>
            //{
            //	if (arg1 == 0)
            //		Console.WriteLine(arg2);
            //});
            if (launchOptions != null)
            {
                NSDictionary remoteNotification = (NSDictionary)(launchOptions.ObjectForKey(UIApplication.LaunchOptionsRemoteNotificationKey));
                if (remoteNotification != null)
                {
                    Console.WriteLine(remoteNotification);
                    this.goToMessageViewControllerWith(remoteNotification);
                }
            }
            #endregion
            Window.RootViewController = new UINavigationController(new ViewController());
            // make the window visible
            Window.MakeKeyAndVisible();

            return(true);
        }
コード例 #25
0
        public void RegisterUserForNotifications()
        {
            var notificationTypes = UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Alert | UIUserNotificationType.Sound, null);

            UIApplication.SharedApplication.RegisterUserNotificationSettings(notificationTypes);
        }
コード例 #26
0
        public override void FinishedLaunching(UIApplication application)
        {
            application.RegisterForRemoteNotifications();


            if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Phone)
            {
                if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
                {
                    //OS is up to date
                    var settings = UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Alert & UIUserNotificationType.Sound, null);
                    UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);

                    UILocalNotification batteryNotification = new UILocalNotification();

                    NSDate.FromObject(UIDevice.BatteryLevelDidChangeNotification);

                    batteryNotification.SoundName = UILocalNotification.DefaultSoundName;

                    UIApplication.SharedApplication.ScheduleLocalNotification(batteryNotification);
                    UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.BlackOpaque;

                    var memoryCache      = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                    var filePathPassword = System.IO.Path.Combine(memoryCache, "password.txt");

                    try
                    {
                        if (filePathPassword == null)
                        {
                            throw new FileNotFoundException();
                        }
                        else
                        {
                            if (String.IsNullOrEmpty(File.ReadAllText(filePathPassword)) == true)
                            {
                                if (this.navMaster.VisibleViewController == this.passwordFirstControl)
                                {
                                    this.Window.RootViewController = this.passwordFirstControl;
                                    this.navMaster.PushViewController(this.passwordFirstControl, true);
                                }
                                else
                                {
                                    this.navMaster.PushViewController(this.passwordFirstControl, true);
                                }
                            }
                            else
                            {
                                if (this.navMaster.ViewControllers.Contains(this.password) == true)
                                {
                                    if (this.navMaster.VisibleViewController != this.password)
                                    {
                                        this.passwordLog.Text = "";
                                        this.passwordLog.ResignFirstResponder();
                                        this.navMaster.PopToViewController(this.password, true);
                                    }
                                    else
                                    {
                                        Console.WriteLine("Controller already exists");
                                    }
                                }
                                else
                                {
                                    this.navMaster.PushViewController(this.password, true);
                                }
                            }
                        }
                    }
                    catch (FileNotFoundException)
                    {
                        if (this.navMaster.VisibleViewController == this.passwordFirstControl)
                        {
                            this.Window.RootViewController = this.password;
                            this.navMaster.PushViewController(this.passwordFirstControl, true);
                        }
                        else
                        {
                            this.navMaster.PushViewController(this.passwordFirstControl, true);
                        }
                    }
                    //welcome the user when they launch the app for the first time on the device
                    //add a key to the OS
                    Console.WriteLine("Presented view controller" + this.navMaster.VisibleViewController);
                }
                else
                {
                    //OS is out of date
                }
            }

            else if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad)
            {
                if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
                {
                    var settings = UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Alert & UIUserNotificationType.Sound, null);
                    UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);

                    //local notifications
                    UILocalNotification batteryNotification = new UILocalNotification();

                    NSDate.FromObject(UIDevice.BatteryLevelDidChangeNotification);

                    batteryNotification.SoundName = UILocalNotification.DefaultSoundName;

                    UIApplication.SharedApplication.ScheduleLocalNotification(batteryNotification);
                    UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.BlackOpaque;

                    var memoryCache      = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                    var filePathPassword = System.IO.Path.Combine(memoryCache, "password.txt");

                    try
                    {
                        if (filePathPassword == null)
                        {
                            throw new FileNotFoundException();
                        }
                        else
                        {
                            if (String.IsNullOrEmpty(File.ReadAllText(filePathPassword)) == true)
                            {
                                if (this.navMaster.VisibleViewController == this.passwordFirstControl)
                                {
                                    this.Window.RootViewController = this.passwordFirstControl;
                                    this.navMaster.PushViewController(this.passwordFirstControl, true);
                                }
                                else
                                {
                                    this.navMaster.PushViewController(this.passwordFirstControl, true);
                                }
                            }
                            else
                            {
                                if (this.navMaster.ViewControllers.Contains(this.password) == true)
                                {
                                    if (this.navMaster.VisibleViewController != this.password)
                                    {
                                        this.passwordLog.Text = "";
                                        this.passwordLog.ResignFirstResponder();
                                        this.navMaster.PopToViewController(this.password, true);
                                    }
                                    else
                                    {
                                        Console.WriteLine("Controller already exists");
                                    }
                                }
                                else
                                {
                                    this.navMaster.PushViewController(this.password, true);
                                }
                            }
                        }
                    }
                    catch (FileNotFoundException)
                    {
                        if (this.navMaster.VisibleViewController == this.passwordFirstControl)
                        {
                            this.Window.RootViewController = this.password;
                            this.navMaster.PushViewController(this.passwordFirstControl, true);
                        }
                        else
                        {
                            this.navMaster.PushViewController(this.passwordFirstControl, true);
                        }
                    }
                    Console.WriteLine("Presented view controller" + this.navMaster.VisibleViewController);
                }
            }
        }
コード例 #27
0
        //
        // This method is invoked when the application has loaded and is ready to run. In this
        // method you should instantiate the window, load the UI into it and then make the window
        // visible.
        //
        // You have 17 seconds to return from this method, or iOS will terminate your application.
        //
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            UINavigationBar.Appearance.BarTintColor = UIColor.FromRGB(33, 150, 243);
            UINavigationBar.Appearance.TintColor    = UIColor.White;

            UINavigationBar.Appearance.SetTitleTextAttributes(new UITextAttributes {
                TextColor = UIColor.White
            });
            ImageCircle.Forms.Plugin.iOS.ImageCircleRenderer.Init();

            //UINavigationBar.Appearance.TitleTextAttributes.ForegroundColor = UIColor.White;

            global::Xamarin.Forms.Forms.Init();
            LoadApplication(new App());

            //CrossBadge.Current.SetBadge(10);


            if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
            {
                var authOptions = UNAuthorizationOptions.Alert | UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound;
                UNUserNotificationCenter.Current.RequestAuthorization(authOptions, (granted, error) =>
                {
                    Console.WriteLine("granted--------------------------------------------------------" + granted);
                });

                // For iOS 10 display notification (sent via APNS)
                UNUserNotificationCenter.Current.Delegate = this;

                // For iOS 10 data message (sent via FCM)
                //Messaging.SharedInstance.RemoteMessageDelegate = this;
            }
            else
            {
                var allNotificationTypes = UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound;
                var settings             = UIUserNotificationSettings.GetSettingsForTypes(allNotificationTypes, null);


                UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
            }

            UIApplication.SharedApplication.RegisterForRemoteNotifications();

            // Firebase component initialize
            Firebase.Core.App.Configure();
            //Firebase.Analytics.App.Configure();

            Firebase.InstanceID.InstanceId.Notifications.ObserveTokenRefresh((sender, e) =>
            {
                var newToken = Firebase.InstanceID.InstanceId.SharedInstance.Token;
                // if you want to send notification per user, use this token
                System.Diagnostics.Debug.WriteLine("newToken-------------------------------------------------------------" + newToken);
                Aliswork.ContentGlobal.registrationId = newToken;

                connectFCM();
            });



            //return base.FinishedLaunching(uiApplication, launchOptions);

            return(base.FinishedLaunching(app, options));
        }
コード例 #28
0
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            global::Xamarin.Forms.Forms.Init();

            // Code for starting up the Xamarin Test Cloud Agent
#if ENABLE_TEST_CLOUD
            Xamarin.Calabash.Start();
#endif

            LoadApplication(new App());


            // Handling Push notification when app is closed if App was opened by Push Notification...
            if (options != null && options.Keys != null && options.Keys.Count() != 0 && options.ContainsKey(new NSString("UIApplicationLaunchOptionsRemoteNotificationKey")))
            {
                NSDictionary UIApplicationLaunchOptionsRemoteNotificationKey = options.ObjectForKey(new NSString("UIApplicationLaunchOptionsRemoteNotificationKey")) as NSDictionary;

                ProcessNotification(UIApplicationLaunchOptionsRemoteNotificationKey, true);
            }

            //added on 1/7/17 by aditmer to see if the device token from APNS has changed (like after an app update)
            if (ApplicationSettings.InstallationID != "")
            {
                //Push notifications registration
                if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
                {
                    var pushSettings = UIUserNotificationSettings.GetSettingsForTypes(
                        UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound,
                        new NSSet());

                    UIApplication.SharedApplication.RegisterUserNotificationSettings(pushSettings);
                    UIApplication.SharedApplication.RegisterForRemoteNotifications();
                }
                else
                {
                    UIRemoteNotificationType notificationTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound;
                    UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(notificationTypes);
                }
            }
            //added on 1/4/17 by aditmer to add 4 (1/6/17) customizable snooze options
            int snoozeTime1 = 1;
            int snoozeTime2 = 2;
            int snoozeTime3 = 3;
            int snoozeTime4 = 4;

            if (ApplicationSettings.AlarmUrgentLowMins1 != 0)
            {
                snoozeTime1 = ApplicationSettings.AlarmUrgentLowMins1;
            }

            if (ApplicationSettings.AlarmUrgentLowMins2 != 0)
            {
                snoozeTime2 = ApplicationSettings.AlarmUrgentLowMins2;
            }

            if (ApplicationSettings.AlarmUrgentMins1 != 0)
            {
                snoozeTime3 = ApplicationSettings.AlarmUrgentMins1;
            }

            if (ApplicationSettings.AlarmUrgentMins2 != 0)
            {
                snoozeTime4 = ApplicationSettings.AlarmUrgentMins2;
            }


            //added on 12/03/16 by aditmer to add custom actions to the notifications (I think this code goes here)
            // Create action
            var actionID = "snooze1";
            var title    = $"Snooze {snoozeTime1} minutes";
            var action   = UNNotificationAction.FromIdentifier(actionID, title, UNNotificationActionOptions.None);

            var actionID2 = "snooze2";
            var title2    = $"Snooze {snoozeTime2} minutes";
            var action2   = UNNotificationAction.FromIdentifier(actionID2, title2, UNNotificationActionOptions.None);

            var actionID3 = "snooze3";
            var title3    = $"Snooze {snoozeTime3} minutes";
            var action3   = UNNotificationAction.FromIdentifier(actionID3, title3, UNNotificationActionOptions.None);

            var actionID4 = "snooze4";
            var title4    = $"Snooze {snoozeTime4} minutes";
            var action4   = UNNotificationAction.FromIdentifier(actionID4, title4, UNNotificationActionOptions.None);

            // Create category
            var categoryID = "event";
            var actions    = new List <UNNotificationAction> {
                action, action2, action3, action4
            };
            var intentIDs       = new string[] { };
            var categoryOptions = new UNNotificationCategoryOptions[] { };

            //added on 1/19/17 by aditmer to remove duplicate snooze options (they can be custom set by each user in their Nightscout settings)
            actions = actions.DistinctBy((arg) => arg.Title).ToList();


            var category = UNNotificationCategory.FromIdentifier(categoryID, actions.ToArray(), intentIDs, UNNotificationCategoryOptions.AllowInCarPlay);

            // Register category
            var categories = new UNNotificationCategory[] { category };
            UNUserNotificationCenter.Current.SetNotificationCategories(new NSSet <UNNotificationCategory>(categories));

            return(base.FinishedLaunching(app, options));
        }
コード例 #29
0
        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            // Override point for customization after application launch.
            // If not required for your application you can safely delete this method
            Window = new UIWindow(UIScreen.MainScreen.Bounds);

            // set our root view controller with the sidebar menu as the apps root view controller
            Window.RootViewController = new RootViewController();

            Window.MakeKeyAndVisible();

            #region Check for a Notification

            // check for a notification
            if (launchOptions != null)
            {
                // check for a local notification
                if (launchOptions.ContainsKey(UIApplication.LaunchOptionsLocalNotificationKey))
                {
                    UILocalNotification localNotification = launchOptions[UIApplication.LaunchOptionsLocalNotificationKey] as UILocalNotification;
                    if (localNotification != null)
                    {
                        new UIAlertView(localNotification.AlertAction, localNotification.AlertBody, null, "OK", null).Show();
                        // reset our badge
                        UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
                    }
                }

                // check for a remote notification
                if (launchOptions.ContainsKey(UIApplication.LaunchOptionsRemoteNotificationKey))
                {
                    NSDictionary remoteNotification = launchOptions[UIApplication.LaunchOptionsRemoteNotificationKey] as NSDictionary;
                    if (remoteNotification != null)
                    {
                        //new UIAlertView(remoteNotification.AlertAction, remoteNotification.AlertBody, null, "OK", null).Show();
                    }
                }
            }

            if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
            {
                var notificationSettings = UIUserNotificationSettings.GetSettingsForTypes(
                    UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, null
                    );

                application.RegisterUserNotificationSettings(notificationSettings);
                application.RegisterForRemoteNotifications();
            }
            else
            {
                //==== register for remote notifications and get the device token
                // set what kind of notification types we want
                UIRemoteNotificationType notificationTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge;
                // register for remote notifications
                UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(notificationTypes);
            }

            var googleServiceDictionary = NSDictionary.FromFile("GoogleService-Info.plist");
            SignIn.SharedInstance.ClientID = googleServiceDictionary["CLIENT_ID"].ToString();
            #endregion

            //Profile.EnableUpdatesOnAccessTokenChange(true);
            //Settings.AppID = appId;
            //Settings.DisplayName = appName;
            //return ApplicationDelegate.SharedInstance.FinishedLaunching(application, launchOptions);
            return(true);
        }
コード例 #30
0
        /// <summary>
        /// This method is invoked when the application has loaded and is ready to run. In this
        /// method you should instantiate the window, load the UI into it and then make the window
        /// visible.
        /// </summary>
        /// <param name="uiApplication"></param>
        /// <param name="launchOptions"></param>
        /// <returns></returns>
        /// <remarks>You have 17 seconds to return from this method, or iOS will terminate your application.</remarks>
        public override bool FinishedLaunching(UIApplication uiApplication, NSDictionary launchOptions)
        {
#if DEBUG
            System.AppDomain.CurrentDomain.UnhandledException += (s, e) =>
            {
                // Set a breakpoint here to catch the unhandled exceptions
                if (e.ExceptionObject is System.Exception ex)
                {
                    System.Console.WriteLine($"UNHANDLEDEXCEPTION: {ex.Message}");
                    System.Console.WriteLine($"UNHANDLEDEXCEPTION: {ex.StackTrace}");
                }
            };
            System.Threading.Tasks.TaskScheduler.UnobservedTaskException += (s, e) =>
            {
                // Set a breakpoint here to catch the unhandled exceptions
                System.Console.WriteLine($"UNHANDLEDEXCEPTION: {e.Exception.Message}");
                System.Console.WriteLine($"UNHANDLEDEXCEPTION: {e.Exception.StackTrace}");
            };
#endif

            SetStatusBar();
            System.Net.ServicePointManager.ServerCertificateValidationCallback += (o, certificate, chain, errors) => true;

            global::Xamarin.Forms.Forms.Init();

            ZXing.Net.Mobile.Forms.iOS.Platform.Init();
            Plugin.InputKit.Platforms.iOS.Config.Init();
            FFImageLoading.Forms.Platform.CachedImageRenderer.Init();
            Google.MobileAds.MobileAds.Configure("ca-app-pub-2210179934394995~1038717065");
            SlideOverKit.iOS.SlideOverKit.Init();
            Plugin.InputKit.Platforms.iOS.Config.Init();
            Rg.Plugins.Popup.Popup.Init();
            OxyPlot.Xamarin.Forms.Platform.iOS.PlotViewRenderer.Init();
            XamEffects.iOS.Effects.Init();
            Shiny.iOSShinyHost.Init(new MyShinyStartup());
            Xamarin.FormsMaps.Init();

            FirebasePushNotificationManager.Initialize(launchOptions, true);

            if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
            {
                // Ask the user for permission to get notifications on iOS 10.0+
                UNUserNotificationCenter.Current.RequestAuthorization(
                    UNAuthorizationOptions.Alert | UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound,
                    (approved, error) => { });

                // Watch for notifications while app is active
                UNUserNotificationCenter.Current.Delegate = new UserNotificationCenterDelegate();
            }
            else if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
            {
                // Ask the user for permission to get notifications on iOS 8.0+
                var settings = UIUserNotificationSettings.GetSettingsForTypes(
                    UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound,
                    new NSSet());

                UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
            }

            application = new App();
            LoadApplication(application);
            return(base.FinishedLaunching(uiApplication, launchOptions));
        }