我可以成功注册推送通知的应用程序:
UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(
UIRemoteNotificationType.Alert
| UIRemoteNotificationType.Badge
| UIRemoteNotificationType.Sound);
但每当我执行此操作时,我的UI通常会挂起2-3秒。即使我在应用程序生命周期的早期按照建议(例如,偶数WillFinishLaunching
),我的UI仍会在我的第一个ViewController加载后挂起。
我的第一个想法是在一个单独的线程中执行注册,但是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);
我怎么能
答案 0 :(得分:1)
您是否覆盖了公共覆盖void RegisteredForRemoteNotifications(UIApplication application,NSData deviceToken)
或
public override void FailedToRegisterForRemoteNotifications(UIApplication application,NSError error)
我有类似的问题,在Registered ...函数中,我调用了一个Web服务来上传设备令牌。但是网络调用不在另一个线程中,因此导致冻结UI。