react-native-gcm-android icon indicating copy to clipboard operation
react-native-gcm-android copied to clipboard

added popInitialNotification function

Open jawadrehman opened this issue 10 years ago • 11 comments

jawadrehman avatar Dec 25 '15 19:12 jawadrehman

This function allows you to access the "payload" sent with your notification.

jawadrehman avatar Dec 25 '15 19:12 jawadrehman

Thanks!

One question. Why don't you put popInitialNotification in public Map<String, Object> getConstants() rather than here I think putting it in getConstants will be more like official react native implementation

oney avatar Dec 26 '15 06:12 oney

@oney I didnt realize that could be done. I think that will be a better approach since then we dont need to use an event listener. Also I was thinking that we need to clear that notification after it has been "popped".

jawadrehman avatar Dec 29 '15 12:12 jawadrehman

Currently, this module uses https://github.com/Neson/react-native-system-notification to create notification in 0.1.7. You can get payload of clicked notification in DeviceEventEmitter.addListener('sysNotificationClick' listener. Please see whether it meets your requirements. I still more like use popInitialNotification way to get payload, but I prefer to handle creating notification in react-native-system-notification rather than react-native-gcm-android.

oney avatar Jan 18 '16 09:01 oney

DeviceEventEmitter.addListener('sysNotificationClick' doesnt work when the app is not already open.

jawadrehman avatar Jan 18 '16 11:01 jawadrehman

Yeah DeviceEventEmitter.addListener('sysNotificationClick'... only works when the app is open. popInitialNotification would be ideal.

RGBz avatar Jan 22 '16 17:01 RGBz

@RGBz absolutely agree with you. I will remind the author of react-native-system-notification this issue, and wait him to fix it.

oney avatar Jan 22 '16 17:01 oney

Thinking about it a bit more, a callback-based approach like this implementation of popInitialNotification or DeviceEventEmitter.addListener('sysNotificationClick'... is not what you'd want to handle opening the app via notification because it means the app will:

  1. Open up and start rendering a screen (like an apps home screen)
  2. Process the DeviceEventEmitter.addListener('sysNotificationClick'... callback
  3. Render the screen you'd want to show for the notification

The PushNotificationIOS.popInitialNotification API returns its value inline which instead of using a callback. This would allow for you to open the app right up to the screen you'd want on the first render pass.

@oney What are your thoughts? If you agree I can look into making a popInitialNotification that returns its value inline as well.

RGBz avatar Jan 22 '16 17:01 RGBz

My opinion is same as you, directly get payload from popInitialNotification like PushNotificationIOS.popInitialNotification, not from or on a callback. I have mentioned here. Because the notification is created from react-native-system-notification module, the better way of this implementation is making PR in that module instead of here.

oney avatar Jan 22 '16 17:01 oney

I agree, I'll hop over there. Thanks!

RGBz avatar Jan 22 '16 17:01 RGBz

I agree a more inline approach would have been suitable. Wasn't sure how to make that work.

jawadrehman avatar Jan 25 '16 10:01 jawadrehman