हैलो, बनाई गई है मैं एक ऐप्स जब एक स्थानीय notifcation इसे खोलने के लिए प्रयोग किया जाता है कि एक यूआई अद्यतन और एक आंतरिक स्थिति परिवर्तन के साथ जवाब देना चाहिए लिख रहा हूँ। मैं स्टोरीबोर्ड का उपयोग कर रहा हूँ और मैं स्थिति परिवर्तन निरीक्षण करने के लिए अपने मुख्य दृश्य नियंत्रक की स्थापना की है:आवेदन: didFinishLaunchingWithOptions: अधिसूचना फायरिंग से पहले गंतव्य नियंत्रक
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
if (application.applicationState == UIApplicationStateInactive)
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"Resume" object:self userInfo:notification.userInfo];
}
}
और यह ठीक काम करता है:: मेरे ऐप प्रतिनिधि में
- (void)viewDidLoad
{
[super viewDidLoad];
// ...
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resumeByNotification:) name:@"Resume" object:nil];
}
मैं इस अगर अनुप्रयोग है पृष्ठभूमि में चल रहा है, दृश्य नियंत्रक अधिसूचना को रोक देगा और तदनुसार प्रतिक्रिया करेगा। (एप्लिकेशन को अग्रभूमि में चल रहा है, इसकी वजह यूआई सीधे का ध्यान रखा जा रहा है पर ध्यान नहीं दिया है।)
समस्या पैदा होती है जब एप्लिकेशन को मार डाला गया है और सूचना प्राप्त होने पर। मैं didFinishLaunchingWithOptions विधि में इस लिखा है, एक त्वरित डिबग तकनीक :) के रूप में होने पर फ़ोन कंपन रही है, और मैं अधिसूचना मिलता है :
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UILocalNotification *localNotification = launchOptions[UIApplicationLaunchOptionsLocalNotificationKey];
if (localNotification)
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"Resume" object:self userInfo:localNotification.userInfo];
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
}
return YES;
}
फोन कंपन करता है तो अधिसूचना नहीं है, लेकिन ऐसा नहीं पर्यवेक्षक ट्रिगर नहीं लग रहा है। मुझे लगता है कि ऐसा इसलिए है क्योंकि व्यू कंट्रोलर की didViewLoad विधि अभी तक नहीं बुलाई गई है। मुझे यकीन नहीं है कि इसे कैसे काम करना है। मुझे लगता है मैं इस्तेमाल कर सकते हैं UIStoryboard के instantiateViewControllerWithIdentifier लगता है: विधि यकीन है कि दृश्य नियंत्रक वास्तव में नहीं है बनाने के लिए है, लेकिन मैं इसके बारे में एक "अतिरिक्त" उदाहरण के लिए हो रही नहीं किया जाएगा, एक है कि अंततः स्टोरीबोर्ड के स्वयं के जीवन चक्र द्वारा instantiated हो जाएगा के अलावा ? कक्षा संदर्भ दस्तावेज पर क्या कहता है, यह इस तरह की चीज करने के लिए बिल्कुल सही नहीं है।
मैं यहाँ बहुत स्पष्ट कुछ याद आ रही है? असल में, क्या इस तरह की स्थिति के लिए मेरा दृष्टिकोण सही है?
धन्यवाद! जब तक कुछ अपने दृश्य के लिए यह पूछता है
'initWithcoder:' का उपयोग करके धन्यवाद, एक आकर्षण की तरह काम किया। किसी ऑब्जेक्ट के जीवन चक्र में ये सभी कदम काफी भ्रमित हो सकते हैं। :) – Jollino
धन्यवाद, यह भी काम करता है यदि आप स्थानीय नोटिफिकेशन के बजाय पुश नोटिफिकेशन का उपयोग कर रहे हैं और कोई स्टोरीबोर्ड नहीं है। बस 'init' विधियों का उपयोग करें। – yoeriboven
['init (कोडर:)'] (https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Protocols/NSCoding_Protocol/index.html#//apple_ref/occ/intfm/NS कोडिंग/initWithCoder :) –