2012-05-17 15 views
9

मैं अपने धक्का अधिसूचना के साथ एक अजीब व्यवहार देख रहा हूँ और अगर किसी को भी क्या मैं गलत किया है या क्या करना चाहिए पर किसी भी सलाह है सोच रहा था।गॉट पीएन हालांकि आवेदन: आवेदन didReceiveRemoteNotification: ट्रिगर नहीं जब एप्लिकेशन आइकन का चयन किया जाता

मेरे पास मेरी application:(UIApplication*)application didReceiveRemoteNotification: लिखा इस प्रकार है:

- (void)application:(UIApplication*)application didReceiveRemoteNotification: (NSDictionary*)userInfo 
{ 
NSLog(@"Received notification: %@", userInfo); 
[self addMessageFromRemoteNotification:userInfo updateUI:YES]; 
} 

आप देख सकते हैं, मैं एप्लिकेशन की स्थिति के बारे में चिंतित नहीं हूँ। जब भी मुझे पीएन मिलता है तो मैं सिर्फ एक संदेश लॉग करना चाहता हूं।

मेरा सेटअप ऐप्पल से प्रलेखन के अनुसार है और मैं पुश नोटिफिकेशन प्राप्त कर सकता हूं।

  • अनुप्रयोग पृष्ठभूमि में है और मुझे सूचना पर क्लिक करें:: मैं नोटिफिकेशन केंद्र में अधिसूचना देख सकते हैं

    निम्नलिखित उम्मीद व्यवहार जब एक PN में आता है। अधिसूचना पर क्लिक करें, ऐप अग्रभूमि में आता है और मैं उपरोक्त विधि को देख सकता हूं।

  • ऐप के सक्रिय होने और पहले से ही अग्रभूमि में: मैं देख सकता हूँ उपरोक्त विधि कहा जाता है।

अब, निम्नलिखित अजीब व्यवहार मैं देख रहा हूँ है:।

  • पीएन में आता है, सूचनाओं में यह देखें एप्लिकेशन आइकन पर बैज दिखाई देता। मैं ऐप आइकन पर क्लिक करता हूं - अधिसूचना नहीं: इस उदाहरण में मैंने पाया कि उपरोक्त विधि नहीं है। मैं इसे कहने की उम्मीद कर रहा था ...

क्या किसी ने इस व्यवहार को पहले देखा है? क्या यह होना चाहिए? मैं इसके बारे में ऐप्पल दस्तावेज में कुछ भी नहीं देख सका ... इसके अलावा, इसके आसपास एक रास्ता होगा?

उत्तर

2

एप्लिकेशन पृष्ठभूमि में नहीं चल रहा तो गया था, लेकिन शुरू में पुश अधिसूचना से शुरू किया और आप didFinishLaunchingWithOptions है: लागू किया, तुम वहाँ अपने कोड लागू करने की आवश्यकता:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions { 
    if (launchOptions != nil) { 
     NSDictionary* userInfo = [launchOptions valueForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"]; 
     if (userInfo != nil) { 
      NSDictionary* apsInfo = [userInfo objectForKey:@"aps"]; 
      NSString* custom = [userInfo objectForKey:@"yourCustomPushData"]; 
      // do something with it 
     } 
    } 
    //... 
} 
+0

में नहीं है कोई - मैं एक ही समस्या है , न तो didfinishlaunchingwithoptions और न ही didreceiveremotenotification कहा जाता है जब ऐप पृष्ठभूमि में है और पुश अधिसूचना आता है और आप अपने आइकन टैप करने वाले ऐप पर वापस आते हैं – jab11

2

मैं एक ही व्यवहार किया है। यह मुझे पागल बनाता है लेकिन मुझे लगता है कि आईओएस काम करता है।

सेब प्रलेखन से एक अंश के नीचे। यह एप्लिकेशन के संबंध में है: ऐप नहीं चल रहा है जब FinishLaunchingWithOptions। ऐसा लगता है कि जब ऐप पृष्ठभूमि में है/didReceiveRemoteNotification के लिए यह वही है।

"यदि कार्रवाई बटन टैप किया गया है (आईओएस चलाने वाले डिवाइस पर), सिस्टम एप्लिकेशन लॉन्च करता है और एप्लिकेशन अपने प्रतिनिधि के आवेदन को कॉल करता है: didFinishLaunchingWithOptions: विधि (लागू होने पर); यह अधिसूचना पेलोड में गुजरती है (दूरस्थ अधिसूचनाओं के लिए) या स्थानीय प्रतिवाद वस्तु (स्थानीय सूचनाओं के लिए)।

आवेदन आइकन iOS चलाने वाले एक डिवाइस पर उपयोग किया जाता है, तो आवेदन ही विधि कहता है, लेकिन सूचना के बारे में कोई जानकारी नहीं प्रस्तुत।" से: http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW1

0

MRJ के मेरे मामले में काम नहीं कर रहा तो मैं विकल्प

निम्नलिखित की कोशिश की, तो आवेदन पृष्ठभूमि आप निम्नलिखित का उपयोग करना चाहिए कोड

//-------------- check notification when app is come to foreground after apllication get terminated ----------------// 

UILocalNotification *localNotif = 

[launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; 

if (localNotif) { 

    [self handleRemotNotification:[launchOptions valueForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"]]; // private method 


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