首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >推送android onEvent未被调用

推送android onEvent未被调用
EN

Stack Overflow用户
提问于 2016-01-03 22:09:11
回答 2查看 1.2K关注 0票数 1

我使用的是pusher-java-client 1.0.2 (与1.0.0相同)。android客户端订阅了一个频道,但不会触发事件(不调用onEvent)。而在我的js客户端中,事件确实会为相同的事件触发。

代码语言:javascript
复制
    // Create a new Pusher instance
    mPusher = new Pusher(Defines.PUSHER_APP_KEY);

    mPusher.connect(new ConnectionEventListener() {
        @Override
        public void onConnectionStateChange(ConnectionStateChange change) {
            Logger.i("pusher: State changed to " + change.getCurrentState() +
                    " from " + change.getPreviousState());
        }

        @Override
        public void onError(String message, String code, Exception e) {
            Logger.e("pusher: There was a problem connecting! msg:" + message);
        }
    }, ConnectionState.ALL);

    Channel channel = mPusher.subscribe("test_chan", new ChannelEventListener() {
        @Override
        public void onSubscriptionSucceeded(String channel) {
            Logger.i("pusher: subscribed");
        }

        @Override
        public void onEvent(String channel, String event, String data) {
            Logger.i("pusher: channel=" + channel + " event=" + " data=" + data);
        }
    }, "test_event");

发送一些事件后的输出日志:

01-03 15:47:02.884推流器:状态从已断开改为正在连接

01-03 15:47:04.403推流器:状态从连接变为已连接

01-03 15:47:04.709推送:已订阅

在"test_chan“中发布"test_event”时,我的onEvent回调没有触发的原因可能是什么?

EN

回答 2

Stack Overflow用户

发布于 2016-01-20 14:11:09

您必须在eventName前添加'client‘并使用 '-

代码语言:javascript
复制
Channel channel = mPusher.subscribe("test-chan",this, "client-test-event");

将ChannelEventListener与Activity一起使用

代码语言:javascript
复制
public class YourActivity extends AppCompatActivity implements ChannelEventListener{

...

@Override
            public void onSubscriptionSucceeded(String channel) {
                Logger.i("pusher: subscribed");
            }

            @Override
            public void onEvent(String channel, String event, String data) {
                Logger.i("pusher: channel=" + channel + " event=" + " data=" + data);
            }

}

试着这样实现它会起作用;让我知道它是否会对你有帮助:)

票数 0
EN

Stack Overflow用户

发布于 2020-10-22 19:20:11

代码语言:javascript
复制
 // Create a new Pusher instance

    HttpAuthorizer authorizer = new HttpAuthorizer("https://example.com");

    PusherOptions options = new PusherOptions().setCluster("mt1")
            .setEncrypted(true)
            .setWsPort(6001)
            .setWssPort(6001)
            .setAuthorizer(authorizer)
            .setHost("example.com");
    pusher = new Pusher("your-key", options);

    //connect
    pusher.connect(new ConnectionEventListener() {
        @Override
        public void onConnectionStateChange(ConnectionStateChange change) {
            Log.i(TAG, "State changed from " + change.getPreviousState() +
                    " to " + change.getCurrentState());
        }

        @Override
        public void onError(String message, String code, Exception e) {
            Log.i(TAG, "There was a problem connecting! " +
                    "\ncode: " + code +
                    "\nmessage: " + message +
                    "\nException: " + e
            );
        }
    }, ConnectionState.ALL);

    // Subscribe to a channel
    // Bind to listen for events
    pusher.subscribe("channel-name").bind("event-name", new ChannelEventListener() {
        @Override
        public void onSubscriptionSucceeded(String channelName) {

            Log.d(TAG, "onSubscriptionSucceeded: ");
        }

        @Override
        public void onEvent(PusherEvent event) {
            Log.d(TAG, "onEvent: data " + event.getData() + " user id " + event.getUserId());


        }
    });

    // Reconnect, with all channel subscriptions and event bindings automatically recreated
    pusher.connect();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34577400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档