React-native-onesignal: (v3.2.1) (iOS) pushToken null auf realem Gerät

Erstellt am 14. Mai 2018  ·  36Kommentare  ·  Quelle: OneSignal/react-native-onesignal

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

  1. Welche Version des OneSignal React-Native SDK verwenden Sie: latest 3.2.1
  2. Wie haben Sie das SDK zu Ihrem Projekt hinzugefügt (z. B. npm) npm i --save react-native-onesignal
  3. [email protected]
  4. Xcode Version 9.3 (9E145)
  5. Node.js 8.4.0

mein Paket.json

package json rbtse 2018-05-14 11-59-05

Schritte zum Reproduzieren des Problems:

  1. Folgen Sie allen möglichen Varianten in der Anleitung auf onesignal.com
  2. Fügen Sie js-Code aus dem Beispielordner in diesem Repository hinzu
  3. Test auf realen Geräten (iphone x mit ios 11, iphone 6s mit ios 10)

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

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.

Alle 36 Kommentare

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!

react native debugger - connected port 8081 2018-05-14 12-24-59

users rbtse onesignal 2018-05-14 12-27-59

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?

alt text

pushToken und userId sind für mich auch auf echten Geräten null (im Release-Modus)
image

[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
image
image

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.
screen shot 2018-05-16 at 3 55 07 am

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:

image

Hier ist die Antwort von OneSignal.getPermissionSubscriptionState für den aufgeführten Simulator:

image

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?).

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen