amplify-js: PushNotification.onRegister not generating a token. PushNotication from @aws-amplify/pushnotification doesn't have configure, onRegeister or onNotification methods on it?
** Which Category is your question related to? ** @aws-amplify/pushnotification
** What AWS Services are you utilizing? ** AWS PinPoint, Analytics
** Provide additional details e.g. code snippets ** “dependencies”: { “@aws-amplify/analytics”: “^1.2.10”, “@aws-amplify/pushnotification”: “^1.0.22”, “aws-amplify-react-native”: “^2.1.7”, “react”: “16.6.3”, “react-native”: “0.58.3” },
I followed the instructions on AWS-Amplify’s page to setup push notifications on React Native IOS but I noticed that I’m not getting a token back after some debugging noticed that Notification import is doesn’t have configure, onRegeister or onNotification methods
My App.js file
`import React, { Component } from “react”; import { StyleSheet, Text, View, PushNotificationIOS, } from “react-native”;
import aws_exports from “./aws-exports”; import Analytics from “@aws-amplify/analytics”; import PushNotification from “@aws-amplify/pushnotification”;
// PushNotification need to work with Analytics Analytics.configure(aws_exports); Analytics.enable(); PushNotification.configure(aws_exports);
type Props = {}; export default class App extends Component<Props> {
componentDidMount(){ console.log(‘PN’,PushNotification); // get the notification data when notification is received PushNotification.onNotification(notification => { // Note that the notification object structure is different from Android and IOS console.log(“in app notification”, notification);
// required on iOS only (see fetchCompletionHandler docs: https://facebook.github.io/react-native/docs/pushnotificationios.html)
notification.finish(PushNotificationIOS.FetchResult.NoData);
});
// get the registration token
PushNotification.onRegister(token => {
console.log("in app registration", token);
});
// get the notification data when notification is opened
PushNotification.onNotificationOpened(notification => {
console.log("the notification is opened", notification);
});
} render() { return ( <View style={styles.container}> <Text style={styles.welcome}>Welcome to React Native!</Text> <Text style={styles.instructions}>To get started, edit App.js</Text> </View> ); } }
const styles = StyleSheet.create({ container: { flex: 1, justifyContent: “center”, alignItems: “center”, backgroundColor: “#F5FCFF” }, welcome: { fontSize: 20, textAlign: “center”, margin: 10 }, instructions: { textAlign: “center”, color: “#333333”, marginBottom: 5 } }); `
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Reactions: 5
- Comments: 21 (1 by maintainers)
after upgrading firebase dependencies in ‘android/app/build.gradle’ I had the same issue. I found the answer here - https://github.com/aws-amplify/amplify-js/pull/2916/files#diff-1d2098d70f6a43d881eee25b70f91adb
I update “@aws-amplify/pushnotification” and got the token so -
import { NativeModules } from 'react-native';NativeModules.RNPushNotification.getToken(token => console.log(token))Seems that the function changed in the latest version, so now you need to pass an error callback also
onRegister() in Android is never called, I can also confirm that.
onRegister() method calls once only, when the app/device is completely new.
You can read your device token from AsyncStorage.
import aws_export from 'aws_export'AsyncStorage.getItem('push_token' + aws_export.aws_mobile_analytics_app_id)Why this issue was closed if it’s not solved?
I’m facing the same issue. Following @kolosov507 answer, I’m now able to retrieve the token 👍
Thanks.
I have the same problem!
onReristermethod is never triggered. Any updates about this issue?@viniciusfont did you put the configuration outside your component ?
How can you close an issue without a proper solution?
I put it in the App.js outside the App class component
The device successfully appears at Pinpoint dashboard (as a endpoint without a address), but the @amplify/push_notifications module doesn’t get the FCM token to update the endpoint (neither onRegister is called)
The below solution worked for me for a while but not now
Did anyone find another way?