2

我正在使用Pubnub開發聊天應用程序,但我在實現推送通知時遇到問題。 我已經使用以下庫Pubnub在Android應用程序中實現Pubnub通知

編譯 'com.pubnub:pubnub-機器人:3.7.10'

和以下對FCM通知

>編譯'com.google.firebase:firebase-messaging:9.6.0'

如果我從Firebase控制檯手動發送指示FCM已正確集成的消息,則可以獲取推送消息。

我也啓用了附加功能,以及在Pubnub帳戶儀表板中推送通知。

然後在那裏添加FCM服務器。

功能如實時消息,歷史API回調和Presence API工作得很好。

我一直堅持只實施推送通知。

當我搜索了,我來了解這個方法

pubnub.addPushNotificationsOnChannels() 
    .pushType(PNPushType.GCM) 
    .channels(Arrays.asList("ch1", "ch2", "ch3")) 
    .deviceId("googleDevice") 
    .async(new PNCallback<PNPushAddChannelResult>() { 
     @Override 
     public void onResponse(PNPushAddChannelResult result, PNStatus status) { 
      // handle response. 
     } 
    }); 

但上述方法已不再是那個我一直在使用的SDK版本訪問。

我知道下面的方法相同,但不知道它是如何工作的。

mPubNub.enablePushNotificationsOnChannel(channel, firebaseRegId, new Callback() { 
     @Override 
     public void successCallback(String chanel, Object response) { 
      super.successCallback(chanel, response); 
      Log.e(TAG, "enablePushNotificationsOnChannel successCallback: " + chanel); 
      Log.e(TAG, "enablePushNotificationsOnChannel successCallback: " + response); 

      sendNotification(); 
     } 

     @Override 
     public void errorCallback(String s, PubnubError pubnubError) { 
      super.errorCallback(s, pubnubError); 
      Log.e(TAG, "enablePushNotificationsOnChannel errorCallback: " + s); 
      Log.e(TAG, "enablePushNotificationsOnChannel errorCallback: " + pubnubError); 

     } 
    }); 

任何關於此事的幫助或協助將不勝感激。

在此先感謝。

回答

1

你的代碼是正確的,只是在此格式發送郵件:

public Map<String, Object> createmessage(String messageType, String messageId) { 
     obj = new JSONObject(); 
     try { 
      obj.put("messageType", messageType); 
      obj.put("senderID", SharedPref.getInstance().getInt(SharedConstants.USER_ID) + ""); 
      obj.put("content", messagestring); 
      obj.put("type", contentType); 
      obj.put("userName", data.getName()); 
      obj.put("messageId", messageId); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     byte[] encodeddata1 = Base64.encode(obj.toString().getBytes(), Base64.NO_WRAP); 
     String data = new String(encodeddata1); 

     Map<String, Object> messagepayload = new HashMap<>(); 
     messagepayload.put("message", notification().toString()); 
     Map<String, Object> datapayload = new HashMap<>(); 
     datapayload.put("data", messagepayload); 
     Map<String, Object> mobilePayload = new HashMap<>(); 

     mobilePayload.put("pn_gcm", datapayload); 
     mobilePayload.put("pn_other", data); 
     mobilePayload.put("pn_debug", true); 
     Log.e("published message", mobilePayload.toString()); 
     return mobilePayload; 
    } 

,並使用此庫:

compile 'com.pubnub:pubnub:4.0.9' 

希望這將幫助你out..let我知道您的反饋意見。

+1

謝謝@Deepak Rana,我知道你提到過這個庫。 但是如果我添加這個庫,我將不得不改變我現有的代碼中的很多東西。 所以,這不是一個好的解決方案,因爲我現在不想遷移。 –

+0

然後,您必須在v3中使用PubNub Android SDK中的API,而不是v4。您嘗試使用的方法是v4 API。 https://www.pubnub.com/docs/android-java/api-reference-mobile-push#adding-device-channel –