我可以成功为我的应用注册推送通知:
UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(
UIRemoteNotificationType.Alert
| UIRemoteNotificationType.Badge
| UIRemoteNotificationType.Sound);
但每当我执行此操作时,我的 UI 通常会挂起 2-3 秒。即使我按照建议在应用程序生命周期的早期拥有它(例如,甚至WillFinishLaunching
),一旦我的第一个 ViewController 加载,我的 UI 仍然会挂起。
我的第一个想法是在单独的线程中执行注册,但 MonoTouch 阻止了这一点:
// From MonoTouch.UIKit
public virtual void RegisterForRemoteNotificationTypes(UIRemoteNotificationType types)
{
UIApplication.EnsureUIThread();
我的下一个想法是至少弹出一个UIAlertView
框让用户知道发生了什么事,但由于某种原因直到注册后才显示,导致UIAlertView
打开并立即关闭!
modalPopup = new UIAlertView("Working", "The application is loading...", null, null);
modalPopup.Show();
// It doesn't show here!
RegisterForRemoteNotificationTypes();
// It shows here!
modalPopup.DismissWithClickedButtonIndex(0, true);
我怎么能
- 阻止推送通知注册占用我的 UI 线程
- 掩盖UI冻结?