How to use Presence channel for pusher in flutter

I am using pusher_channels_flutter package to get real time notifications. I want to use Presence Channel for Pusher in flutter, below:

await pusher.subscribe(` `
  channelName: "presence-chat", 
  onEvent: (event) {
    print('Presence chat: $jsonDecode($event)');
  },
  onMemberAdded: (member) {
    print("Member added: $member");
  },
  onMemberRemoved: (member) {
    print("Member removed: $member");
  }
);

But I got this error: onSubscriptionError: Invalid response from ChannelAuthorizer: no user_id key in channel_data object: null Exception: com.pusher.client.AuthorizationFailureException: Invalid response from ChannelAuthorizer: no user_id key in channel_data object: null

What should I do?

I did connected to pusher blow:

await pusher.init(
  apiKey: '914d89e41a8078c7650e',
  cluster: 'ap1',
  onConnectionStateChange: onConnectionStateChange,
  onError: onError,
  onSubscriptionSucceeded: onSubscriptionSucceeded,
  onEvent: onEvent,
  onSubscriptionError: onSubscriptionError,
  onDecryptionFailure: onDecryptionFailure,
  onMemberAdded: onMemberAdded,
  onMemberRemoved: onMemberRemoved,
  onSubscriptionCount: onSubscriptionCount,
  onAuthorizer: (channelName, socketId, options) => onAuthorizer(channelName, socketId, options),
);
void onConnectionStateChange(dynamic currentState, dynamic previousState) {
  log("Connection: $currentState");
}
void onError(String message, int? code, dynamic e) {
  log("onError: $message code: $code exception: $e");
}
void onEvent(PusherEvent event) {
  log("onEvent: $event");
}
void onSubscriptionSucceeded(String channelName, dynamic data) {
  log("onSubscriptionSucceeded: $channelName data: $data");
  final me = pusher.getChannel(channelName)?.me;
  log("Me: $me");
}
void onSubscriptionError(String message, dynamic e) {
  log("onSubscriptionError: $message Exception: $e");
}
void onDecryptionFailure(String event, String reason) {
  log("onDecryptionFailure: $event reason: $reason");
}
void onMemberAdded(String channelName, PusherMember member) {
  log("onMemberAdded: $channelName user: $member");
}
void onMemberRemoved(String channelName, PusherMember member) {
  log("onMemberRemoved: $channelName user: $member");
}
void onSubscriptionCount(String channelName, int subscriptionCount) {
  log("onSubscriptionCount: $channelName subscriptionCount: $subscriptionCount");
}

What I should put in values of onAuthorizer map for channel_data?

Upvotes: 1

Views: 103

Answers (0)

Related Questions