React-native-onesignal: تعذر العثور على libRCTOneSignal.a

تم إنشاؤها على ١٦ أغسطس ٢٠١٨  ·  26تعليقات  ·  مصدر: OneSignal/react-native-onesignal

وصف:
لقد اتبعت تعليمات React Native SDK من هنا - https://documentation.onesignal.com/docs/react-native-sdk-setup

لقد أضفت حزمة npm ، ونفذت react-native link وأيضًا pod install . كل شيء سار بسلاسة.

ثم شرعت في إنشاء ملحق الإخطار. عندما أصل إلى الجزء الذي طلبت منه إضافة libRCTOneSignal.a في إعداد Link Binary with Libararies ، لا يمكنني العثور عليه في القائمة التي يعرضها Xcode. هذا كل ما أراه عندما أبحث عن إشارة واحدة:

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

هنا هو إعداد صفحات البحث الرئيسية الخاصة بي:
screen shot 2018-08-16 at 12 55 26 pm

لقد حاولت الآن إضافة libreact-native-onesignal.a ، لكن عند البناء يظهر لي خطأ الارتباط هذا:

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

بيئة

  1. رد فعل أصلي إشارة واحدة - 3.2.6
  2. RN - 0.55.4
  3. Xcode - 9.2
Help Wanted dependencies iOS

التعليق الأكثر فائدة

تبين أن react-native link لم يعمل بشكل صحيح كالمعتاد: كان على DI فقط إضافة مشروع RCTOneSignal يدويًا إلى Libraries وبعد ذلك تمكنت من إضافة libRCTOneSignal.a

أعتقد أنه سيكون من الرائع أن تضيفوا الإرشادات الخاصة بالربط يدويًا بالإضافة إلى react-native link حتى يتمكن الأشخاص من التحقق مما إذا كان الارتباط يعمل بشكل صحيح أم لا.

ال 26 كومينتر

تبين أن react-native link لم يعمل بشكل صحيح كالمعتاد: كان على DI فقط إضافة مشروع RCTOneSignal يدويًا إلى Libraries وبعد ذلك تمكنت من إضافة libRCTOneSignal.a

أعتقد أنه سيكون من الرائع أن تضيفوا الإرشادات الخاصة بالربط يدويًا بالإضافة إلى react-native link حتى يتمكن الأشخاص من التحقق مما إذا كان الارتباط يعمل بشكل صحيح أم لا.

كيف أضفته

تحاول أيضًا معرفة كيفية إضافة مشروع RCTOneSignal إلى المكتبات بالضبط

nickyhajal @ abdul- elah - RCTOneSignal يدويًا إلى Libraries ؟

يجب أن تكون هذه المشكلة في التوثيق أيضًا.

pacozaa يمكنك اتباع تعليمات Facebook هنا: https://facebook.github.io/react-native/docs/linking-libraries-ios

افتح node_modules / reaction-native-oneSignal / ios ثم اسحب RCTOneSignal.xcodeproj وأفلته في مكتبات مجلد مشروع XCode ، ثم سيظهر libRCTOneSignal.a في البحث.

screenshot at nov 30 16-21-30

لقد قمت بتحديث الوثائق في إعداد React-Native لتعكس ذلك. نشكرك على طرح هذا الأمر والمساعدة في تحسين وثائقنا!

لا يوجد مجلد مكتبات.

rgomezp معذرة ، هل يمكنك إعادة فتح المشكلة من فضلك؟ لا يمكن العثور على libRCTOneSignal.a في الامتداد في Xcode 12. ولكنه يعمل على Xcode 11.7

MrAlekhin ،
حاول الدخول إلى الدليل ios وتشغيل pod deintegrate && pod install

هذا ما يحدث لي في Xcode 12. لا تستخدم البودات.

مرحبًا ،
يبدو أن هذه مشكلة لأولئك منكم الذين يستخدمون Xcode 12 ولا يستخدمون Cocoapods.

إعادة فتح لتتبع هذه المشكلة.

آخر يستخدم Xcode 12 دون استخدام البودات التي بها نفس المشكلة. :(

اضطررت إلى نقل lib إلى pods ، لكنها لا تعمل على هدف التدريج الخاص بي ، يرجى مراجعة ذلك يا رفاق في أسرع وقت ممكن 🙏

rgomezp آسف ، أي تحديثات على ذلك؟ حاول استخدام cocoapods ولكن لم تتم تهيئة OneSignal لسبب ما. باستخدام React Native 0.59

تواجه مشكلات مع react-native-onesignal . هنا مثال 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 هل أي شخص يبحث في هذا؟

يستخدم مشروعنا 0.59 من التفاعل الأصلي (بدون cocoapods) ولا يعتمد على XCode 12 بسبب المشكلة هنا

rgomezp هل أي شخص يبحث في هذا؟

يستخدم مشروعنا 0.59 من التفاعل الأصلي (بدون cocoapods) ولا يعتمد على XCode 12 بسبب المشكلة هنا

كذلك هنا. رد الفعل الأصلي 0.59 و Xcode 12 بعد التحديث الأخير لدي الخطأ الموصوف. كل شيء يعمل بشكل جيد قبل التحديث. حتى أنني أزلت وأعدت تثبيت 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

التحديث 1:
إذا قمت ببناء التطبيق للإنتاج ، فإنه يعمل ... المشكلة هي عندما أحاول التشغيل على جهاز محاكاة (كلهم مع iOS مختلف)

التحديث 2:
يمكنني تصحيح الأخطاء حتى على الجهاز الفعلي.

التحديث 3:
يمكنني تصحيح الأخطاء ولكن لا تطلب oneignal موافقة المستخدم لذا لا تعمل الإشعارات. حتى أنني قمت بتحديث أحدث إصدار 3.9.2.

كان الحل بالنسبة لي هو الرجوع إلى إصدار xcode إلى 11.7 واستخدام نسخة احتياطية من مجلد ios. يبدو أن المشكلة مرتبطة بـ xcode 12+

حاولت الرجوع إلى إصدار أقدم من XCode ، كما قال
بالنسبة لي ، كان الحل الوحيد هو استبدال التثبيت اليدوي بتثبيت Cocoapods.
لقد اتبعت للتو التعليمات الواردة في الوثائق (https://documentation.onesignal.com/docs/react-native-sdk-setup).

أي حل لهذا؟

لقد قمت للتو بالتحديث إلى Xcode12 وأواجه هذا الخطأ عند الإنشاء أيضًا.

لقد قمت مؤخرًا بالتحديث إلى Xcode 12. أواجه نفس المشكلة مع عدم العثور على libRCTOneSignal.a. أعتقد أنني اتبعت الخطوات والحلول التي جربها الآخرون. أنا محتار.
قرأت عدة مقالات حول استبعاد arm64 لـ OneSignal. لقد جربت هذه دون حظ حتى الآن. ومع ذلك ، نظرًا لأنه يؤثر فقط على جهاز المحاكاة ، فمن المحتمل ألا أقضي وقتًا أطول بكثير في هذه المشكلة.

نفس الإصدار ، Xcode 12.4 و RN 0.59.10.

نفس المشكلة هنا.

مرحبًا ،
يبدو أن التركيبات اليدوية تعطلت بطريقة ما. سنحتاج إلى مزيد من البحث للتحقيق.

شكرا لصبرك.

في غضون ذلك ، إذا أمكن ، حاول التبديل إلى طريقة تثبيت Cocoapods

أواجه نفس المشكلة. اي حل؟

مرحبًا ، بدءًا من الإصدار 4.0.0 من React-Native-OneSignal ، لم يتم تحديث الملف الثنائي الموجود في RCTOneSignal.xcodeproj مما يعني أنك ستحتاج إلى استخدام Cocoapods لإضافة OneSignal إلى NotificationServiceExtension.
يمكنك القيام بذلك عن طريق إضافة ما يلي إلى Podfile الخاص بك:

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

ثم قم بتحديث ملف NotificationService إلى ما يلي إذا كنت تستخدم 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)
        }
    }

}

أو ما يلي إذا كنت تستخدم 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>

يمكن العثور على دليل الإعداد الكامل هنا

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات