24

के जवाब में एक विशिष्ट ViewController का शुभारंभ मैं एक ऐप्स जो नीचे दी गई छवि की तरह स्टोरीबोर्ड प्रवाह है बना रहा हूं:एक दूरस्थ पुश अधिसूचना

storyboard

जब से "Sysalert देखें नियंत्रक" वे कर रहे हैं में एक उपयोगकर्ता के लॉग "संदेश सूची दृश्य नियंत्रक" में लाया गया जहां मैं तालिका में कुछ JSON लोड करने के लिए NSRLConnection करता हूं। जब कोई उपयोगकर्ता तालिका में एक पंक्ति को टैप करता है, तो उन्हें "संदेश विवरण" में लाया जाता है जो उस संदेश के लिए अधिक विस्तृत जानकारी दिखाता है।

जब कोई उपयोगकर्ता लॉन्च करने से पहले ऐप की स्थिति के बावजूद पुश अधिसूचना से ऐप लॉन्च करता है, तो मैं चाहता हूं कि ऐप मेरे सर्वर से "संदेश सूची" डेटा लोड करे और फिर उन्हें वह संदेश दिखाएं जो अभी किया गया है डिवाइस पर धक्का दिया।

मुझे पता है कि मुझे पुश अधिसूचना पर प्रतिक्रिया करने के लिए ऐप को बताने के लिए didFinishLaunchingWithOptions का उपयोग करने की आवश्यकता है, लेकिन मैं दृश्य पदानुक्रम कैसे सेट करूं ताकि "संदेश सूची" दृश्य नियंत्रक अपना डेटा लोड कर लेता है और फिर "संदेश विवरण" दृश्य को धक्का देता है उचित संदेश के लिए ढेर पर नियंत्रक?

अनिवार्य रूप से इस तरह के संदेशों या मेल ऐप्स के व्यवहार की नकल करता है। जहां अधिसूचना के साथ खुलता है, आपको उस संदेश के लिए एक व्यू कंट्रोलर पर लाता है लेकिन आप अभी भी पदानुक्रम में वापस जाने में सक्षम हैं जैसे कि आपने प्रारंभिक दृश्य नियंत्रक से ऐप लॉन्च किया था और बदले में व्यूंटर्स के माध्यम से ट्रैवर्स किया था।

+0

में से एक में इस्तेमाल किया @conorgrifinhave आपको जवाब मिला? मुझे एक ही समस्या है .. धन्यवाद –

+0

धक्का अधिसूचना से प्रोग्रामेटिक रूप से कुछ व्यू कंट्रोलर पर आईओएस स्विफ्ट नेविगेट का संभावित डुप्लिकेट] (https://stackoverflow.com/questions/43058261/ios-swift-navigate-to-certain-viewcontroller- प्रोग्रामेटिक रूप से -फ्रॉम-पुश-नोटिफ़िका) –

उत्तर

8

आपके द्वारा वर्णित करना संभव है, लेकिन मैं इसकी अनुशंसा नहीं करता।

Frist, का मानना ​​है कि आप स्टोरीबोर्ड में चाहते हैं के साथ एक कट दृश्य नियंत्रक जगह, दृश्य नियंत्रक में पहचान करने की तरह "मेरे पुश अधिसूचना देखें"

didFinishLaunchingWithOptions: में कुछ देना, आप से rootViewController को प्राप्त कर सकते हैं ऐप प्रतिनिधि। यह नियंत्रक नेविगेशन नियंत्रक होगा। नेविगेशन नियंत्रक का उपयोग करके, आप स्टैक के शीर्ष पर एक नया दृश्य नियंत्रक धक्का दे सकते हैं। नया व्यू कंट्रोलर बनाने के लिए, आप "माई पुश अधिसूचना दृश्य" पहचानकर्ता के साथ व्यू कंट्रोलर को तुरंत चालू करें।

UINavigationController *navController = (UINavigationController *)self.window.rootViewController; 
UIViewController *notificationController = [navController.storyboard instantiateViewControllerWithIdentifier:@"My Push Notification View"]; 

[navController pushViewController:notificationController animated:YES]; 

मुझे लगता है कि आप -presentViewController:animated:completion: की तरह कुछ का उपयोग करने के बजाय नेविगेशन ढेर में दखल की एक मॉडल दृश्य दिखाने के लिए चाहते हैं।

UIViewController *rootController = (UIViewController *)self.window.rootViewController; 
UIViewController *notificationController = [rootController.storyboard instantiateViewControllerWithIdentifier:@"My Push Notification View"]; 

[rootController presentViewController:notificationController animated:YES completion:NULL]; 
+0

मैंने इसे आईओएस 7 में कार्यान्वित किया था, फिनिशलाउंसिंग विथऑप्शन में यह हर बार ऐप खुला था और इसे खोला गया था। अगर कोई पुश अधिसूचना आती है और/या यदि ऐप बंद हो जाता है और पुश अधिसूचना –

4

यह प्रयास करें मैं अपने आवेदन, उपयोगकर्ता एक वैश्विक

ex: BOOL gotNotifcation; 

-(void)application:(UIApplication*)app didReceiveRemoteNotification:(NSDictionary *)userInfo 
{ 
    NotificationsViewController *notificationobject = [[NotificationsViewController alloc]init]; 
    [self.navigationController pushViewController:notificationobject animated:YES]; 
    gotNotifcation = YES; 
} 

वापस बटन कार्रवाई के लिए NotificationsViewController में के रूप में अनुप्रयोग प्रतिनिधि में एक चर यह अनुकूलित है, तो बटन

-(void)gotoback 
{ 
    AppDelegate *delegate =(AppDelegate *)[UIApplication sharedApplication].delegate; 

    if(delegate.gotNotifcation) 
    { 
     delegate.gotNotifcation = NO; 
     MessageListController *feed = [[MessageListController alloc] init]; 
     [self.navigationController pushViewController:feed animated:NO]; 
    } 
    else 
    { 
     [self.navigationController popViewControllerAnimated:NO]; 
    } 
} 
+0

में आती है तो आप ट्रिगर होने के लिए क्या बदलेंगे, मैं आपको स्विफ्ट 3 @ करण गिरि में अपना कोड अपडेट कर सकता हूं –

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