हम कार्यान्वित कर रहे हैं पुश अधिसूचना प्रणाली का उपयोग करते हुए Azure अधिसूचना हब का उपयोग कर।डुप्लिकेट पुश अधिसूचना आईओएस & Android के लिए Azure पुश अधिसूचना
ऐप लॉन्च के दौरान हर बार ऐप रजिस्टर करता है। उपकरण appname_userid द्वारा पहचाने गए टैग के साथ पुश अधिसूचना के लिए पंजीकृत हैं। उदाहरण के लिए Android_1122 जहां 1122 एक अद्वितीय उपयोगकर्ता आईडी है। एक आईफोन डिवाइस में वही iPhone_1122 होगा। उपयोगकर्ता के पास एकाधिक डिवाइस हो सकते हैं, जहां एक ही टैग वाले सभी डिवाइसों पर एक पुश संदेश वितरित किया जाएगा।
हालांकि एक मुद्दा है कि हम कुछ उपयोगकर्ताओं के लिए डुप्लिकेट पुश अधिसूचनाओं का सामना कर रहे हैं। प्रत्येक बार जब उपयोगकर्ता & अनइंस्टॉल करता है तो ऐप को दोबारा इंस्टॉल करता है, एक नया टोकन वापस कर दिया जाता है। इसलिए, उस दिए गए टैग के लिए, एकाधिक रजिस्ट्रेशन किए जाते हैं जिससे डुप्लिकेट धक्का उसी डिवाइस पर पहुंचाया जाता है।
भी नीचे दिए गए समान लिंक के माध्यम से चला गया है। लेकिन, पूरी तरह से स्पष्ट नहीं है कि पंजीकरण पंजीकरण आईडी रीस्ट एपीआई का उपयोग करके वास्तव में क्या मतलब है जो वास्तव में पंजीकरण के बिना पंजीकरण आईडी देता है। azure notification hubs - app uninstall
कृपया उसी डिवाइस के लिए डुप्लिकेट पंजीकरण से बचने के लिए कुछ तरीका प्रदान करें।
नीचे वह कोड है जिसका हम पंजीकरण करने के लिए उपयोग कर रहे हैं।
iOS उपकरणों
NSString *mobileServicesURL = @"Endpoint=sb://mobilepushnotificationhub.servicebus.windows.net/;SharedAccessKeyName=DefaultListenSharedAccessSignature;SharedAccessKey=XXXXXXXXXXXXXXXXX=";
SBNotificationHub *hub = [[SBNotificationHub alloc] initWithConnectionString:mobileServicesURL notificationHubPath:@"notificationhubname"];
[hub registerNativeWithDeviceToken:token tags:[NSSet setWithObjects:[NSString stringWithFormat:@"iphoneapp_%@", [self getUserID]], nil] completion:^(NSError* error) {
completion(error);
}];
Android उपकरणों
private void gcmPush() {
NotificationsManager.handleNotifications(this, SENDER_ID, MyHandler.class);
gcm = GoogleCloudMessaging.getInstance(this);
String connectionString = "Endpoint=sb://mobilepushnotificationhub.servicebus.windows.net/;SharedAccessKeyName=DefaultListenSharedAccessSignature;SharedAccessKey=XXXXXXXXXXXXXXXXXXXXXXXXXXXX=";
hub = new NotificationHub("notificationhubname", connectionString, this);
registerWithNotificationHubs();
// completed Code
}
// Added Method
@SuppressWarnings("unchecked")
private void registerWithNotificationHubs() {
new AsyncTask() {
@Override
protected Object doInBackground(Object... params) {
try {
String regid = gcm.register(SENDER_ID);
Log.e("regid RECEIVED ", regid);
hub.register(regid, "androidapp_" + WhatsOnIndiaConstant.USERId);
WhatsOnIndiaConstant.notificationHub = hub;
WhatsOnIndiaConstant.gcmHub = gcm;
} catch (Exception ee) {
Log.e("Exception ", ee.getMessage().toString());
return ee;
}
return null;
}
}.execute(null, null, null);
}
बिल्कुल सही - आपने मेरा दिन बनाया। पता नहीं था कि जीसीएम कई काम करने वाले डिवाइस टोकन का उपयोग करता है! अब मेरी धक्का सेवाएं काम करती हैं! – Freddy