Beschreibung:
PushToken kann nicht abgerufen werden, niemand iOS-Benutzer auf dem Dashboard, ich versuche alles, ich erstelle Zertifikate, Schlüssel neu, verwende Bereitstellungstools, probiere verschiedene echte Geräte aus.
Auf Android funktioniert alles wie ein Zauber.
Umfeld
latest 3.2.1
npm i --save react-native-onesignal
Version 9.3 (9E145)
mein Paket.json
Schritte zum Reproduzieren des Problems:
js-Code
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);
});
}
Ich habe eine Antwort von getPermissionSubscriptionState
:
{
emailAddress:null
emailSubscribed:false
emailUserId:null
hasPrompted:true
notificationsEnabled:true
pushToken:null
subscriptionEnabled:false
userId:null
userSubscriptionEnabled:true
}
Natürlich kein iOS-Benutzer auf dem Dashboard.
Zusätzlich sehe ich Protokolle in 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
Ich habe das gleiche Problem gefunden https://github.com/geektimecoil/react-native-onesignal/issues/502
Also versuche ich auf https://github.com/geektimecoil/react-native-onesignal/tree/3.1.4 downzugraden - befolge alle Schritte und jetzt funktioniert es!
Die letzte Version funktioniert also nicht
Hallo, wenn Sie die neueste Version von React-native-Onesignal (3.2.2) installieren und react-native link react-native-onesignal
ausführen, können Sie das Xcode-Projekt öffnen und überprüfen, ob RCTOneSignal korrekt als Abhängigkeit in Ihrem Projekt angezeigt wird?
pushToken
und userId
sind für mich auch auf echten Geräten null (im Release-Modus)
[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"
(ist dieses Mal nicht in meinem Podfile)
@Jarred-Sumner Versuchen Sie, die App von Ihrem Gerät zu deinstallieren, und installieren Sie sie dann erneut. Werden Sie aufgefordert, die Berechtigungen für Push-Benachrichtigungen zu akzeptieren?
Um zu überprüfen, haben Sie auch die Push-Benachrichtigungsfunktion in den Projekteinstellungen > Funktionen aktiviert, richtig?
@Jarred-Sumner Versuchen Sie, die App von Ihrem Gerät zu deinstallieren, und installieren Sie sie dann erneut. Werden Sie aufgefordert, die Berechtigungen für Push-Benachrichtigungen zu akzeptieren?
Jawohl
Um zu überprüfen, haben Sie auch die Push-Benachrichtigungsfunktion in den Projekteinstellungen > Funktionen aktiviert, richtig?
Jawohl
Ich habe auf v3.1.4
herabgestuft und jetzt werden die pushToken
und userId
@Jarred-Sumner Um dieses Problem ein wenig besser zu verstehen, sind die IDs null, aber funktionieren Push-Benachrichtigungen tatsächlich? Sie sollten nicht, aber ich wollte es noch einmal überprüfen.
Können Sie auch versuchen, auf 3.2.2 zu aktualisieren, mit JS zu initialisieren und OneSignal.setLogLevel(6, 0)
aufzurufen, bevor Sie init aufrufen. Können Sie mir sagen, ob auf der Konsole Fehler angezeigt werden?
Problem besteht weiterhin am 3.2.2.
Einstellen des Log-Levels druckt nach der Ausgabe
Init mit App-ID aufgerufen: (null)
(Dann irgendwo unten in den Protokollen)
Init mit App-ID aufgerufen: (my-app-id)
Aber userId ist immer noch null. Ich habe die Bibliothek mit CocoaPods eingebunden, wenn das hilft
@hhunaid Es wird erwartet, dass die App-ID beim ersten Mal null ist (vielleicht sollten wir diese erste Protokollanweisung entfernen, um Verwirrung zu vermeiden).
Es wird auch erwartet, dass die Benutzer-ID null ist, bis der Benutzer die Push-Berechtigung auf einem echten iOS-Gerät akzeptiert. Können Sie bestätigen, dass dies der Fall ist? Wenn ja, können Sie einen Link zu mindestens 15 Sekunden Log-Ausgabe von Xcode mit diesem Log-Level posten (stellen Sie sicher, dass Sie setLogLevel aufrufen, bevor Sie init aufrufen)
@ Nightsd01 Es ist nicht nur die LOG-Anweisung. Es gibt tatsächlich einen Aufruf des OneSignal-Initialisators mit null appId. Ich habe gerade überprüft, dass alles funktioniert, wenn ich diese Init-Zeile in der Methode initOneSignal
entferne.
@hhunaid ja, es wird erwartet, dass der erste Aufruf des Initialisierers mit einer Null-App-ID erfolgt. So funktioniert unser Wrapper-SDK. Sie sagen, dass, wenn Sie diesen ersten Anruf entfernen, "alles funktioniert" ...?
Um andere Änderungen auszuschließen, die Sie möglicherweise vorgenommen haben, können Sie initOneSignal erneut auskommentieren, um zu überprüfen, ob es nicht mehr funktioniert ...?
Können Sie Ihre package.json
posten, damit ich sehen kann, welche Abhängigkeiten Sie verwenden?
Ich habe es mit und ohne den genannten Code versucht und kann jetzt mit Sicherheit sagen, dass es tatsächlich der Übeltäter ist. Zumindest in meiner App.
Durch das Entfernen erhalte ich eine gültige Spieler-ID und mein Gerät wird im OneSignal-Dashboard angezeigt. Was vorher nicht passierte.
Hier gilt das gleiche. PushToken ist immer null. Ich füge den Screenshot unten ein.
meine package.json ist wie folgt.
"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 Sie verwenden die JS-Initialisierung, richtig?
Können Sie mir sagen, wo Sie in Ihrem Projekt OneSignal.init()
anrufen?
Für mein Leben _kann_ ich dieses Problem nicht reproduzieren. Wenn jemand dieses Problem in einem Demoprojekt reproduzieren und posten könnte, könnten wir dieses Problem _viel_ schneller beheben.
@tavriaforever hallo, also würde ein Downgrade und Aufruf von onesignal.init('app id') funktionieren?
gleiches Problem hier, eine Lösung?
"react": "16.3.1",
"react-native": "0.55.3",
"react-native-onesignal": "^3.2.0",
@Nightsd01
Ich rufe in meinem Root index.tsx
wo es RootStackNavigator umschließt.
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>
);
Ich leide immer noch darunter, Null-Token zu erhalten.
@ Nightsd01 Das gleiche hier.
Entfernen von init mit appId:nil in RCTOneSignal.m hat geholfen
@ Nightsd01 Ich habe es gerade auf Android ausprobiert und Android hat das gleiche Problem.
Ich denke, die Initialisierung auf der JS-Seite war keine so gute Idee.
Ich verstehe jedoch, dass es Webentwicklern oder Personen ohne nativen Hintergrund die einfache Verwendung der Bibliothek erleichtert.
@hhunaid hört sich an, als sollte ich ein Downgrade durchführen?
@dooboolab @408dev Ja, ich würde empfehlen, dass Sie, wenn dieses Problem der Anleitung , um Ihrem Projekt den nativen Initialisierungscode hinzuzufügen.
@hhunaid Es macht die Dinge für React-
Als Update konnten wir dieses Problem reproduzieren und die Ursache identifiziert haben. Wir werden ein Update veröffentlichen, um es in Kürze zu beheben.
Hallo zusammen - dieses Problem wurde in einer neuen PR (#512) behoben. Wir gehen davon aus, dass dies innerhalb der nächsten ein oder zwei Stunden zusammengeführt und ein neues Update veröffentlicht wird. Danke für Ihre Geduld!
Hallo zusammen @dooboolab @hhunaid @408dev @el-lsan @neo125874 @Jarred-Sumner
Das neue Update (3.2.3) wurde veröffentlicht und sollte dieses Problem beheben. Bitte lassen Sie es mich wissen, wenn dieses Problem (oder andere Probleme) erneut auftreten, und ich werde es gerne untersuchen.
@Nightsd01
Ich benutze
"react": "16.3.1",
"react-native": "0.55.3",
"react-native-onesignal": "^3.2.3",
Auf einem echten Gerät funktioniert alles wie erwartet, aber ich erhalte immer noch null userId
zufällig auf simulators
und ich sehe kein Gerät, das meiner Spielerliste hinzugefügt wird! ( bisher habe ich gerne >50 mal getestet und nur 2 mal funktioniert! )
Ich habe versucht, die App zu bereinigen und neu zu erstellen sowie rm -rf node_modules/ && yarn cache clean && yarn install && yarn start -- --reset-cache
aber ich erhalte immer noch nicht den erwarteten Status von OneSignal.getPermissionSubscriptionState
{ userSubscriptionEnabled: true,
subscriptionEnabled: false,
pushToken: null,
emailAddress: null,
userId: null,
hasPrompted: true,
notificationsEnabled: true,
emailUserId: null,
emailSubscribed: false }
@el-lsan das wird erwartet. Es ist Apples Einschränkung, nicht unsere. iOS-Simulatoren können keine Push-Benachrichtigungen empfangen. Sie erhalten kein APNS-Push-Token und werden nicht bei OneSignal registriert.
Wenn Sie Push-Benachrichtigungen testen, müssen Sie dies auf einem echten iOS-Gerät tun, unabhängig davon, ob Sie OneSignal verwenden oder nicht.
@Nightsd01
Sorry, mein letzter Post war nicht so eindeutig. Ich meinte nicht, den Push-On-Simulatoren zu erhalten, sondern das Simulatorgerät aufgelistet zu bekommen.
Nach OneSignal.init('ONESIGNAL_APP_ID');
erwarte ich, dass das Simulationsgerät in meinen abonnierten Benutzern mit dem Label Ios Simulator Unsupported
wie Sie im folgenden Screenshot sehen:
Hier ist die Antwort von OneSignal.getPermissionSubscriptionState für den aufgeführten Simulator:
Aber meistens schlägt die Initialisierung auf Simulatoren fehl und ich sehe es nicht unter https://onesignal.com/apps/ONESIGNAL_APP_ID/players
@el-lsan Ich habe das gleiche Problem, dass das Push-Token null ist. Haben Sie eine Lösung gefunden?
@adirzoari nach dem Update auf "react-native-onesignal": "^3.2.3"
das Problem für echte Geräte behoben.
Auf der anderen Seite erwarte ich, dass userId
für Simulatoren festgelegt wird, aber aus irgendeinem seltsamen Grund schlägt es meistens fehl und gibt null zurück!
Ich benutze ein echtes Gerät und bekomme Null-Token
@adirzoari Das ist komisch! Versuchen Sie, den Cache rm -rf node_modules/ && yarn cache clean && yarn install && yarn start -- --reset-cache
und überprüfen Sie die Schritte noch einmal
@el-lsan pushToken ist null, hat aber in userId eine eindeutige Zeichenfolge. in einemsignal bekomme ich
Fehler in der Bibliothek der Google Play-Dienste
Ich hatte das gleiche Problem mit 3.2.7 (Simulatoren - OK / echte Geräte - NOK), aber das Bereinigen des Caches, wie von @el-lsan vorgeschlagen, hat es ohne Probleme zum Laufen gebracht
@ Nightsd01 Das gleiche hier.
Entfernen von init mit appId:nil in RCTOneSignal.m hat geholfen
Hallo, würden Sie bitte das Bild der folgenden Änderung hinzufügen.
@adirzoari nach dem Update auf
"react-native-onesignal": "^3.2.3"
das Problem für echte Geräte behoben.Auf der anderen Seite erwarte ich, dass
userId
für Simulatoren festgelegt wird, aber aus irgendeinem seltsamen Grund schlägt es meistens fehl und gibt null zurück!
Hallo, ich bekomme pushToken:null im Simulator und bekomme nur die UserId für den Simulator.
Würde ich den pushToken für das echte Gerät bekommen, bitte bestätigen Sie, (ob ich mir im Simulator Sorgen um das PushToken-Nullproblem machen muss oder nicht?).
Hilfreichster Kommentar
Hallo zusammen @dooboolab @hhunaid @408dev @el-lsan @neo125874 @Jarred-Sumner
Das neue Update (3.2.3) wurde veröffentlicht und sollte dieses Problem beheben. Bitte lassen Sie es mich wissen, wenn dieses Problem (oder andere Probleme) erneut auftreten, und ich werde es gerne untersuchen.