当应用程序在后台并接收推送通知点击应用程序崩溃时

Posted

技术标签:

【中文标题】当应用程序在后台并接收推送通知点击应用程序崩溃时【英文标题】:When App in Background and receiving push notification tap App goes crash 【发布时间】:2017-07-25 07:34:28 【问题描述】:

我正在使用 Azure 通知中心处理推送通知。

我想从 AppDelegate 启动我的应用程序,其中 Notification 是 Tap。

这里是场景,我如何打开我的应用程序。

AppDelegate.cs 文件

public class AppDelegate : UIApplicationDelegate
    
        // class-level declarations
        private SBNotificationHub Hub  get; set; 

        public bool appIsStarting = false;

        public SlideoutNavigationController Menu  get; private set; 


        public override UIWindow Window
        
            get;
            set;
        

        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        
            if (launchOptions != null)
            
                // check for a remote notification
                if (launchOptions.ContainsKey(UIApplication.LaunchOptionsRemoteNotificationKey))
                

                    NSDictionary remoteNotification = launchOptions[UIApplication.LaunchOptionsRemoteNotificationKey] as NSDictionary;
                    if (remoteNotification != null)
                    
                        Window = new UIWindow(UIScreen.MainScreen.Bounds);
                        Menu = new SlideoutNavigationController();

                        var storyboard = UIStoryboard.FromName("Main", null);
                        var webController = storyboard.InstantiateViewController("DashBoardViewController") as DashBoardViewController;

                        Menu.MainViewController = new MainNavigationController(webController, Menu);
                        Menu.MenuViewController = new MenuNavigationController(new DummyControllerLeft(), Menu)  NavigationBarHidden = false ;

                        Window.RootViewController = Menu;
                        Window.MakeKeyAndVisible();
                    
                
                ReceivedRemoteNotification(application, launchOptions);

            
            else
            

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

            UNUserNotificationCenter.Current.Delegate = new UserNotificationCenterDelegate();

            return true;
        

UserNotificationCenterDelegate.cs 文件

class UserNotificationCenterDelegate : UNUserNotificationCenterDelegate
    

        public SlideoutNavigationController Menu  get; private set; 



        #region Constructors
        public UserNotificationCenterDelegate()
        
        
        #endregion

        #region Override Methods
        public override void WillPresentNotification(UNUserNotificationCenter center, UNNotification notification, Action<UNNotificationPresentationOptions> completionHandler)
        
            // Do something with the notification
            Console.WriteLine("Active Notification: 0", notification);


            // Tell system to display the notification anyway or use
            // `None` to say we have handled the display locally.
            completionHandler(UNNotificationPresentationOptions.Alert);
        

        public override void DidReceiveNotificationResponse(UNUserNotificationCenter center, UNNotificationResponse response, Action completionHandler)
        
            base.DidReceiveNotificationResponse(center, response, completionHandler);
        

        #endregion
    

我已经尝试了我在 google 和 So 和其他网站上找到的所有可能的情况,但没有什么对我有用。

我花了 4 天时间,但没有成功。

我们将不胜感激。

【问题讨论】:

你把日志也放断点了吗....? 你能分享一下你尝试打开时的崩溃日志是什么吗? @GouravJoshi 我正在发布模式下进行测试,所以断点不起作用。 @NitinGohel 我正在发布模式下进行测试,因此不会显示崩溃日志 在删除 didFinish 启动代码后检查是否发现通知不会崩溃以设置新根。所以你需要在 DidReceiveNotificationResponse 或其他通知委托中移动该代码。 【参考方案1】:

您是否检查了设备日志窗口->设备->查看设备日志?必须有崩溃记录。

【讨论】:

使用任何框架,如 Crashlytics、SplunkMint 。它确实有助于在旅途中记录崩溃。 我在发布模式下部署,所以没有可用的选项。 仅供参考,您不想从实时应用用户那里获取崩溃报告吗? 感谢您提供的信息,但Xamarin Profiler 在那里。

以上是关于当应用程序在后台并接收推送通知点击应用程序崩溃时的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序在后台运行时无法处理推送通知,接收推送但未点击横幅或警报

在后台接收推送通知 iOS

MFP 应用程序在应用程序未运行时在推送通知期间点击时崩溃

在接收推送通知时,点击事件应用程序在导航后崩溃

在 Mobilefirst V7.1 上使用 Clevertap 推送通知在启动画面上出现 iOS 应用程序崩溃问题

当应用程序处于后台时,Android 2nd 推送通知有效负载数据未在附加中接收