極光推送 別名
阿新 • • 發佈:2019-02-01
今天做極光推送,做完了。總結一下,方便下次檢視。
極光推送,別名推送,可以點對點通訊。使用別名,用於給某特定使用者推送訊息。例如,註冊帳號完成後,可以用別名推送的方式,把賬戶名當作別名推送給極光伺服器,然後,伺服器請求一下極光伺服器發一條極光推送。APP傳送給極光的別名和伺服器請求的別名一定要一致。由於網路連線不穩定的原因,有一定的概率 JPush SDK 設定別名會失敗。所以要合理的處置失敗,用極光的回撥函式。遇到 6002 超時,則稍延遲重試。
這裡做一下極光呼叫setAliasAndTags(Context arg0, String arg1, Set<String
方法引數的解讀:
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); } } };