React-native-onesignal: libRCCTOneSignal.a kann nicht gefunden werden

Erstellt am 16. Aug. 2018  ·  26Kommentare  ·  Quelle: OneSignal/react-native-onesignal

Beschreibung:
Ich habe die Anweisungen für das React Native SDK von hier aus befolgt - https://documentation.onesignal.com/docs/react-native-sdk-setup

Ich habe das npm-Paket hinzugefügt, react-native link und auch pod install . Alles verlief reibungslos.

Dann fahre ich fort, die Benachrichtigungserweiterung zu erstellen. Wenn ich zu dem Teil komme, in dem ich angewiesen werde, libRCTOneSignal.a in der Einstellung Link Binary with Libararies hinzuzufügen, kann ich es nicht in der Liste finden, die Xcode anzeigt. Folgendes sehe ich, wenn ich nach One Signal suche:

screen shot 2018-08-16 at 12 55 02 pm

Hier ist meine Einstellung für die Header-Suchseiten:
screen shot 2018-08-16 at 12 55 26 pm

Jetzt habe ich versucht, libreact-native-onesignal.a hinzuzufügen, aber beim Erstellen erhalte ich diesen Verknüpfungsfehler:

ld: library not found for -lreact-native-onesignal
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Umfeld

  1. Reagieren-native-eins-Signal - 3.2.6
  2. RN - 0.55.4
  3. Xcode - 9.2
Help Wanted dependencies iOS

Hilfreichster Kommentar

Es stellte sich heraus, dass react-native link nicht wie üblich richtig funktionierte: Ich musste nur das RCTOneSignal Projekt manuell zu Libraries hinzufügen und dann konnte ich libRCTOneSignal.a hinzufügen

Ich denke, es wäre schön, wenn Sie zusätzlich zu react-native link die Anweisungen zum manuellen Verlinken hinzufügen könnten, damit die Leute überprüfen können, ob der Link richtig funktioniert :)

Alle 26 Kommentare

Es stellte sich heraus, dass react-native link nicht wie üblich richtig funktionierte: Ich musste nur das RCTOneSignal Projekt manuell zu Libraries hinzufügen und dann konnte ich libRCTOneSignal.a hinzufügen

Ich denke, es wäre schön, wenn Sie zusätzlich zu react-native link die Anweisungen zum manuellen Verlinken hinzufügen könnten, damit die Leute überprüfen können, ob der Link richtig funktioniert :)

wie hast du es hinzugefügt?

Versuchen Sie auch herauszufinden, wie Sie das RCTOneSignal-Projekt zu Bibliotheken hinzufügen

@nickyhajal @abdul-elah-js @steverob Kann jemand erklären, wie man das RCTOneSignal Projekt manuell zu Libraries hinzufügt?

Dieses Problem sollte auch in der Dokumentation enthalten sein.

@pacozaa Sie können den Anweisungen von Facebook hier folgen: https://facebook.github.io/react-native/docs/linking-libraries-ios

Öffnen Sie node_modules/react-native-onesignal/ios und ziehen Sie RCTOneSignal.xcodeproj per Drag & Drop in den XCode-Projektordner Bibliotheken, dann wird libRCTOneSignal.a in der Suche angezeigt.

screenshot at nov 30 16-21-30

Ich habe die Dokumentation im React-Native-Setup aktualisiert, um dies widerzuspiegeln. Vielen Dank, dass Sie dies ansprechen und dabei helfen, unsere Dokumentation zu verbessern!

Kein Bibliotheken-Ordner.

@rgomezp Entschuldigung, könnten Sie das Problem bitte erneut öffnen? libRCTOneSignal.a kann in Xcode 12 nicht in der Erweiterung gefunden werden. Funktioniert aber auf Xcode 11.7

@HerrAlekhin ,
Versuchen Sie, in das Verzeichnis ios und pod deintegrate && pod install

Dies geschieht bei mir in Xcode 12. Keine Pods verwenden.

Hallo,
Es hört sich so an, als wäre dies ein Problem für diejenigen unter Ihnen, die Xcode 12 verwenden und _nicht_ Cocoapods verwenden.

Wird wieder geöffnet, um dieses Problem zu verfolgen.

Ein anderer, der Xcode 12 verwendet, ohne Pods zu verwenden, die das gleiche Problem haben. :(

Musste die Bibliothek in Pods verschieben, aber sie funktioniert nicht auf meinem Staging-Ziel😢 Leute, bitte überprüft das so schnell wie möglich 🙏

@rgomezp Entschuldigung, irgendwelche Updates dazu? versucht, Kakaobohnen zu verwenden, aber OneSignal wird aus irgendeinem Grund nicht initialisiert. mit React Native 0.59

Habe Probleme mit react-native-onesignal . Hier ist das Pod-Beispiel:

# Uncomment the next line to define a global platform for your project
platform :ios, '10.0'



target 'example' do
  # Comment the next line if you don't want to use dynamic frameworks
  # Pods for example
  pod 'Branch', '0.28.1'
  pod 'react-native-onesignal', :path => '../node_modules/react-native-onesignal'
  pod 'React', :path => '../node_modules/react-native/'
end

target 'exampleDev' do
  # Comment the next line if you don't want to use dynamic frameworks
  # Pods for exampleDev
  pod 'Branch', '0.28.1'
  pod 'React', :path => '../node_modules/react-native/'
  pod 'react-native-onesignal', :path => '../node_modules/react-native-onesignal'
end

target 'OneSignalNotificationServiceExtension' do
  # Comment the next line if you don't want to use dynamic frameworks
  pod 'OneSignal', '>= 2.14.2', '< 3.0'
  # Pods for OneSignalNotificationServiceExtension
end

target 'DevOneSignalNotificationServiceExtension' do
  # Comment the next line if you don't want to use dynamic frameworks
  pod 'OneSignal', '>= 2.14.2', '< 3.0'
  # Pods for DevOneSignalNotificationServiceExtension
end

@rgomezp untersucht das jemand?

Unser Projekt verwendet reaktive 0,59 (keine Kakaofrüchte) und baut aufgrund des Problems hier nicht auf XCode 12 auf

@rgomezp untersucht das jemand?

Unser Projekt verwendet reaktive 0,59 (keine Kakaofrüchte) und baut aufgrund des Problems hier nicht auf XCode 12 auf

Hier gilt das gleiche. React-native 0.59 und Xcode 12 nach dem letzten Update habe ich den beschriebenen Fehler. Vor dem Update funktioniert alles einwandfrei. Ich habe sogar React-native-Onesignal 3.9.2 entfernt und neu installiert

clang: error: no such file or directory: '/Users/leonardo/Library/Developer/Xcode/DerivedData/xxxxx/Build/Products/Debug-iphonesimulator/libRCTOneSignal.a' Command Ld failed with a nonzero exit code

image

Aktualisierung 1:
Wenn ich die App für die Produktion baue, funktioniert es ... Das Problem ist, wenn ich versuche, auf dem Simulator zu laufen (alle mit unterschiedlichem iOS)

Aktualisierung 2:
Ich kann sogar auf physischen Geräten debuggen.

Aktualisierung 3:
Ich kann Fehler beheben, aber Onesignal fordert die Zustimmung des Benutzers nicht auf, sodass Benachrichtigungen nicht funktionieren. Ich habe sogar die neueste Version 3.9.2 aktualisiert.

Die Lösung für mich bestand darin, xcode auf 11.7 herunterzustufen und ein Backup des iOS-Ordners zu verwenden. Das Problem scheint mit xcode 12+ zusammenzuhängen

Ich habe versucht, den XCode herunterzustufen, wie @Tebrynn sagte, aber ich
Für mich war die einzige Lösung, die manuelle Installation durch die Cocoapods-Installation zu ersetzen.
Ich habe einfach die Anweisungen in der Dokumentation befolgt (https://documentation.onesignal.com/docs/react-native-sdk-setup).

Irgendeine Lösung dafür?

Ich habe gerade auf Xcode12 aktualisiert und dieser Fehler tritt auch beim Build auf.

Ich habe vor kurzem auf Xcode 12 aktualisiert. Ich habe das gleiche Problem, weil ich libRCTOneSignal.a nicht gefunden habe. Ich glaube, ich habe die Schritte und Problemumgehungen befolgt, die andere versucht haben. Ich bin ratlos.
Ich habe mehrere Artikel über das Ausschließen von arm64 für OneSignal gelesen. Diese habe ich bisher ohne Erfolg probiert. Da es aber nur den Simulator betrifft, werde ich wohl nicht mehr viel Zeit mit diesem Thema verbringen.

Gleiches Problem, Xcode 12.4 und RN 0.59.10.

Gleiches Problem hier.

Hallo,
Es hört sich so an, als ob manuelle Installationen irgendwie kaputt gegangen sind. Wir müssen weiter graben, um nachzuforschen.

Danke für Ihre Geduld.

Versuchen Sie in der Zwischenzeit, wenn möglich, zu einer Cocoapods-Installationsmethode zu wechseln

Ich stehe vor dem gleichen Problem. Irgendeine Lösungsmöglichkeit?

Hallo, ab der React-Native-OneSignal-Version 4.0.0 wird die in RCTOneSignal.xcodeproj enthaltene Binärdatei nicht aktualisiert, was bedeutet, dass Sie Cocoapods verwenden müssen, um OneSignal zur NotificationServiceExtension hinzuzufügen.
Sie können dies tun, indem Sie Ihrer Poddatei Folgendes hinzufügen:

target 'OneSignalNotificationServiceExtension' do
  pod 'OneSignal', '>= 3.0', '< 4.0'
end

Aktualisieren Sie dann die NotificationService-Datei wie folgt, wenn Sie Swift verwenden

import UserNotifications

import OneSignal

class NotificationService: UNNotificationServiceExtension {

    var contentHandler: ((UNNotificationContent) -> Void)?
    var receivedRequest: UNNotificationRequest!
    var bestAttemptContent: UNMutableNotificationContent?

    override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: <strong i="10">@escaping</strong> (UNNotificationContent) -> Void) {
        self.receivedRequest = request;
        self.contentHandler = contentHandler
        bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)

        if let bestAttemptContent = bestAttemptContent {
            OneSignal.didReceiveNotificationExtensionRequest(self.receivedRequest, with: self.bestAttemptContent)
            contentHandler(bestAttemptContent)
        }
    }

    override func serviceExtensionTimeWillExpire() {
        // Called just before the extension will be terminated by the system.
        // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
        if let contentHandler = contentHandler, let bestAttemptContent =  bestAttemptContent {
            OneSignal.serviceExtensionTimeWillExpireRequest(self.receivedRequest, with: self.bestAttemptContent)
            contentHandler(bestAttemptContent)
        }
    }

}

Oder Folgendes, wenn Sie Objective-C verwenden

#import <OneSignal/OneSignal.h>

#import "NotificationService.h"

<strong i="14">@interface</strong> NotificationService ()

<strong i="15">@property</strong> (nonatomic, strong) void (^contentHandler)(UNNotificationContent *contentToDeliver);
<strong i="16">@property</strong> (nonatomic, strong) UNNotificationRequest *receivedRequest;
<strong i="17">@property</strong> (nonatomic, strong) UNMutableNotificationContent *bestAttemptContent;

<strong i="18">@end</strong>

<strong i="19">@implementation</strong> NotificationService

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
    self.receivedRequest = request;
    self.contentHandler = contentHandler;
    self.bestAttemptContent = [request.content mutableCopy];

    [OneSignal didReceiveNotificationExtensionRequest:self.receivedRequest withMutableNotificationContent:self.bestAttemptContent];

    // DEBUGGING: Uncomment the 2 lines below and comment out the one above to ensure this extension is excuting
    //            Note, this extension only runs when mutable-content is set
    //            Setting an attachment or action buttons automatically adds this
    // NSLog(@"Running NotificationServiceExtension");
    // self.bestAttemptContent.body = [@"[Modified] " stringByAppendingString:self.bestAttemptContent.body];

    self.contentHandler(self.bestAttemptContent);
}

- (void)serviceExtensionTimeWillExpire {
    // Called just before the extension will be terminated by the system.
    // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.

    [OneSignal serviceExtensionTimeWillExpireRequest:self.receivedRequest withMutableNotificationContent:self.bestAttemptContent];

    self.contentHandler(self.bestAttemptContent);
}

<strong i="20">@end</strong>

Die komplette Einrichtungsanleitung finden Sie hier

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen