Hardik
Hardik

Reputation: 21

Remote notification in xamarin.forms

I created finishlaunching() in AppDelegate.cs and RegisteredForRemoteNotifications() but when I try to get device token it does not call RegisteredForRemoteNotifications() and I created push notification using Urban airship and for Test, I need device token.

How can I get Device Token using RemoteNotification ?

AppDelegate.cs contains below code...

using System;
using System.Reflection;
using Test.Interfaces;
using Test.Interfaces.UAIntegration;
using Test.iOS.UAIntegration;
using TestWebAPI.Client;
using TestWebAPI.Models;
using TestWebAPI.Models.ResponseModels;
using CoreGraphics;
using Facebook.CoreKit;
using Foundation;
using GalaSoft.MvvmLight.Ioc;
using HockeyApp.iOS;
using UIKit;
using UrbanAirship;
using Xamarin.Forms.Platform.iOS;
using FacebookProfile = Facebook.CoreKit.Profile;
using FacebookSettings = Facebook.CoreKit.Settings;

using StoreKit;
using System.Diagnostics;
using Test.Services;

namespace Test.iOS
{
    [Register("AppDelegate")]
    public partial class AppDelegate : FormsApplicationDelegate
    {
        private NetworkManager _networkManager;

        public override bool FinishedLaunching(UIApplication uiApplication, NSDictionary launchOptions)
        {
            UAirship.TakeOff();

            RegisterServices();
            //SetupHockeyAppSDK ();
            SetupFacebookSDK();
            FFImageLoading.Forms.Touch.CachedImageRenderer.Init();
            var dummy = new FFImageLoading.Forms.Touch.CachedImageRenderer();

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

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

            _networkManager = new NetworkManager();

            //HACK
            OverrideDefaultListViewCustomActionsColors();
            UAirship.Push().UserPushNotificationsEnabled = true;
            //string chanelid = UAirship.Push().ChannelID;
            //string token = UAirship.Push().DeviceToken;

            new PhotoAccessChecker();

            //return ApplicationDelegate.SharedInstance.FinishedLaunching(uiApplication, launchOptions);
            return base.FinishedLaunching(uiApplication, launchOptions);
        }

        public override bool OpenUrl(UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
        {
            return ApplicationDelegate.SharedInstance.OpenUrl(application, url, sourceApplication, annotation);
        }

        void SetupFacebookSDK()
        {
            FacebookProfile.EnableUpdatesOnAccessTokenChange(true);
            FacebookSettings.AppID = "983921778349321";
            FacebookSettings.DisplayName = "Test – Test";
        }

        //void SetupHockeyAppSDK ()
        //{
        //    BITHockeyManager.SharedHockeyManager.Configure ("88bf22ad3da341eab128b28cf316148f");
        //    BITHockeyManager.SharedHockeyManager.StartManager ();
        //    BITHockeyManager.SharedHockeyManager.Authenticator.AuthenticateInstallation ();
        //    BITHockeyManager.SharedHockeyManager.UpdateManager.AlwaysShowUpdateReminder = false;
        //}

        void RegisterServices()
        {
            SimpleIoc.Default.Register<IStatisticsCollector, FirebaseStatisticsCollector>(true);

            SimpleIoc.Default.Register<HttpMessageHandlerFactory>();

            SimpleIoc.Default.Register<ISettingsOpener, SettingsOpener>();
            SimpleIoc.Default.Register<IPhotoAccessChecker, PhotoAccessChecker>();
            SimpleIoc.Default.Register<IImageToStreamConverter, ImageToStreamConverter>();
            SimpleIoc.Default.Register<IAuthenticationApiClient, AuthenticationApiClient>();
            SimpleIoc.Default.Register<IUtilityApiClient, UtilityApiClient>();
            SimpleIoc.Default.Register<IProfileApiClient, ProfileApiClient>();
            SimpleIoc.Default.Register<IPaymentApiClient, PaymentApiClient>();
            SimpleIoc.Default.Register<IInboxApiClient, InboxApiClient>();
            SimpleIoc.Default.Register<IBlogApiClient, BlogApiClient>();

            SimpleIoc.Default.Register<IUserSettings, UserSettings>();
            SimpleIoc.Default.Register<IPreferences, Preferences>();
            SimpleIoc.Default.Register<IEncryptor, Encryptor>();
            SimpleIoc.Default.Register<ITimerFactory, TimerFactory>();

            SimpleIoc.Default.Register<ISuggestionService<Location>, LocationService>();
            SimpleIoc.Default.Register<ISuggestionService<Gender>, GenderService>();
            SimpleIoc.Default.Register<ISuggestionService<Religion>, ReligionService>();
            SimpleIoc.Default.Register<ISuggestionService<Diet>, DietService>();
            SimpleIoc.Default.Register<ISuggestionService<Drink>, DrinkService>();
            SimpleIoc.Default.Register<ISuggestionService<Smoke>, SmokeService>();
            SimpleIoc.Default.Register<ISuggestionService<Occupation>, OccupationService>();
            SimpleIoc.Default.Register<ISuggestionService<Education>, EducationService>();
            SimpleIoc.Default.Register<ISuggestionService<MaritalStatus>, MaritalService>();
            SimpleIoc.Default.Register<ISuggestionService<MemberTag>, TagsService>();
            SimpleIoc.Default.Register<ISuggestionService<HeightFeet>, HeightFeetService>();
            SimpleIoc.Default.Register<ISuggestionService<HeightInches>, HeightInchesService>();
            SimpleIoc.Default.Register<ISuggestionService<BlockReason>, BlockReasonService>();
            SimpleIoc.Default.Register<ISuggestionService<CancellationReason>, CancellationReasonService>();
            SimpleIoc.Default.Register<ISuggestionService<HideProfileReason>, HideProfileReasonService>();
            SimpleIoc.Default.Register<IDialogService, DialogService>();
            SimpleIoc.Default.Register<ICropImageService, CropImageService>();
            SimpleIoc.Default.Register<IFileService, FileService>();

            SimpleIoc.Default.Register<INotificationService, NotificationService>();

            SimpleIoc.Default.Register<IFacebookService, FacebookService>();
            SimpleIoc.Default.Register<IUrbanAirshipService, UrbanAirshipService>();
            SimpleIoc.Default.Register<IInAppService, InAppService>();
            SimpleIoc.Default.Register<SuggestionServices>();
        }

        void OverrideDefaultListViewCustomActionsColors()
        {
            CGRect rect = new CGRect(0, 0, 1, 1);
            CGSize size = rect.Size;
            UIGraphics.BeginImageContext(size);
            CGContext currentContext = UIGraphics.GetCurrentContext();
            currentContext.SetFillColor(Colors.d8Red.ToCGColor());
            currentContext.FillRect(rect);
            var backgroundImage = UIGraphics.GetImageFromCurrentImageContext();
            currentContext.Dispose();

            var contextActionsCellType = Type.GetType("Xamarin.Forms.Platform.iOS.ContextActionsCell, Xamarin.Forms.Platform.iOS, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null");
            // Now change the static field value!
            var backgroundImageField = contextActionsCellType.GetField("DestructiveBackground", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static);
            backgroundImageField.SetValue(null, backgroundImage);


            rect = new CGRect(0, 0, 1, 1);
            size = rect.Size;
            UIGraphics.BeginImageContext(size);
            currentContext = UIGraphics.GetCurrentContext();
            currentContext.SetFillColor(Colors.d8Purple.ToCGColor());
            currentContext.FillRect(rect);
            backgroundImage = UIGraphics.GetImageFromCurrentImageContext();
            currentContext.Dispose();
            backgroundImageField = contextActionsCellType.GetField("NormalBackground", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static);
            backgroundImageField.SetValue(null, backgroundImage);
        }

        public override void WillTerminate(UIApplication application)
        {
            (App.Locator.InApp.TheInAppService as InAppService).WillTerminate();

            base.WillTerminate(application);
        }
    }
}

Upvotes: 0

Views: 207

Answers (0)

Related Questions