日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

輔助彈窗接入

本章節介紹接入廠商通道后如何使用輔助彈窗。

前言

在廠商通道收到推送通知消息并展示到系統通知欄后,輔助彈窗會協助開發者處理推送的數據,包括:

  • 解密推送數據

  • 將推送的明文數據傳給App處理

App開發接入輔助彈窗請參考App集成輔助彈窗

后端通過輔助通道推送通知消息請參考服務端配置

準備工作

App集成輔助彈窗

1 自定義實現輔助彈窗Activity

1.1 自定義實現輔助彈窗中轉Activity

重要
  • 這個方案介紹的是自定義Activity作為中轉Activity,輔助獲取推送的額外參數,額外參數里必須配置指定Activity的路由信息,您可以根據這些路由信息跳轉到指定Activity。

  • 如果您通過推送通知要打開的Activity頁面較多的話,建議用這種方式。

  • 在推送時,配置的打開的頁面要配置成實現的輔助彈窗中轉Activity,且真正要打開的指定Activity路由信息需要配置在額外參數中。

  1. 自定義Activity繼承自AndroidPopupActivity或者通過PopupNotifyClick實現。

  2. 實現AndroidPopupActivity的抽象方法onSysNoticeOpened,該方法是成功解密推送數據后的回調方法,在該方法內可以獲取到通知的標題、內容和額外參數,您可以根據這些參數跳轉到具體的Activity。

  3. 重寫AndroidPopupActivityonNotPushData方法,該方法是沒有獲取到推送數據的回調方法。

  4. 重寫AndroidPopupActivityonParseFailed方法,該方法是對推送數據解密失敗的回調方法。

方案一:自定義Activity繼承自AndroidPopupActivity
import android.content.Intent
import android.os.Bundle
import com.alibaba.sdk.android.push.AndroidPopupActivity

class PopupPushActivity : AndroidPopupActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }

    /**
     * 實現通知打開回調方法,獲取通知相關信息
     * @param title     標題
     * @param summary   內容
     * @param extMap    額外參數
     */
    override fun onSysNoticeOpened(title: String, summary: String, extMap: Map<String, String>) {
        //TODO 獲取推送參數,跳轉到指定頁面
        finish()
    }

    /**
     * 不是推送數據的回調
     *
     * @param intent
     */
    override fun onNotPushData(intent: Intent) {
        super.onNotPushData(intent)
        finish()
    }

    /**
     * 是推送數據,但是又解密失敗時的回調
     *
     * @param intent
     */
    override fun onParseFailed(intent: Intent) {
        super.onParseFailed(intent)
        finish()
    }
}
import android.content.Intent;
import android.os.Bundle;

import com.alibaba.sdk.android.push.AndroidPopupActivity;

import java.util.Map;

public class PopupPushActivity extends AndroidPopupActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    /**
     * 實現通知打開回調方法,獲取通知相關信息
     * @param title     標題
     * @param summary   內容
     * @param extMap    額外參數
     */
    @Override
    protected void onSysNoticeOpened(String title, String summary, Map<String, String> extMap) {
        //TODO 獲取推送參數,跳轉到指定頁面
        finish();
    }

    /**
     * 不是推送數據的回調
     *
     * @param intent
     */
    @Override
    public void onNotPushData(Intent intent) {
        super.onNotPushData(intent);
        finish();
    }

    /**
     * 是推送數據,但是又解密失敗時的回調
     *
     * @param intent
     */
    @Override
    public void onParseFailed(Intent intent) {
        super.onParseFailed(intent);
        finish();
    }
}
方案二:自定義Activity實現PopupNotifyClick
import android.app.Activity
import android.content.Intent
import android.os.Bundle
import com.alibaba.sdk.android.push.popup.OnPushParseFailedListener
import com.alibaba.sdk.android.push.popup.PopupNotifyClick
import com.alibaba.sdk.android.push.popup.PopupNotifyClickListener


class PopupPushActivity : Activity(), PopupNotifyClickListener,
    OnPushParseFailedListener {
    private val mPopupNotifyClick = PopupNotifyClick(this)
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        mPopupNotifyClick.onCreate(this, intent)
    }

    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        mPopupNotifyClick.onNewIntent(intent)
    }

    /**
     * 實現通知打開回調方法,獲取通知相關信息
     * @param title     標題
     * @param summary   內容
     * @param extMap    額外參數
     */
    override fun onSysNoticeOpened(title: String, summary: String, extMap: Map<String, String>) {
        //TODO 獲取推送參數,跳轉到指定頁面
        finish()
    }

    /**
     * 不是推送數據的回調
     *
     * @param intent
     */
    override fun onNotPushData(intent: Intent) {
        finish()
    }

    /**
     * 是推送數據,但是又解密失敗時的回調
     *
     * @param intent
     */
    override fun onParseFailed(intent: Intent) {
        finish()
    }
}
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

import com.alibaba.sdk.android.push.popup.OnPushParseFailedListener;
import com.alibaba.sdk.android.push.popup.PopupNotifyClick;
import com.alibaba.sdk.android.push.popup.PopupNotifyClickListener;

import java.util.Map;

public class PopupPushActivity extends Activity implements PopupNotifyClickListener, OnPushParseFailedListener {
    private final PopupNotifyClick mPopupNotifyClick = new PopupNotifyClick(this);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mPopupNotifyClick.onCreate(this, getIntent());
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        mPopupNotifyClick.onNewIntent(intent);
    }

    /**
     * 實現通知打開回調方法,獲取通知相關信息
     * @param title     標題
     * @param summary   內容
     * @param extMap    額外參數
     */
    @Override
    public void onSysNoticeOpened(String title, String summary, Map<String, String> extMap) {
        //TODO 獲取推送參數,跳轉到指定頁面
        finish();
    }

    /**
     * 不是推送數據的回調
     *
     * @param intent
     */
    @Override
    public void onNotPushData(Intent intent) {
        finish();
    }

    /**
     * 是推送數據,但是又解密失敗時的回調
     *
     * @param intent
     */
    @Override
    public void onParseFailed(Intent intent) {
        finish();
    }
}

1.2 已有Activity實現輔助彈窗

重要
  • 這個方案介紹的是已有Activity直接實現輔助彈窗,點擊推送通知直接打開已有Activity。

  • 如果您通過推送通知要打開的Activity頁面較少的話,也可以用這種方式。

  • 在推送時,配置的打開的頁面要配置成已經實現輔助彈窗的Activity。

一般App開發有自己的BaseActivity,所以這里只介紹使用PopupNotifyClick實現輔助彈窗。

import android.app.Activity
import android.content.Intent
import android.os.Bundle
import com.alibaba.sdk.android.push.popup.OnPushParseFailedListener
import com.alibaba.sdk.android.push.popup.PopupNotifyClick
import com.alibaba.sdk.android.push.popup.PopupNotifyClickListener


class PopupPushActivity : Activity(), PopupNotifyClickListener,
    OnPushParseFailedListener {
    private val mPopupNotifyClick = PopupNotifyClick(this)
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        mPopupNotifyClick.onCreate(this, intent)
    }

    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        mPopupNotifyClick.onNewIntent(intent)
    }

    /**
     * 實現通知打開回調方法,獲取通知相關信息
     * @param title     標題
     * @param summary   內容
     * @param extMap    額外參數
     */
    override fun onSysNoticeOpened(title: String, summary: String, extMap: Map<String, String>) {
        //TODO 獲取推送參數,根據業務需求處理
        finish()
    }

    /**
     * 不是推送數據的回調
     *
     * @param intent
     */
    override fun onNotPushData(intent: Intent) {
        //TODO 沒有推送數據,可能是異常調用,需要異常處理
    }

    /**
     * 是推送數據,但是又解密失敗時的回調
     *
     * @param intent
     */
    override fun onParseFailed(intent: Intent) {
        //TODO 推送數據解密異常,需要異常處理
    }
}
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

import com.alibaba.sdk.android.push.popup.OnPushParseFailedListener;
import com.alibaba.sdk.android.push.popup.PopupNotifyClick;
import com.alibaba.sdk.android.push.popup.PopupNotifyClickListener;

import java.util.Map;

public class PopupPushActivity extends Activity implements PopupNotifyClickListener, OnPushParseFailedListener {
    private final PopupNotifyClick mPopupNotifyClick = new PopupNotifyClick(this);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mPopupNotifyClick.onCreate(this, getIntent());
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        mPopupNotifyClick.onNewIntent(intent);
    }

    /**
     * 實現通知打開回調方法,獲取通知相關信息
     * @param title     標題
     * @param summary   內容
     * @param extMap    額外參數
     */
    @Override
    public void onSysNoticeOpened(String title, String summary, Map<String, String> extMap) {
        //TODO 獲取推送參數,根據業務需求處理
        finish();
    }

    /**
     * 不是推送數據的回調
     *
     * @param intent
     */
    @Override
    public void onNotPushData(Intent intent) {
        //TODO 沒有推送數據,可能是異常調用,需要異常處理
        
    }

    /**
     * 是推送數據,但是又解密失敗時的回調
     *
     * @param intent
     */
    @Override
    public void onParseFailed(Intent intent) {
        //TODO 推送數據解密異常,需要異常處理
    }
}

2 注冊輔助彈窗Activity

AndroidManifest.xml文件中注冊您自定義實現的輔助彈窗Activity,在application節點下添加。

<activity
    android:name="輔助彈窗Activity的全限定類名"
    android:exported="true">
    
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data
            android:host="${applicationId}"
            android:path="/thirdpush"
            android:scheme="agoo" />
    </intent-filter>
    
</activity>
重要

android:exported=true必須配置。

服務端配置

服務端可以使用OpenAPI,也可以使用阿里云控制臺。

重要

使用移動推送進行廠商通道推送時,服務端必須進行以下配置,服務端參數不設置,不會給廠商通道進行推送。

1、OpenAPI推送配置

  • OpenAPI 2.0的推送高級接口提供了AndroidPopupActivityAndroidPopupTitleAndroidPopupBody三個參數,分別用于設置輔助彈窗通知打開時跳轉的Activity、通知標題以及通知內容(注意:StoreOffline參數也需要設置為true);

  • 輔助彈窗僅在當前廠商通道設備的應用后臺進程被清理時生效,對非接入廠商通道設備和在線的設備不生效。

  • 當輔助彈窗生效時,推送接口的Title、Body、AndroidActivity以及額外參數設置中的功能性設置(如聲音、震動等)都不起作用;

服務端配置示例:

PushRequest pushRequest = new PushRequest();
// 其余設置省略
// 通知
pushRequest.setPushType("NOTICE");
// 標題
pushRequest.setTitle(dateFormat.format(new Date()));
// 內容
pushRequest.setBody("PushRequest body");
// 額外參數
pushRequest.setAndroidExtParameters("{\"k1\":\"android\",\"k2\":\"v2\"}");
// 設置輔助彈窗打開Activity,填寫Activity類名,需包名+類名
pushRequest.setAndroidPopupActivity("*****");
// 設置輔助彈窗通知標題
pushRequest.setAndroidPopupTitle("*****");
// 設置輔助彈窗通知內容
pushRequest.setAndroidPopupBody("*****");
// 72小時后消息失效, 不會再發送
String expireTime = ParameterHelper.getISO8601Time(new Date(System.currentTimeMillis() + 72 * 3600 * 1000)); 
pushRequest.setExpireTime(expireTime);
// 離線消息是否保存,若保存, 在推送時候,用戶即使不在線,下一次上線則會收到
pushRequest.setStoreOffline(true); 
//推送消息類型時,設置true,設備離線時會自動把消息轉成輔助通道的通知
pushRequest.setAndroidRemind(true);

2、阿里云控制臺推送配置

登錄移動研發平臺EMAS,選擇移動推送后選擇對應的應用,在左側導航欄選擇創建消息>推送通知,在高級設置(選填)中,設置廠商通道必要參數,如下圖所示。

輔助通道控制臺配置