1. 程式人生 > >極光推送 別名

極光推送 別名

      今天做極光推送,做完了。總結一下,方便下次檢視。

      極光推送,別名推送,可以點對點通訊。使用別名,用於給某特定使用者推送訊息。例如,註冊帳號完成後,可以用別名推送的方式,把賬戶名當作別名推送給極光伺服器,然後,伺服器請求一下極光伺服器發一條極光推送。APP傳送給極光的別名和伺服器請求的別名一定要一致。由於網路連線不穩定的原因,有一定的概率 JPush SDK 設定別名會失敗。所以要合理的處置失敗,用極光的回撥函式。遇到 6002 超時,則稍延遲重試。

這裡做一下極光呼叫setAliasAndTags(Context arg0, String arg1, Set<String

> arg2, TagAliasCallback arg3)
方法引數的解讀:

arg0:Context物件

arg1:別名

arg2:標籤名(如果是別名推送的話,這裡應該傳null)

TagAliasCallback:實現TagAliasCallback的元件物件, 該元件提實現 gotResult 方法。採用回撥機制返回執行結果,對應的引數code區分返回的狀態。如6002,為超時,延遲重試

// 這是來自 JPush Example 的設定別名的 Activity 裡的程式碼。一般 App 的設定的呼叫入口,在任何方便的地方呼叫都可以。 
private void setAlias() {
    EditText aliasEdit = (EditText) findViewById(R.id.et_alias);
    String alias = aliasEdit.getText().toString().trim();
    if (TextUtils.isEmpty(alias)) {
        Toast.makeText(PushSetActivity.this,R.string.error_alias_empty, Toast.LENGTH_SHORT).show();
        return;
    }
    if (!ExampleUtil.isValidTagAndAlias(alias)) {
        Toast.makeText(PushSetActivity.this,R.string.error_tag_gs_empty, Toast.LENGTH_SHORT).show();
        return;
    }

    // 呼叫 Handler 來非同步設定別名
    mHandler.sendMessage(mHandler.obtainMessage(MSG_SET_ALIAS, alias));
}

private final TagAliasCallback mAliasCallback = new TagAliasCallback() {
    @Override
    public void gotResult(int code, String alias, Set<String> tags) {
        String logs ;
        switch (code) {
        case 0:
            logs = "Set tag and alias success";
            Log.i(TAG, logs);
            // 建議這裡往 SharePreference 裡寫一個成功設定的狀態。成功設定一次後,以後不必再次設定了。
            break;
        case 6002:
            logs = "Failed to set alias and tags due to timeout. Try again after 60s.";
            Log.i(TAG, logs);
            // 延遲 60 秒來呼叫 Handler 設定別名
            mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SET_ALIAS, alias), 1000 * 60);
            break;
        default:
            logs = "Failed with errorCode = " + code;
            Log.e(TAG, logs);
        }
        ExampleUtil.showToast(logs, getApplicationContext());
    }
};
private static final int MSG_SET_ALIAS = 1001;
private final Handler mHandler = new Handler() {
@Override
    public void handleMessage(android.os.Message msg) {
        super.handleMessage(msg);
        switch (msg.what) {
            case MSG_SET_ALIAS:
                Log.d(TAG, "Set alias in handler.");
                // 呼叫 JPush 介面來設定別名。
                JPushInterface.setAliasAndTags(getApplicationContext(),
                                                (String) msg.obj, 
                                                 null,
                                                 mAliasCallback);
            break;
        default:
            Log.i(TAG, "Unhandled msg - " + msg.what);
        }
    }                                       
};
 參考上面官方文件的寫法,就可以寫出別名的極光推送