2015-04-08 5 views
6

मैं स्विफ्ट के साथ एक ऐप बना रहा हूं जो पुश नोटिफिकेशन प्राप्त करता है। मैं JSON के अंदर कस्टम मान भेज रहा हूं।लॉन्च से कस्टम पुश अधिसूचना मूल्य कैसे प्राप्त करें त्वरित के साथ विकल्प?

मैं अधिसूचना के माध्यम से ऐप खोल रहा हूं, इसलिए मुझे पता है कि मुझे इसे "didFinishLaunchingWithOptions" के अंदर करना है और "launchOptions" से मान पढ़ना है।

मैं उन मानों को कैसे पढ़ सकता हूं और उन्हें अपने ऐप पर उपयोग कैसे कर सकता हूं।

बहुत धन्यवाद।

उत्तर

1

आवेदन में: didReceiveRemoteNotification: fetchCompletionHandler, कस्टम डेटा didReceiveRemoteNotification पर पास किया गया है, जो एक NSDictionary है। विवरण जो आप पुनर्प्राप्त करना चाहते हैं वह शायद उपयोगकर्ताInfo की "एपीएस" कुंजी पर है।

func application(application: UIApplication, didReceiveRemoteNotification userInfo: NSDictionary!) 
{ 
    var notificationDetails: NSDictionary = userInfo.objectForKey("aps") as NSDictionary 
} 

एप्लिकेशन लॉन्च नहीं किया है, तो आप आवेदन से इसे पाने के लिए की आवश्यकता होगी:, didFinishedLaunchWithOptions

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { 

    if let launchOpts = launchOptions { 
     var notificationDetails: NSDictionary = launchOpts.objectForKey(UIApplicationLaunchOptionsRemoteNotificationKey) as NSDictionary 
    } 

    return true 
} 

संपादित करें: रिमोट अधिसूचना फिक्स वाक्य रचना

+0

ठीक है। और मैं आगे क्या करूँ? मैं "अधिसूचना" से मूल्य कैसे प्राप्त करूं? – Aerofan

+0

आप UILocalNotification की userInfo प्रॉपर्टी तक पहुंचते हैं, जो एक NSDictionary –

+0

है, मुझे लगता है कि आप इस कोड के माध्यम से उद्देश्य-सी और स्विफ्ट मिश्रण कर रहे हैं। – Aerofan

4

यहाँ स्विफ्ट में मेरे लिए काम करता है 2 जब आपका ऐप लॉन्च नहीं होता है। वैकल्पिक बाइंडिंग के कारण कोड काफी सुरुचिपूर्ण नहीं है। लेकिन यह काम करता है।

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

    // if launched from a tap on a notification 
    if let launchOptions = launchOptions { 
     if let userInfo = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey] { 
      if let action = userInfo["action"], id = userInfo["id"] { 
       let rootViewController = self.window!.rootViewController as! ViewController 
       let _ = setTimeout(5.0, block: {() -> Void in 
        rootViewController.openNotification(action as! String, id: id as! String) 
       }) 

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