当应用程序在后台并接收推送通知点击应用程序崩溃时
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
在那里。以上是关于当应用程序在后台并接收推送通知点击应用程序崩溃时的主要内容,如果未能解决你的问题,请参考以下文章
当应用程序在后台运行时无法处理推送通知,接收推送但未点击横幅或警报