5

मैं सफलतापूर्वक पुश नोटिफिकेशन के लिए मेरे एप्लिकेशन रजिस्टर कर सकते हैं का कारण बनता है:RegisterForRemoteNotificationTypes यूआई लटका

UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(
    UIRemoteNotificationType.Alert 
    | UIRemoteNotificationType.Badge 
    | UIRemoteNotificationType.Sound); 

लेकिन जब भी मैं इस पर अमल, मेरे यूआई आमतौर पर 2-3 सेकंड के लिए लटका हुआ है। भले ही मेरे पास ऐप लाइफसाइक्ल में अनुशंसित है (उदाहरण के लिए, WillFinishLaunching) मेरा यूआई अभी भी मेरे पहले व्यू कंट्रोलर लोड के बाद लटकता है।

मेरी पहली सोचा एक अलग थ्रेड में पंजीकरण निष्पादित करने के लिए गया था, लेकिन 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); 

मैं कैसे या तो

  1. बंद करो पुश अधिसूचना मेरी यूआई धागा
  2. यूआई फ्रीज कवर बांधने ऊपर से पंजीकरण कर सकते हैं?

उत्तर

1

आप सार्वजनिक ओवरराइड शून्य RegisteredForRemoteNotifications ओवरराइड (UIApplication आवेदन, NSData deviceToken)

या

सार्वजनिक ओवरराइड शून्य FailedToRegisterForRemoteNotifications (UIApplication आवेदन, NSError त्रुटि)

मैं इसी तरह की समस्या मिला है क्या जहां पंजीकृत ... फ़ंक्शन के भीतर, मैंने डिवाइस टोकन अपलोड करने के लिए एक वेब सेवा बुलाई। लेकिन वेब कॉल किसी अन्य धागे के भीतर नहीं था इसलिए यह यूआई को फ्रीज करता था।

संबंधित मुद्दे