React-native-onesignal: Tidak dapat menemukan libRCTOneSignal.a

Dibuat pada 16 Agu 2018  ·  26Komentar  ·  Sumber: OneSignal/react-native-onesignal

Keterangan:
Saya telah mengikuti instruksi untuk React Native SDK dari sini - https://documentation.onesignal.com/docs/react-native-sdk-setup

Saya telah menambahkan paket npm, melakukan react-native link dan juga pod install . Semuanya berjalan lancar.

Kemudian saya melanjutkan untuk membuat Ekstensi Notifikasi. Ketika saya sampai ke bagian di mana saya diperintahkan untuk menambahkan libRCTOneSignal.a dalam pengaturan Link Binary with Libararies , saya tidak dapat menemukannya dalam daftar yang ditunjukkan Xcode. Inilah yang saya lihat ketika saya mencari One Signal:

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

Berikut adalah pengaturan halaman pencarian tajuk saya:
screen shot 2018-08-16 at 12 55 26 pm

Sekarang saya mencoba menambahkan libreact-native-onesignal.a , tetapi ketika membangun saya mendapatkan kesalahan penautan ini:

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

Lingkungan

  1. reaksi-asli-satu-sinyal - 3.2.6
  2. RN - 0.55.4
  3. Xcode - 9.2
Help Wanted dependencies iOS

Komentar yang paling membantu

Ternyata react-native link tidak berfungsi dengan benar seperti biasa :DI hanya perlu menambahkan proyek RCTOneSignal secara manual ke Libraries dan kemudian saya dapat menambahkan libRCTOneSignal.a

Saya pikir akan lebih baik jika kalian dapat menambahkan instruksi untuk menautkan secara manual selain react-native link sehingga orang dapat memverifikasi apakah tautan berfungsi dengan benar :)

Semua 26 komentar

Ternyata react-native link tidak berfungsi dengan benar seperti biasa :DI hanya perlu menambahkan proyek RCTOneSignal secara manual ke Libraries dan kemudian saya dapat menambahkan libRCTOneSignal.a

Saya pikir akan lebih baik jika kalian dapat menambahkan instruksi untuk menautkan secara manual selain react-native link sehingga orang dapat memverifikasi apakah tautan berfungsi dengan benar :)

bagaimana Anda menambahkannya?

Juga mencoba mencari cara untuk menambahkan proyek RCTOneSignal ke Perpustakaan

@nickyhajal @abdul-elah-js @steverob Adakah yang bisa menjelaskan cara menambahkan proyek RCTOneSignal secara manual ke Libraries ?

Masalah ini juga harus ada dalam dokumentasi.

@pacozaa Anda dapat mengikuti instruksi Facebook di sini: https://facebook.github.io/react-native/docs/linking-libraries-ios

Buka node_modules/react-native-onesignal/ios lalu drag and drop RCTOneSignal.xcodeproj ke folder proyek XCode Libraries, maka akan muncul libRCTOneSignal.a pada pencarian.

screenshot at nov 30 16-21-30

Saya telah memperbarui dokumentasi dalam pengaturan React-Native untuk mencerminkan hal ini. Terima kasih telah mengemukakan hal ini dan membantu membuat dokumentasi kami menjadi lebih baik!

Tidak ada folder Perpustakaan.

@rgomezp Maaf, bisakah Anda membuka kembali masalah ini? libRCTOneSignal.a tidak dapat ditemukan dalam ekstensi di Xcode 12. Tetapi berfungsi pada Xcode 11.7

@MrAlekhin ,
Coba masuk ke direktori ios dan jalankan pod deintegrate && pod install

Ini terjadi pada saya di Xcode 12. Tidak menggunakan pod.

apa kabar,
Sepertinya ini adalah masalah bagi Anda yang menggunakan Xcode 12 dan _not_ menggunakan Cocoapods.

Dibuka kembali untuk melacak masalah ini.

Lain menggunakan Xcode 12 tanpa menggunakan pod yang memiliki masalah yang sama. :(

Harus memindahkan lib ke pod, tetapi tidak berfungsi pada target pementasan saya😢 teman-teman tolong tinjau itu secepatnya 🙏

@rgomezp maaf, ada pembaruan tentang itu? mencoba menggunakan cocoapods tetapi OneSignal tidak diinisialisasi karena alasan tertentu. menggunakan Bereaksi Asli 0.59

Mengalami masalah dengan react-native-onesignal . Berikut adalah contoh 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 adakah yang melihat ini?

Proyek kami menggunakan reaksi asli 0,59 (tanpa cocoapods) dan tidak dibangun di atas XCode 12 karena masalah di sini

@rgomezp adakah yang melihat ini?

Proyek kami menggunakan reaksi asli 0,59 (tanpa cocoapods) dan tidak dibangun di atas XCode 12 karena masalah di sini

Sama disini. react-native 0.59 dan Xcode 12 setelah pembaruan terakhir saya memiliki kesalahan yang dijelaskan. Semua berfungsi dengan baik sebelum pembaruan. Saya bahkan menghapus dan menginstal ulang 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

Pembaruan 1:
Jika saya membangun aplikasi untuk produksi, itu berfungsi ... Masalahnya adalah ketika saya mencoba menjalankan simulator (semuanya dengan iOS yang berbeda)

Pembaruan 2:
Saya dapat men-debug bahkan di perangkat fisik.

Pembaruan 3:
Saya dapat men-debug tetapi onesignal tidak meminta persetujuan pengguna sehingga notifikasi tidak berfungsi. Saya bahkan memperbarui versi terbaru 3.9.2.

Solusi bagi saya adalah menurunkan versi xcode ke 11.7 dan menggunakan cadangan folder ios. Masalahnya tampaknya terkait dengan xcode 12+

Saya mencoba menurunkan versi XCode , seperti yang dikatakan
Bagi saya, satu-satunya solusi adalah mengganti instalasi manual dengan instalasi Cocoapods.
Saya baru saja mengikuti instruksi dalam dokumentasi ( https://documentation.onesignal.com/docs/react-native-sdk-setup ).

Ada solusi untuk ini?

Saya baru saja memperbarui ke Xcode12 dan saya juga menghadapi kesalahan ini saat dibangun.

Saya baru-baru ini memperbarui ke Xcode 12. Saya mendapatkan masalah yang sama dengan tidak menemukan libRCTOneSignal.a. Saya yakin saya mengikuti langkah-langkah dan solusi yang telah dicoba orang lain. Aku bingung.
Saya membaca beberapa artikel tentang mengecualikan arm64 untuk OneSignal. Saya mencoba ini tanpa hasil sejauh ini. Namun, karena ini hanya memengaruhi simulator, saya mungkin tidak akan menghabiskan lebih banyak waktu untuk masalah ini.

Masalah yang sama, Xcode 12.4 dan RN 0.59.10.

Masalah yang sama di sini.

apa kabar,
Kedengarannya seperti instalasi manual entah bagaimana rusak. Kita perlu menggali lebih jauh untuk menyelidiki.

Terima kasih atas kesabaran Anda.

Sementara itu, jika memungkinkan, cobalah beralih ke metode instalasi Cocoapods

Saya menghadapi masalah yang sama. Ada solusi?

Halo, pada React-Native-OneSignal versi 4.0.0 biner yang terkandung dalam RCTOneSignal.xcodeproj tidak diperbarui, artinya Anda perlu menggunakan Cocoapods untuk menambahkan OneSignal ke NotificationServiceExtension.
Anda dapat melakukannya dengan menambahkan yang berikut ke Podfile Anda:

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

Kemudian perbarui file NotificationService ke yang berikut ini jika Anda menggunakan 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)
        }
    }

}

Atau berikut ini jika Anda menggunakan 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>

Panduan penyiapan lengkap dapat ditemukan di sini

Apakah halaman ini membantu?
0 / 5 - 0 peringkat