2015-12-29 91 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