React-native-onesignal: Impossible de trouver libRCTOneSignal.a

Créé le 16 août 2018  ·  26Commentaires  ·  Source: OneSignal/react-native-onesignal

La description:
J'ai suivi les instructions pour React Native SDK à partir d'ici - https://documentation.onesignal.com/docs/react-native-sdk-setup

J'ai ajouté le package npm, effectué react-native link et aussi pod install . Tout s'est bien passé.

Ensuite, je crée l'extension de notification. Lorsque j'arrive à la partie où l'on me demande d'ajouter libRCTOneSignal.a dans le paramètre Link Binary with Libararies , je ne parviens pas à le trouver dans la liste affichée par Xcode. Voici tout ce que je vois lorsque je recherche One Signal :

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

Voici le paramètre de mes pages de recherche d'en-tête :
screen shot 2018-08-16 at 12 55 26 pm

Maintenant, j'ai essayé d'ajouter le libreact-native-onesignal.a , mais lors de la construction, j'obtiens cette erreur de liaison :

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

Environnement

  1. réagir-natif-un-signal - 3.2.6
  2. IA - 0.55.4
  3. Xcode - 9.2
Help Wanted dependencies iOS

Commentaire le plus utile

Il s'avère que react-native link n'a pas fonctionné correctement comme d'habitude :DI a juste dû ajouter manuellement le projet RCTOneSignal dans Libraries puis j'ai pu ajouter libRCTOneSignal.a

Je pense que ce serait bien si vous pouviez ajouter les instructions pour lier manuellement en plus de react-native link afin que les gens puissent vérifier si le lien a fonctionné correctement :)

Tous les 26 commentaires

Il s'avère que react-native link n'a pas fonctionné correctement comme d'habitude :DI a juste dû ajouter manuellement le projet RCTOneSignal dans Libraries puis j'ai pu ajouter libRCTOneSignal.a

Je pense que ce serait bien si vous pouviez ajouter les instructions pour lier manuellement en plus de react-native link afin que les gens puissent vérifier si le lien a fonctionné correctement :)

comment l'as tu ajouté ?

Essayer également de comprendre exactement comment ajouter le projet RCTOneSignal dans les bibliothèques

@nickyhajal @abdul-elah-js @steverob Quelqu'un peut-il expliquer comment ajouter manuellement le projet RCTOneSignal dans Libraries ?

Ce problème devrait également figurer dans la documentation.

@pacozaa vous pouvez suivre les instructions de Facebook ici : https://facebook.github.io/react-native/docs/linking-libraries-ios

Ouvrez node_modules/react-native-onesignal/ios, puis faites glisser et déposez RCTOneSignal.xcodeproj dans le dossier du projet XCode Bibliothèques, puis libRCTOneSignal.a apparaîtra dans la recherche.

screenshot at nov 30 16-21-30

J'ai mis à jour la documentation dans la configuration React-Native pour refléter cela. Merci d'avoir soulevé cette question et d'avoir contribué à améliorer notre documentation !

Aucun dossier Bibliothèques.

@rgomezp Désolé, pourriez-vous s'il vous plaît rouvrir le problème ? libRCTOneSignal.a ne peut pas être trouvé dans l'extension dans Xcode 12. Mais fonctionne sur Xcode 11.7

@MrAlekhin ,
Essayez d'aller dans le répertoire ios et d'exécuter pod deintegrate && pod install

Cela se produit pour moi dans Xcode 12. Ne pas utiliser de pods.

Salut,
Il semble que ce soit un problème pour ceux d'entre vous qui utilisent Xcode 12 et n'utilisent _pas_ Cocoapods.

Réouverture pour suivre ce problème.

Un autre utilisant Xcode 12 sans utiliser de pods qui a le même problème. :(

J'ai dû déplacer la bibliothèque vers les pods, mais cela ne fonctionne pas sur ma cible de mise en scène😢 les gars, veuillez vérifier cela dès que possible 🙏

@rgomezp désolé, des mises à jour à ce sujet ? essayé d'utiliser des cocopods mais OneSignal n'est pas initialisé pour une raison quelconque. en utilisant React Native 0.59

Avoir des problèmes avec react-native-onesignal . Voici l'exemple du Pod :

# 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 est-ce que quelqu'un se penche sur cela?

Notre projet utilise react-native 0.59 (pas de cocopodes) et il ne s'appuie pas sur XCode 12 à cause du problème ici

@rgomezp est-ce que quelqu'un se penche sur cela?

Notre projet utilise react-native 0.59 (pas de cocopodes) et il ne s'appuie pas sur XCode 12 à cause du problème ici

Pareil ici. react-native 0.59 et Xcode 12 après la dernière mise à jour, j'ai l'erreur décrite. Tout fonctionnait bien avant la mise à jour. J'ai même supprimé et réinstallé react-native-onesignal 3.9.2

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

Mise à jour 1 :
Si je crée l'application pour la production, cela fonctionne ... Le problème est lorsque j'essaie de l'exécuter sur un simulateur (tous avec un iOS différent)

Mise à jour 2 :
Je peux déboguer même sur un appareil physique.

Mise à jour 3 :
Je peux déboguer mais onesignal ne demande pas le consentement de l'utilisateur, donc les notifications ne fonctionnent pas. J'ai même mis à jour la dernière version 3.9.2.

La solution pour moi était de rétrograder xcode à 11.7 et d'utiliser une sauvegarde du dossier ios. Le problème semble être lié à xcode 12+

J'ai essayé de rétrograder le XCode, comme l' a dit
Pour moi, la seule solution était de remplacer l'installation manuelle par l'installation Cocoapods.
Je viens de suivre les instructions de la documentation (https://documentation.onesignal.com/docs/react-native-sdk-setup).

Une solution pour cela ?

Je viens de mettre à jour vers Xcode12 et je suis également confronté à cette erreur lors de la construction.

J'ai récemment mis à jour vers Xcode 12. J'ai le même problème de ne pas trouver libRCTOneSignal.a. Je crois que j'ai suivi les étapes et les solutions de contournement que d'autres ont essayées. Je suis perplexe.
J'ai lu plusieurs articles sur l'exclusion d'arm64 pour OneSignal. J'ai essayé ces derniers sans succès jusqu'à présent. Cependant, comme cela n'affecte que le simulateur, je ne passerai probablement pas beaucoup plus de temps sur cette question.

Même problème, Xcode 12.4 et RN 0.59.10.

Même problème ici.

Salut,
On dirait que les installations manuelles se sont cassées d'une manière ou d'une autre. Nous devrons creuser davantage pour enquêter.

Merci pour votre patience.

En attendant, si possible, essayez de passer à une méthode d'installation Cocoapods

Je suis confronté au même problème. Toute solution?

Bonjour, à partir de la version 4.0.0 de React-Native-OneSignal, le binaire contenu dans RCTOneSignal.xcodeproj n'est pas mis à jour, ce qui signifie que vous devrez utiliser Cocoapods pour ajouter OneSignal à NotificationServiceExtension.
Vous pouvez le faire en ajoutant les éléments suivants à votre fichier Podfile :

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

Ensuite, mettez à jour le fichier NotificationService comme suit si vous utilisez Swift

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)
        }
    }

}

Ou ce qui suit si vous utilisez Objective-C

#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>

Le guide d'installation complet est disponible ici

Cette page vous a été utile?
0 / 5 - 0 notes