2015-12-29 30 views

回答

0

我找到了取消订阅单播通知的方法。不知道这是否正确,但对我有用。我使用REST API运行时服务

MobileFirst运行时环境中的REST REST API使部署在MobileFirst Server外部的后端服务器应用程序能够从REST API端点访问Push功能。

认为它是专为后端服务器它为我工作。

String token = getToken("unregister-device"); 

首先获得令牌如何获得令牌的细节是here

一旦你那么令牌实现REST客户端查看文档here

示例代码。

HttpClient httpClient = HttpClientBuilder.create().build(); 
     HttpDelete postRequest = new HttpDelete("http://localhost:10080/MyProject/imfpush/v1/apps/MyMobileApp/devices/12121-1212121-121212-12121"); 
      postRequest.addHeader("Content-Type", "application/json"); 
      postRequest.addHeader("Authorization", "Bearer "+token); 
     HttpResponse response = httpClient.execute(postRequest); 
     if (response.getStatusLine().getStatusCode() != 204) { 
      throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode()); 
     } 
     BufferedReader br = new BufferedReader(new InputStreamReader((response.getEntity().getContent()))); 
     String output; 
     System.out.println("============Output:============"); 
     while ((output = br.readLine()) != null) { 
      System.out.println(output); 
     } 
1

检查的官方文档here,它说:

的用户ID(S)必须是被用来订阅推送通知事件源的用户ID。

这表明单播通知使用相同的事件源订阅/退订机制,检查如何从事件源退订的官方文档here

+0

纠正我,如果我错了,但单播和事件源之间的区别是他们没有在单播情况下的事件源ID。在我们当前的应用程序中,我们只需使用WL.Client.connect()为Push订阅用户。如果机制与事件源相同,那么别名将是什么。检查这个文档说明unscuscription过程,它要求强制别名。 https://www-01.ibm.com/support/knowledgecenter/SSHS8R_7.1.0/com.ibm.worklight.apiref.doc/html/refjavascript-client/html/WL.Client.Push.html?lang=en –

+0

我应该放入别名,在用户订阅过程中是否有任何默认事件源ID分配? –

+0

你是对的,单播通知与基于事件源的通知不同,我用来理解它的文档是错误的。我正在做一个示例应用程序,以了解如何取消订阅单播通知。我认为它非常类似于标记通知(使用具有不同参数的WL.Server.sendMessage),因此它可能有一个可以退订的特殊标记(例如具有特殊标记Push.ALL的广播消息)。我会让你知道我到达了什么。此外,如果您可以解释您的业务需求,可能可以帮助您。 – Hisham