9

कई उदाहरण हैं कि आपको छवियों को दिखाने के लिए 'मीडिया अनुलग्नक' तकनीक का उपयोग करने वाले समृद्ध अधिसूचनाओं को जोड़ने के लिए अपनी परियोजना को कैसे सेट अप करना चाहिए। मैं उनमें से ज्यादातर पढ़ा है लेकिन कुछ मैं, याद किया क्योंकि मेरी परियोजना इस पेलोड (APNS-उपकरण और मेला के साथ परीक्षण किया) के साथ किसी भी अमीर सूचनाएं प्रदर्शित नहीं करता है:आईओएस 10 ऐप में मेरी पुश नोटिफिकेशन में मीडिया संलग्नक कैसे जोड़ सकता हूं?

{ 
    "aps":{ 
     "alert":{ 
      "title": "Rich test", 
      "body": "Dancing Banana" 
     }, 
     "mutable-content": 1 
    } 
} 

अधिसूचना दिखाई दे रहा है, लेकिन 3 डी टच पर , कोई अतिरिक्त इन्फोस प्रदर्शित नहीं होता है (जैसे छवि या संशोधित शीर्षक)। अधिसूचना विस्तार ब्रेकपॉइंट्स और NSLog संदेश भी काम नहीं कर रहे हैं।

यहाँ मेरी डेमो परियोजना है: https://github.com/gklka/RichTest

मैंने क्या किया है:

  1. एक नई परियोजना बनाया
  2. कार्यान्वित आईओएस शैली प्राधिकरण:
 
    UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; 
    [center requestAuthorizationWithOptions:UNAuthorizationOptionAlert completionHandler:^(BOOL granted, NSError * _Nullable error) { 

     if (granted) { 
      NSLog(@"Granted"); 

      [[UIApplication sharedApplication] registerForRemoteNotifications]; 

     } else { 
      NSLog(@"Error registering: %@", error); 
     } 

    }]; 
  1. ऐपडिलेगेट में डीबग जोड़ा गया:
 
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 
    NSLog(@"Token: %@", deviceToken); 
} 

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { 
    NSLog(@"Error: %@", error); 
} 
  1. जोड़ा परियोजना के लिए एक नया लक्ष्य: अधिसूचना सेवा विस्तार:

Add new target

  1. परियोजना

  2. में केला लगाव जोड़ने के लिए कोड जोड़ा गया

 
    self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]", self.bestAttemptContent.title]; 

    // Add image attachment 
    NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"banana" withExtension:@"gif"]; 
    NSError *error; 
    UNNotificationAttachment *attachment = [UNNotificationAttachment attachmentWithIdentifier:@"banana" URL:fileURL options:nil error:&error]; 
    self.bestAttemptContent.attachments = @[attachment]; 

मैं क्या याद किया?

अतिरिक्त जानकारी: जब मैं दूरस्थ सूचनाओं के बजाय स्थानीय नोटिफिकेशन का उपयोग करता हूं तो वही काम काम करता है।

उत्तर

2

आप वहां से अधिकतर तरीके हैं। जिस तरह से आप अनुलग्नक भेजने जा रहे हैं वह आमतौर पर आपके पेलोड में एक यूआरएल के रूप में होता है। हालांकि, अगर आप अनुलग्नक को हार्ड-कोड करना चाहते हैं, जैसे आपका कोड करता है, मुझे लगता है कि यह काम करेगा, लेकिन मुझे लगता है कि आप एक महत्वपूर्ण घटक को याद करते हैं। मुझे लगता है कि सेवा विस्तार में मुख्य बंडल या उसके संसाधनों तक पहुंच नहीं है। यदि आपने सेवा एक्सटेंशन में कोई संसाधन जोड़ा है और उसे लोड करने का प्रयास किया है ([NSBundle bundleForClass:[NotificationService class]] जैसे कुछ का उपयोग करके), मुझे संदेह है कि यह काम करेगा।

हालांकि, अगर आप यूआरएल को पेलोड के हिस्से के रूप में भेजते हैं, तो आप उस यूआरएल से छवि लोड करने जा रहे हैं और बंडल को वैसे भी नहीं। उस स्थिति में, मुझे पूरा यकीन है कि आपको startAccessingSecurityScopedResourceNSURL पर (stopAccessingSecurityScopedResource के साथ) का उपयोग करना होगा।

आशा है कि मदद करता है!

+0

अच्छा विचार, मैंने कोशिश की है और दो प्रश्न हैं: 1. "[संशोधित]" शीर्षक संशोधन चीज क्यों काम नहीं करती है? 2. मैंने फ़ाइल डाउनलोडिंग का समर्थन करने के लिए यूआरएल पर प्रोजेक्ट को संशोधित किया है, और निम्न धक्का भेज रहा है: https: //gist.github।com/gklka/9802bb56340c38a7a481cde2c4fcaa70 यह या तो काम नहीं करता प्रतीत होता है। – gklka

+0

'सेवा एक्सटेंशन टाइममिल एक्सपेयर()' कॉलिंग हो रही है? यदि आप एक्सकोड (ऐप नहीं) से एक्सटेंशन चलाते हैं, तो क्या आप किसी भी विधि में ब्रेकपॉइंट्स हिट कर सकते हैं? – Jerry

+0

न तो 'एनएसएलओजी', न ही 'अधिसूचना सेवा.एम' में ब्रेकपॉइंट डालना काम करता है। शायद मुझे कुछ याद आया? क्या आप कृपया गिटहब पर अपनी परियोजना की जांच कर सकते हैं? https://github.com/gklka/RichTest – gklka

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