كيفية استخدام مراكز الإشعارات من Java
يصف هذا الموضوع الميزات الرئيسية ل Azure Notification Hub Java SDK الرسمي الجديد المدعوم بالكامل. هذا المشروع هو مشروع مفتوح المصدر ويمكنك عرض رمز SDK بالكامل في Java SDK.
بشكل عام، يمكنك الوصول إلى جميع ميزات مراكز الإشعارات من الواجهة الخلفية ل Java/PHP/Python/Ruby باستخدام واجهة Notification Hub REST كما هو موضح في واجهات برمجة تطبيقات REST لمركز الإشعارات لموضوع MSDN. توفر Java SDK هذه غلافا رقيقا فوق واجهات REST هذه في Java.
تدعم SDK حاليا ما يلي:
- CRUD على مراكز الإشعارات
- CRUD بشأن التسجيلات
- إدارة التركيب
- تسجيلات الاستيراد/التصدير
- عمليات إرسال منتظمة
- عمليات الإرسال المجدولة
- عمليات غير متزامنة عبر Java NIO
- الأنظمة الأساسية المدعومة: APNS (iOS) ، FCM (Android) ، WNS (تطبيقات متجر Windows) ، MPNS (Windows Phone) ، ADM (Amazon Kindle Fire) ، Baidu (Android بدون خدمات Google)
ملاحظة
تم إهمال خدمة إعلام Microsoft Push (MPNS) ولم تعد مدعومة.
استخدام SDK
تجميع وإنشاء
استخدام مافن
للبناء:
mvn package
رمز
CRUDs مركز الإشعارات
إنشاء NamespaceManager:
NamespaceManager namespaceManager = new NamespaceManager("connection string")
إنشاء مركز الإشعارات:
NotificationHubDescription hub = new NotificationHubDescription("hubname");
hub.setWindowsCredential(new WindowsCredential("sid","key"));
hub = namespaceManager.createNotificationHub(hub);
أو
hub = new NotificationHub("connection string", "hubname");
الحصول على مركز الإشعارات:
hub = namespaceManager.getNotificationHub("hubname");
تحديث مركز الإشعارات:
hub.setMpnsCredential(new MpnsCredential("mpnscert", "mpnskey"));
hub = namespaceManager.updateNotificationHub(hub);
حذف مركز الإشعارات:
namespaceManager.deleteNotificationHub("hubname");
تسجيل CRUDs
إنشاء عميل مركز الإشعارات:
hub = new NotificationHub("connection string", "hubname");
إنشاء تسجيل Windows:
WindowsRegistration reg = new WindowsRegistration(new URI(CHANNELURI));
reg.getTags().add("myTag");
reg.getTags().add("myOtherTag");
hub.createRegistration(reg);
إنشاء تسجيل iOS:
AppleRegistration reg = new AppleRegistration(DEVICETOKEN);
reg.getTags().add("myTag");
reg.getTags().add("myOtherTag");
hub.createRegistration(reg);
وبالمثل ، يمكنك إنشاء تسجيلات لنظام Android (FCM) و Windows Phone (MPNS) و Kindle Fire (ADM).
إنشاء تسجيلات القوالب:
WindowsTemplateRegistration reg = new WindowsTemplateRegistration(new URI(CHANNELURI), WNSBODYTEMPLATE);
reg.getHeaders().put("X-WNS-Type", "wns/toast");
hub.createRegistration(reg);
إنشاء التسجيلات باستخدام إنشاء معرف التسجيل + نمط upsert:
يزيل التكرارات بسبب أي استجابات مفقودة في حالة تخزين معرفات التسجيل على الجهاز:
String id = hub.createRegistrationId();
WindowsRegistration reg = new WindowsRegistration(id, new URI(CHANNELURI));
hub.upsertRegistration(reg);
تحديث التسجيلات:
hub.updateRegistration(reg);
حذف التسجيلات:
hub.deleteRegistration(regid);
تسجيلات الاستعلام:
- احصل على تسجيل واحد:
hub.getRegistration(regid);
- احصل على جميع التسجيلات في المحور:
hub.getRegistrations();
- احصل على التسجيلات باستخدام العلامة:
hub.getRegistrationsByTag("myTag");
- الحصول على التسجيلات حسب القناة:
hub.getRegistrationsByChannel("devicetoken");
تدعم جميع استعلامات المجموعة الرموز المميزة $top واستمراريتها.
استخدام واجهة برمجة تطبيقات التثبيت
واجهة برمجة تطبيقات التثبيت هي آلية بديلة لإدارة التسجيل. بدلا من الاحتفاظ بتسجيلات متعددة ، والتي ليست تافهة ويمكن القيام بها بسهولة بشكل غير صحيح أو غير فعال ، أصبح من الممكن الآن استخدام كائن تثبيت واحد.
يحتوي التثبيت على كل ما تحتاجه: قناة الدفع (رمز الجهاز) والعلامات والقوالب والبلاط الثانوي (ل WNS و APNS). لست بحاجة إلى الاتصال بالخدمة للحصول على المعرف بعد الآن - ما عليك سوى إنشاء GUID أو أي معرف آخر ، والاحتفاظ به على الجهاز وإرساله إلى الواجهة الخلفية مع قناة الدفع (رمز الجهاز).
على الواجهة الخلفية ، يجب عليك إجراء مكالمة واحدة فقط ؛ CreateOrUpdateInstallationإنها غير فعالة تماما ، لذلك لا تتردد في إعادة المحاولة إذا لزم الأمر.
على سبيل المثال ل Amazon Kindle Fire:
Installation installation = new Installation("installation-id", NotificationPlatform.Adm, "adm-push-channel");
hub.createOrUpdateInstallation(installation);
إذا كنت ترغب في تحديثه:
installation.addTag("foo");
installation.addTemplate("template1", new InstallationTemplate("{\"data\":{\"key1\":\"$(value1)\"}}","tag-for-template1"));
installation.addTemplate("template2", new InstallationTemplate("{\"data\":{\"key2\":\"$(value2)\"}}","tag-for-template2"));
hub.createOrUpdateInstallation(installation);
بالنسبة للسيناريوهات المتقدمة، استخدم إمكانية التحديث الجزئي، والتي تسمح بتعديل خصائص معينة فقط لكائن التثبيت. التحديث الجزئي هو مجموعة فرعية من عمليات تصحيح JSON التي يمكنك تشغيلها مقابل كائن التثبيت.
PartialUpdateOperation addChannel = new PartialUpdateOperation(UpdateOperationType.Add, "/pushChannel", "adm-push-channel2");
PartialUpdateOperation addTag = new PartialUpdateOperation(UpdateOperationType.Add, "/tags", "bar");
PartialUpdateOperation replaceTemplate = new PartialUpdateOperation(UpdateOperationType.Replace, "/templates/template1", new InstallationTemplate("{\"data\":{\"key3\":\"$(value3)\"}}","tag-for-template1")).toJson());
hub.patchInstallation("installation-id", addChannel, addTag, replaceTemplate);
حذف التثبيت:
hub.deleteInstallation(installation.getInstallationId());
CreateOrUpdate، Patchوتتفق Delete في نهاية المطاف مع Get. تنتقل العملية المطلوبة فقط إلى قائمة انتظار النظام أثناء المكالمة ويتم تنفيذها في الخلفية. لم يتم تصميم Get لسيناريو وقت التشغيل الرئيسي ولكن فقط لأغراض تصحيح الأخطاء واستكشاف الأخطاء وإصلاحها ، يتم خنقه بإحكام بواسطة الخدمة.
تدفق الإرسال لعمليات التثبيت هو نفسه بالنسبة للتسجيلات. لاستهداف إشعار التثبيت المعين - ما عليك سوى استخدام العلامة "InstallationId:{desired-id}". في هذه الحالة ، يكون الرمز:
Notification n = Notification.createWindowsNotification("WNS body");
hub.sendNotification(n, "InstallationId:{installation-id}");
بالنسبة لأحد القوالب المتعددة:
Map<String, String> prop = new HashMap<String, String>();
prop.put("value3", "some value");
Notification n = Notification.createTemplateNotification(prop);
hub.sendNotification(n, "InstallationId:{installation-id} && tag-for-template1");
جدولة الإخطارات (متوفرة للطبقة القياسية)
نفس الإرسال العادي ولكن مع معلمة إضافية واحدة - scheduledTime ، والتي تقول متى يجب تسليم الإشعار. تقبل الخدمة أي نقطة زمنية من الآن + 5 دقائق والآن + 7 أيام.
جدولة إشعار أصلي Windows:
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, 1);
Notification n = Notification.createWindowsNotification("WNS body");
hub.scheduleNotification(n, c.getTime());
استيراد/تصدير (متوفر للطبقة القياسية)
قد تحتاج إلى إجراء عملية مجمعة مقابل التسجيلات. عادة ما يكون للتكامل مع نظام آخر أو إصلاح ضخم لتحديث العلامات. لا نوصي باستخدام تدفق Get/Update إذا كانت هناك آلاف التسجيلات. تم تصميم قدرة الاستيراد/التصدير الخاصة بالنظام لتغطية السيناريو. ستوفر الوصول إلى حاوية blob ضمن حساب التخزين الخاص بك كمصدر للبيانات الواردة وموقع الإخراج.
إرسال وظيفة تصدير:
NotificationHubJob job = new NotificationHubJob();
job.setJobType(NotificationHubJobType.ExportRegistrations);
job.setOutputContainerUri("container uri with SAS signature");
job = hub.submitNotificationHubJob(job);
إرسال وظيفة استيراد:
NotificationHubJob job = new NotificationHubJob();
job.setJobType(NotificationHubJobType.ImportCreateRegistrations);
job.setImportFileUri("input file uri with SAS signature");
job.setOutputContainerUri("container uri with SAS signature");
job = hub.submitNotificationHubJob(job);
انتظر حتى يتم الانتهاء من المهمة:
while(true){
Thread.sleep(1000);
job = hub.getNotificationHubJob(job.getJobId());
if(job.getJobStatus() == NotificationHubJobStatus.Completed)
break;
}
الحصول على جميع الوظائف:
List<NotificationHubJob> jobs = hub.getAllNotificationHubJobs();
عنوان URI مع توقيع SAS:
عنوان URL هذا هو عنوان URL لملف blob أو حاوية blob بالإضافة إلى مجموعة من المعلمات مثل الأذونات ووقت انتهاء الصلاحية بالإضافة إلى توقيع كل هذه الأشياء التي تم إجراؤها باستخدام مفتاح SAS الخاص بالحساب. يتمتع Azure Storage Java SDK بقدرات غنية بما في ذلك إنشاء عناوين URI هذه. كبديل بسيط ، ألق نظرة على فئة الاختبار (من موقع GitHub) التي تحتوي على ImportExportE2E تنفيذ أساسي ومضغوط لخوارزمية التوقيع.
إرسال إشعارات
كائن الإعلام هو ببساطة نص مع رؤوس ، وبعض طرق الأداة المساعدة تساعد في بناء كائنات الإشعارات الأصلية والقالب.
- Windows المتجر Windows Phone 8.1 (غير الفضي)
String toast = "<toast><visual><binding template=\"ToastText01\"><text id=\"1\">Hello from Java!</text></binding></visual></toast>";
Notification n = Notification.createWindowsNotification(toast);
hub.sendNotification(n);
- iOS
String alert = "{\"aps\":{\"alert\":\"Hello from Java!\"}}";
Notification n = Notification.createAppleNotification(alert);
hub.sendNotification(n);
- Android
String message = "{\"data\":{\"msg\":\"Hello from Java!\"}}";
Notification n = Notification.createFcmNotification(message);
hub.sendNotification(n);
- Windows Phone 8.0 و 8.1 سيلفرلايت
String toast = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<wp:Notification xmlns:wp=\"WPNotification\">" +
"<wp:Toast>" +
"<wp:Text1>Hello from Java!</wp:Text1>" +
"</wp:Toast> " +
"</wp:Notification>";
Notification n = Notification.createMpnsNotification(toast);
hub.sendNotification(n);
- أوقد النار
String message = "{\"data\":{\"msg\":\"Hello from Java!\"}}";
Notification n = Notification.createAdmNotification(message);
hub.sendNotification(n);
- إرسال إلى العلامات
Set<String> tags = new HashSet<String>();
tags.add("boo");
tags.add("foo");
hub.sendNotification(n, tags);
- إرسال إلى تعبير العلامة
hub.sendNotification(n, "foo && ! bar");
- إرسال إشعار القالب
Map<String, String> prop = new HashMap<String, String>();
prop.put("prop1", "v1");
prop.put("prop2", "v2");
Notification n = Notification.createTemplateNotification(prop);
hub.sendNotification(n);
يجب أن يؤدي تشغيل شفرة Java الخاصة بك الآن إلى ظهور إشعار على جهازك المستهدف.
الخطوات التالية
يوضح لك هذا الموضوع كيفية إنشاء عميل Java REST بسيط لمراكز الإشعارات. من هنا يمكنك:
- قم بتنزيل Java SDK الكامل ، والذي يحتوي على رمز SDK بالكامل.
- العب مع العينات: