融云--IMKit 自帶消息推送

2.6.0 之后的版本必須自定義一個繼承 PushMessageReceiver 的廣播接收器,否則可能會導致點擊后臺通知沒有反應,或者收不到推送通知等問題。

1、自定義一個 BroadcastReceiver 類

繼承PushMessageReceiver 類,實現(xiàn)onNotificationMessageArrived和onNotificationMessageClicked方法。

public class DemoNotificationReceiver extends PushMessageReceiver {
   /**
     * 用來接收服務器發(fā)來的通知欄消息(消息到達客戶端時觸發(fā))
     * 默認return false,通知消息會以融云 SDK 的默認形式展現(xiàn)
     * 如果需要自定義通知欄的展示,在這里實現(xiàn)?己的通知欄展現(xiàn)代碼,只要return true即可
     */
    @Override
    public boolean onNotificationMessageArrived(Context context, PushNotificationMessage message) {
        
        return false;
    }
     /**
     * ?戶點擊通知欄消息時觸發(fā) (注意:如果?定義了通知欄的展現(xiàn),則不會觸發(fā))
     * 默認 return false
     * 如果需要自定義點擊通知時的跳轉,return true即可
     */
    @Override
    public boolean onNotificationMessageClicked(Context context, PushNotificationMessage message) {
        return false;
    }
}

2、把DemoNotificationReceiver 注冊到應用的 AndroidManifest.xml 里面

<receiver
    android:exported="true"
    android:name="您自定義的 broadcastReceiver 類名">
    <intent-filter>
        <action android:name="io.rong.push.intent.MESSAGE_ARRIVED" />
        <action android:name="io.rong.push.intent.MI_MESSAGE_ARRIVED" />
        <action android:name="io.rong.push.intent.MESSAGE_CLICKED" />
        <action android:name="io.rong.push.intent.MI_MESSAGE_CLICKED" />
    </intent-filter>
</receiver>

3、攔截推送消息的點擊

點擊推送消息時默認會觸發(fā)出下面的action 事件:

Intent intent = new Intent();
intent.setFlags(intent.FLAG_ACTIVITY_NEW_TASK);

Uri.Builder uriBuilder = Uri.parse("rong://" + this.getPackageName()).buildUpon();
uriBuilder.appendPath("push_message")
        .appendQueryParameter("targetId", targetId)
        .appendQueryParameter("pushData", pushData)
        .appendQueryParameter("pushId", pushId)
        .appendQueryParameter("extra", extra);

startActivity(intent);

這時我們可以在你的 AndroidManifest.xml ?面配置了 A activity 攔截這個 action, 那么點擊時就會跳轉到 activity A。

<activity
android:name="A"
android:launchMode="singleTask"
android:screenOrientation="portrait">

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />

    <data
        android:host="你的包名"
        android:pathPrefix="/push_message"
        android:scheme="rong" />
</intent-filter>
</activity>

詳細內容請點擊:Android 推送服務開發(fā)指南

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容