5

मैं पुश अधिसूचनाओं का उपयोग कर रहा हूं जो एक applikation बना रहा हूँ, मैं वर्तमान में पुश अधिसूचनाओं के लिए pushbots का उपयोग कर रहा हूँ। मैं सोच रहा था कि एप्लिकेशन द्वारा प्राप्त अधिसूचनाओं को अवरुद्ध करने का कोई तरीका है या डिवाइस पर अधिसूचना दिखाई देने से पहले अधिसूचना की जांच करें। और यदि अधिसूचना में डेटा सही नहीं है, तो अधिसूचना बिल्कुल न दिखाएं? क्या यह पुशबॉट के साथ संभव है या क्या मुझे इसे अपने आप से करने की ज़रूरत है?आईओएस इंटरसेप्ट पुश अधिसूचना

+1

अधिसूचना "सही नहीं" क्यों होगी? आप डिवाइस पर भेजी गई अधिसूचना को नियंत्रित करते हैं, खराब सूचनाएं न भेजें ... – Doc

+0

सही गलत शब्द हो सकता है, लेकिन मैं यह जांचना चाहता हूं कि यह सही "उपयोगकर्ता" या डिवाइस है या नहीं। मैं नहीं चाहता कि आवेदन के साथ सभी डिवाइस सभी अधिसूचनाएं प्राप्त करें। – Uffe

+1

जब आप पुश अधिसूचना भेजते हैं, तो आप यह निर्धारित करने के लिए डिवाइस टोकन निर्दिष्ट करते हैं कि कौन सा डिवाइस अधिसूचना भेजना है ... – Doc

उत्तर

2

आप डिवाइस पर पहुंचने के बाद अधिसूचना को दिखाए जाने से नहीं रोक सकते हैं (माना जाता है कि इसमें फ़ील्ड aps शब्दकोश में है - यदि ऐसा नहीं होता है, तो कोई सूचना नहीं दिखाई देगी)।

आपको अपने सर्वर में निर्धारित करना चाहिए कि कौन से डिवाइस टोकन पर अधिसूचनाएं भेजी जानी चाहिए। यदि आपकी कार्यक्षमता की आवश्यकता है, तो आप अपने डीबी में उपयोगकर्ताओं के साथ डिवाइस टोकन को जोड़ सकते हैं।

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

+0

मैं इसके बजाए एलियास का उपयोग कर ऐसा करता हूं, डिवाइस टोकन के समान, लेकिन प्रत्येक डिवाइस पर आप एक विशिष्ट सेट कर सकते हैं उस उपयोगकर्ता के लिए उपनाम। – Uffe

16

हां, आप इस व्यवहार को स्थानीय अधिसूचनाओं के साथ खेल सकते हैं।

आप alert और "content-available": "1" के बिना अपना पेलोड कॉन्फ़िगर कर सकते हैं ताकि आपका एप्लिकेशन उन्हें उपयोगकर्ता को दिखाए बिना सूचनाएं प्राप्त कर सके।

// Payload 
{ 
    aps: { 
     "content-available": 1 
    }, 
    text: 'my alert message' // your custom info 
} 

और अपने ऐप्लिकेशन कोड में, के रूप में

// Register notifications 
[[UIApplication sharedApplication] registerForRemoteNotificationTypes: 
UIRemoteNotificationTypeNewsstandContentAvailability]; 

तब सूचनाएं रजिस्टर, कुंजी कुछ हालत

- (void)application:(UIApplication *)application didReceiveRemoteNotification: (NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 
{ 

    NSLog(@"push data package: %@", userInfo); 

    // Retrieve your data   
    NSString *text = [userInfo objectForKey:@"text"]; 

    BOOL mustShow = YES; 
    // Only show notification if app is background and your custom condition 
    if ((state == UIApplicationStateInactive || state == UIApplicationStateBackground) 
     && mustShow) { 
     // Raise the local notification a second after received 
     UILocalNotification* localNotification = [[UILocalNotification alloc] init]; 
     localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:1]; 
     localNotification.alertBody = text; 
     localNotification.timeZone = [NSTimeZone defaultTimeZone]; 
     localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1; 

     [[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 
    } 
} 

इस तरह आप के आधार पर application:didReceiveRemoteNotification:fetchCompletionHandler: विधि में स्थानीय सूचनाएं को गति प्रदान करने के लिए है उपयोगकर्ता को "प्रदर्शित करने" से पहले अधिसूचनाओं को "अवरुद्ध" कर सकते हैं।

+0

इसे सही उत्तर के रूप में स्वीकार किया जाना चाहिए –

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