极光推送 别名

      今天做极光推送,做完了。总结一下,方便下次查看。

      极光推送,别名推送,可以点对点通讯。使用别名,用于给某特定用户推送消息。例如,注册帐号完成后,可以用别名推送的方式,把账户名当作别名推送给极光服务器,然后,服务器请求一下极光服务器发一条极光推送。APP发送给极光的别名和服务器请求的别名一定要一致。由于网络连接不稳定的原因,有一定的概率 JPush SDK 设置别名会失败。所以要合理的处置失败,用极光的回调函数。遇到 6002 超时,则稍延迟重试。

这里做一下极光调用setAliasAndTags(Context arg0, String arg1, Set 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 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);
        }
    }                                       
};
 参考上面官方文档的写法,就可以写出别名的极光推送

    

你可能感兴趣的:(极光推送 别名)