La description:
Impossible d'obtenir pushToken, aucun utilisateur ios sur le tableau de bord, j'essaie tout, je recrée des certificats, des clés, j'utilise des outils de provisionnement, j'essaye différents appareils réels.
Sur Android, tout fonctionne comme un charme.
Environnement
latest 3.2.1
npm i --save react-native-onesignal
Version 9.3 (9E145)
mon paquet.json
Étapes pour reproduire le problème :
code js
export default class App extends Component {
componentWillMount() {
OneSignal.setLogLevel(7, 0);
OneSignal.init('here my ONESIGNAL APP ID - I checked it twenty times', { kOSSettingsKeyAutoPrompt: true });
OneSignal.setSubscription(true);
OneSignal.enableSound(true);
OneSignal.enableVibrate(true);
OneSignal.inFocusDisplaying(2);
OneSignal.getPermissionSubscriptionState((response) => {
console.log('Received permission subscription state: ', response);
});
}
J'ai reçu une réponse de getPermissionSubscriptionState
:
{
emailAddress:null
emailSubscribed:false
emailUserId:null
hasPrompted:true
notificationsEnabled:true
pushToken:null
subscriptionEnabled:false
userId:null
userSubscriptionEnabled:true
}
Bien sûr, aucun utilisateur ios sur le tableau de bord.
Je vois des journaux supplémentaires dans xcode
Called init with app ID: (null)
2018-05-14 11:21:03.636571+0300 rbtse[15320:6135130] Called init with app ID: xxxxxx-ea78-4b29-8b91-xxxxxxxxx (I changed app id)
2018-05-14 11:21:03.636758+0300 rbtse[15320:6135130] DEBUG: Downloading iOS parameters for this application
2018-05-14 11:21:03.642023+0300 rbtse[15320:6135181] VERBOSE: getNotificationTypes:mSubscriptionStatus: -1
2018-05-14 11:21:03.643531+0300 rbtse[15320:6135130] VERBOSE: registerForPushNotifications Called:waitingForApnsResponse: 1
2018-05-14 11:21:03.690752+0300 rbtse[15320:6135130] VERBOSE: oneSignalApplicationWillResignActive
2018-05-14 11:21:03.986984+0300 rbtse[15320:6135181] VERBOSE: network response (OSRequestGetIosParams): {
fba = 1;
}
2018-05-14 11:21:05.778574+0300 rbtse[15320:6135130] VERBOSE: oneSignalApplicationDidBecomeActive
2018-05-14 11:21:05.778918+0300 rbtse[15320:6135130] VERBOSE: getNotificationTypes:mSubscriptionStatus: -1
2018-05-14 11:21:05.792324+0300 rbtse[15320:6135130] VERBOSE: updateNotificationTypes called: 15
2018-05-14 11:21:05.792388+0300 rbtse[15320:6135130] VERBOSE: startedRegister: 1
J'ai trouvé le même problème https://github.com/geektimecoil/react-native-onesignal/issues/502
J'essaie donc de rétrograder vers https://github.com/geektimecoil/react-native-onesignal/tree/3.1.4 - suivez toutes les étapes et maintenant cela fonctionne !
Donc la dernière version ne fonctionne pas
Bonjour, lorsque vous installez la dernière version de react-native-onesignal (3.2.2) et exécutez react-native link react-native-onesignal
, pouvez-vous ouvrir le projet Xcode et vérifier que RCTOneSignal s'affiche correctement en tant que dépendance dans votre projet comme celui-ci ?
pushToken
et userId
sont également nuls pour moi sur les appareils réels (en mode release)
[email protected]:
version "3.2.2"
resolved "https://registry.yarnpkg.com/react-native-onesignal/-/react-native-onesignal-3.2.2.tgz#d1ae1e95cc301b940120de29a29ae90f478c9a97"
dependencies:
invariant "^2.2.2"
(ce n'est pas dans mon podfile cette fois)
@Jarred-Sumner Essayez de désinstaller l'application de votre appareil, puis réinstallez-la, cela vous invite-t-il à accepter les autorisations de notification push ?
De plus, juste pour vérifier, vous avez activé la fonctionnalité de notifications push dans Paramètres du projet > Capacités, n'est-ce pas ?
@Jarred-Sumner Essayez de désinstaller l'application de votre appareil, puis réinstallez-la, cela vous invite-t-il à accepter les autorisations de notification push ?
Oui
De plus, juste pour vérifier, vous avez activé la fonctionnalité de notifications push dans Paramètres du projet > Capacités, n'est-ce pas ?
Oui
J'ai rétrogradé à v3.1.4
et maintenant il envoie les pushToken
et userId
@Jarred-Sumner Juste pour mieux comprendre ce problème, les ID sont nuls, mais les notifications push fonctionnent-elles réellement ? Ils ne devraient pas, mais je voulais vérifier.
Aussi, pouvez-vous essayer de mettre à jour vers 3.2.2, initialiser avec JS et appeler OneSignal.setLogLevel(6, 0)
avant d'appeler init. Pouvez-vous me dire si vous voyez des erreurs imprimées sur la console ?
Le problème persiste sur 3.2.2.
La configuration du niveau de journal imprime la sortie suivante
Appelé init avec l'ID d'application : (null)
(Puis quelque part ci-dessous dans les journaux)
Appelé init avec l'ID d'application : (my-app-id)
Mais userId est toujours nul. J'ai inclus la bibliothèque en utilisant CocoaPods si cela peut aider
@hhunaid, il est prévu que l'ID de l'application soit nul la première fois (nous devrions peut-être supprimer cette première instruction de journal pour éviter toute confusion).
Il est également prévu que l'ID utilisateur soit nul jusqu'à ce que l'utilisateur accepte l'autorisation push sur un véritable appareil iOS. Pouvez-vous confirmer que c'est le cas ? Si tel est le cas, pouvez-vous publier un lien vers au moins 15 secondes de sortie de journal de Xcode avec ce niveau de journal (assurez-vous d'appeler setLogLevel avant d'appeler init)
@ Nightsd01 ce n'est pas seulement l'instruction LOG. Il y a en fait un appel à l'initialiseur OneSignal avec null appId. Je viens de vérifier que si je supprime cette ligne d'initialisation dans la méthode initOneSignal
, tout fonctionne.
@hhunaid oui, il est prévu que le premier appel à l'initialiseur soit avec un ID d'application nul, c'est le nombre de travaux de notre SDK wrapper. Vous dites que si vous supprimez ce premier appel, « tout fonctionne »... ?
Afin d'exclure d'autres modifications que vous avez pu apporter, pouvez-vous à nouveau décommenter initOneSignal pour vérifier qu'il ne fonctionne plus... ?
Pouvez-vous publier votre package.json
afin que je puisse voir quelles dépendances vous utilisez ?
J'ai essayé avec et sans le morceau de code mentionné et maintenant je peux dire avec confiance que c'est bien le coupable. Au moins dans mon application.
Le supprimer me donne un playerId valide et mon appareil s'affiche sur le tableau de bord OneSignal. Ce qui n'arrivait pas avant.
Pareil ici. PushToken est toujours nul. Je vais coller la capture d'écran ci-dessous.
mon package.json est comme ci-dessous.
"abortcontroller-polyfill": "^1.1.9",
"immutability-helper": "^2.7.0",
"mobx": "^4.2.1",
"mobx-react": "^5.1.2",
"moment": "^2.22.1",
"react": "^16.3.2",
"react-native": "^0.55.4",
"react-native-amplitude-analytics": "^0.1.15",
"react-native-animatable": "^1.2.4",
"react-native-audio-recorder-player": "^1.0.15",
"react-native-iap": "^1.0.1",
"react-native-image-picker": "^0.26.10",
"react-native-linear-gradient": "^2.4.0",
"react-native-loading-spinner-overlay": "^0.5.2",
"react-native-localization": "^1.0.7",
"react-native-marquee": "^0.3.1",
"react-native-modalbox": "^1.4.2",
"react-native-onesignal": "^3.2.2",
"react-native-permissions": "^1.1.1",
"react-native-pinch-zoom-view": "^0.1.6",
"react-native-sentry": "^0.36.0",
"react-native-status-bar-height": "^2.0.0",
"react-native-swiper": "^1.5.13",
"react-navigation": "^2.0.1",
"serializr": "^1.2.0"
@dooboolab Vous utilisez l'initialisation JS, n'est-ce pas ?
Pouvez-vous me dire où dans votre projet vous appelez OneSignal.init()
?
Pour la vie de moi, je ne peux pas reproduire ce problème. Si quelqu'un pouvait reproduire ce problème dans un projet de démonstration et le publier, nous serions en mesure de résoudre ce problème _beaucoup_ plus rapidement.
@tavriaforever salut, alors rétrograder et appeler onesignal.init('app id') fonctionnerait?
même problème ici, une solution ?
"react": "16.3.1",
"react-native": "0.55.3",
"react-native-onesignal": "^3.2.0",
@Nightsd01
J'appelle ma racine index.tsx
où elle enveloppe RootStackNavigator.
class App extends React.Component {
public componentDidMount() {
OneSignal.init('****');
OneSignal.addEventListener('received', this.onReceived);
OneSignal.addEventListener('opened', this.onOpened);
OneSignal.addEventListener('ids', this.onIds);
OneSignal.enableVibrate(true);
OneSignal.enableSound(true);
.....
public render() {
return (
<Provider
store={ appStore }
user={ userStore }
player={ playerStore }
>
<View style={styles.container}>
<RootStackNavigator />
</View>
</Provider>
);
Je souffre toujours d'avoir un jeton nul.
@ Nightsd01 Idem ici.
Supprimer init avec appId:nil dans RCToneSignal.m a aidé
@ Nightsd01 Je viens d'essayer sur Android, et Android a le même problème.
Je suppose que l'initialisation côté JS n'était pas une si bonne idée.
Je comprends cependant que cela permet aux développeurs Web ou aux personnes sans expérience native d'utiliser facilement la bibliothèque.
@hhunaid semble-t-il que je devrais rétrograder ?
@dooboolab @408dev oui, je recommanderais que si vous rencontrez ce problème, vous rétrogradez à 3.1.4 pour le moment jusqu'à ce que nous résolvions ce problème. Excuses. Gardez à l'esprit que JS init n'était pas pris en charge dans 3.1.4, vous voudrez donc suivre le guide pour ajouter le code d'initialisation natif à votre projet.
@hhunaid, cela facilite en effet les choses pour les développeurs de réaction.
En tant que mise à jour, nous avons pu reproduire ce problème et en avons identifié la cause, nous allons bientôt déployer une mise à jour pour le résoudre.
Salut tout le monde - ce problème a été résolu dans un nouveau PR (#512). Nous nous attendons à ce que cela soit fusionné et qu'une nouvelle mise à jour soit publiée d'ici une heure ou deux. Merci pour votre patience!
Salut tout le monde @dooboolab @hhunaid @408dev @el-lsan @neo125874 @Jarred-Sumner
La nouvelle mise à jour (3.2.3) a été publiée et devrait résoudre ce problème. N'hésitez pas à me faire savoir si vous revoyez ce problème (ou d'autres problèmes) et je serai ravi d'enquêter.
@Nightsd01
j'utilise
"react": "16.3.1",
"react-native": "0.55.3",
"react-native-onesignal": "^3.2.3",
sur un appareil réel, tout fonctionne comme prévu, mais je reçois toujours null userId
au hasard sur simulators
et je ne vois aucun appareil ajouté à ma liste de joueurs ! (jusqu'à présent, j'ai testé plus de 50 fois et seulement 2 fois j'ai fonctionné !)
J'ai essayé de nettoyer et de reconstruire l'application ainsi que rm -rf node_modules/ && yarn cache clean && yarn install && yarn start -- --reset-cache
mais je n'obtiens toujours pas le statut attendu de OneSignal.getPermissionSubscriptionState
{ userSubscriptionEnabled: true,
subscriptionEnabled: false,
pushToken: null,
emailAddress: null,
userId: null,
hasPrompted: true,
notificationsEnabled: true,
emailUserId: null,
emailSubscribed: false }
@el-lsan qui est attendu. C'est la restriction d'Apple, pas la nôtre. Les simulateurs iOS ne peuvent pas recevoir de notifications push. Ils n'obtiendront pas de jeton push APNS et ne seront pas enregistrés auprès de OneSignal.
Si vous testez les notifications push, vous devez le faire sur un vrai appareil iOS, que vous utilisiez ou non OneSignal.
@Nightsd01
Désolé, mon dernier message n'était pas si clair. Je ne voulais pas dire recevoir la poussée sur les simulateurs, mais obtenir la liste du dispositif de simulation.
Donc, après OneSignal.init('ONESIGNAL_APP_ID');
je m'attends à ce que l'appareil de simulation soit répertorié dans mes utilisateurs abonnés avec l'étiquette Ios Simulator Unsupported
comme vous le voyez dans la capture d'écran suivante :
Voici la réponse de OneSignal.getPermissionSubscriptionState pour le simulateur répertorié :
Mais la plupart du temps, l'initialisation échoue sur les simulateurs et je ne le vois pas sous https://onesignal.com/apps/ONESIGNAL_APP_ID/players
@el-lsan J'ai le même problème que le jeton push est nul, avez-vous trouvé une solution ?
@adirzoari après la mise à jour vers "react-native-onesignal": "^3.2.3"
le problème a été résolu pour les appareils réels, si vous vouliez recevoir un jeton nul pour le simulateur, je pense que c'est comme ça que c'est censé être.
D'un autre côté, je m'attends userId
ce que
J'utilise un appareil réel et j'obtiens un jeton nul
@adirzoari C'est bizarre ! Essayez de vider le cache rm -rf node_modules/ && yarn cache clean && yarn install && yarn start -- --reset-cache
et vérifiez les étapes
@el-lsan pushToken est nul mais dans userId a une chaîne unique. en un seul signal je reçois
Erreur de bibliothèque de services Google Play
J'ai eu le même problème avec 3.2.7 (simulateurs - OK/appareils réels - NOK) mais le nettoyage du cache comme suggéré par @el-lsan l'a fait fonctionner sans problème
@ Nightsd01 Idem ici.
Supprimer init avec appId:nil dans RCToneSignal.m a aidé
salut, voudriez-vous ajouter l'image du changement suivant.
@adirzoari après la mise à jour vers
"react-native-onesignal": "^3.2.3"
le problème a été résolu pour les appareils réels, si vous vouliez recevoir un jeton nul pour le simulateur, je pense que c'est comme ça que c'est censé être.D'un autre côté, je m'attends
userId
ce que
salut, je reçois pushToken: null dans le simulateur et je n'obtiens que l'ID utilisateur du simulateur.
Vais-je obtenir le pushToken pour le périphérique réel, veuillez confirmer (si je dois m'inquiéter du problème nul de pushToken dans le simulateur ou non ?).
Commentaire le plus utile
Salut tout le monde @dooboolab @hhunaid @408dev @el-lsan @neo125874 @Jarred-Sumner
La nouvelle mise à jour (3.2.3) a été publiée et devrait résoudre ce problème. N'hésitez pas à me faire savoir si vous revoyez ce problème (ou d'autres problèmes) et je serai ravi d'enquêter.