Keterangan:
Baru saja diperbarui dari Xcode 10 ke Xcode 12, sebelum di v10 proyek ini dibangun dan dijalankan dengan sukses.
Pembangunan target OneSignalNotificationExtension gagal:
Undefined symbol: _swift_getObjCClassMetadata
Undefined symbol: type metadata accessor for Foundation.UUID
Undefined symbol: Swift._bridgeAnythingToObjectiveC<A>(A) -> Swift.AnyObject
Undefined symbol: protocol descriptor for Swift.ExpressibleByFloatLiteral
Undefined symbol: associated conformance descriptor for Swift.ExpressibleByFloatLiteral.Swift.ExpressibleByFloatLiteral.FloatLiteralType: Swift._ExpressibleByBuiltinFloatLiteral
Undefined symbol: associated type descriptor for Swift.ExpressibleByFloatLiteral.FloatLiteralType
Undefined symbol: protocol descriptor for Swift.ExpressibleByIntegerLiteral
Undefined symbol: associated type descriptor for Swift.ExpressibleByIntegerLiteral.IntegerLiteralType
Undefined symbol: method descriptor for Swift.ExpressibleByIntegerLiteral.init(integerLiteral: A.IntegerLiteralType) -> A
Undefined symbol: static Foundation.UUID._unconditionallyBridgeFromObjectiveC(__C.NSUUID?) -> Foundation.UUID
Undefined symbol: value witness table for Builtin.Int32
Undefined symbol: protocol witness table for Swift.Int : Swift._ExpressibleByBuiltinIntegerLiteral in Swift
dan 100 kesalahan lagi
Saya tidak begitu baik di Xcode dan Mac jadi saya minta maaf jika tidak jelas atau menyesatkan.
Terima kasih
Lingkungan
reaksi asli 0.63.2
onesignal-react-native 3.9.1
Kode X 12
Diinstal melalui npm dan ditautkan dengan pod
Langkah-langkah untuk Mereproduksi Masalah:
Membangun
apa kabar,
Seperti apa file NotificationService.swift
? Itu harus seperti:
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="8">@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)
}
}
}
Lihat langkah 4.3.6 dalam petunjuk pengaturan dan lanjutkan dari sana untuk memastikan Anda telah mengatur semuanya dengan benar.
Semoga ini membantu. Bersulang
Terima kasih untuk umpan baliknya.
Saya menggunakan file Objective-C. Haruskah saya menggunakan yang cepat?
Saya pikir Anda menggunakan Swift. Jika Anda menggunakan Obj-C, gunakan Objective C. Menikmati!
Saya juga mengalami beberapa masalah dengan Xcode 12
Saya berhasil membangun proyek di Xcode 11. Namun begitu saya membuka Xcode12 dan membangun proyek saya mendapatkan kesalahan berikut:
▸ Linking OneSignalNotificationServiceExtension
❌ clang: error: no such file or directory: '/Users/carloscuesta/project-folder/ios/build/project/Build/Products/Debug-iphonesimulator/libRCTOneSignal.a'
Ini sepertinya bukan kesalahan dari sisi OneSignal. Sepertinya ada yang aneh dengan cache atau semacamnya,
hal yang saya coba:
rm -rf ~/Library/Developer/Xcode/DerivedData/
Saya tidak tahu apa lagi yang harus saya coba, saya akan mengatakan bahwa semuanya terhubung dengan benar karena aplikasi berfungsi dengan baik di Produksi dan build bekerja dengan Xcode 11.
Saya memiliki perpustakaan yang ditautkan secara manual menggunakan panduan OneSignal, adakah ide tentang cara memperbaikinya? 🙏🏼
Biasanya ketika saya mendapatkan masalah ini diselesaikan dengan membersihkan DerivedData
tetapi saya tidak dapat menghilangkan kesalahan
Saya telah menemukan sesuatu yang aneh,
Jika saya mencoba membangun aplikasi dengan Xcode 12, selalu gagal. Namun Jika saya membangun aplikasi terlebih dahulu dengan Xcode 11 dan kemudian membuka Xcode 12 dan membangun aplikasi itu berfungsi
Namun begitu saya membersihkan build dan mencoba membangun kembali dengan Xcode 12, itu mulai gagal dengan kesalahan yang sama lagi
Kesalahan yang sama di sini dengan Xcode 12 dan onesignal-react-native 3.9.1 :-(
Proyek bekerja sebelum pembaruan.
Kesalahan yang sama.
SDK Onesignal -> 2.15.2
reaksi-asli-onesignal -> 3.9.1
Bekerja dengan baik pada xCode 11.
apa kabar,
Itu aneh @carloscuesta . Sudahkah Anda mencoba melihat perbedaan antara proyek pada Xcode 11 vs 12? Mungkin 12 mengubah beberapa pengaturan build penting untuk beberapa alasan.
Mendapat masalah serupa ketika saya memperbarui Xcode saya dari 11 menjadi 12 ..
Hai @rgomezp
Saya dapat mengonfirmasi bahwa tidak ada perubahan dari Xcode 11 ke Xcode 12. git status
dari repo tidak dimodifikasi.
Namun saya masih dapat mereproduksi build yang gagal. Dan setiap kali saya membangun Xcode 11 dan Xcode 12 setelah bekerja untuk pertama kalinya
apa kabar,
Saya yakin ini terkait dengan masalah Cocoapods yang sedang berlangsung yang sebelumnya dilaporkan di sini .
Ini mungkin berhasil tambahkan x86_64
ke VALID_ARCH
jika perlu menjalankan aplikasi di simulator, misalnya, x86_64
arm64
arm64e
Stack overflow ini mungkin berisi solusi yang Anda butuhkan.
Hai! Terima kasih atas bantuan Anda @rgomezp
Saya akan memberi tahu Anda hasil eksperimen saya!
Saya memperkenalkan arm64
seperti yang disarankan pada posting StackOverflow di Project
> Architectures
> Excluded Architectures
.
Ini tidak memperbaiki masalah. Saya mendapatkan kesalahan yang sama dengan mengeluh tentang x86_64
.
Jadi saya melanjutkan dan menambahkan x86_64
ke Excluded Architectures
.
Setelah perubahan berikut, kesalahan berikut tampaknya telah diperbaiki. Namun saya mendapat kesalahan lain terkait dengan OneSignalNotificationServiceExtension.appex
.
Embedded binary is not signed with the same certificate as the parent app. Verify the embedded binary target's code sign settings match the parent app's.
Namun saya tidak mengubah apa pun yang terkait dengan CodeSign – Build Xcode11 berfungsi dengan baik
Setelah membersihkan build DerivedData
dan restart komputer. Saya melihat kesalahan lain: Link app (i386)
.
Jika saya membuka kesalahan, saya melihat banyak file tidak ditemukan di folder DerivedData
. Tak satu pun dari mereka terkait dengan OneSignal. Namun saya tidak tahu mengapa ini gagal jika berfungsi dengan baik di Xcode 11. Saya sangat bingung sekarang
VALID_ARCHS
Ini juga tidak berhasil untuk saya. Saya juga membaca bahwa ini sudah usang pada Xcode 12 dan Excluded Architectures
harus digunakan sebagai gantinya.
Saya tidak punya User-Defined Setting
untuk ini. Karena saya tidak menggunakan CocoaPods dan saya memiliki modul yang ditautkan secara manual.
Saya menemukan dan tautan menarik yang berbicara tentang kesalahan "sertifikat yang sama" dengan Xcode setelah mengecualikan arm64
.
Dikatakan bahwa ekstensi tidak boleh mengecualikan arsitektur tersebut . Kesalahan yang sama sayangnya :(
Aku kehabisan ide untuk hari ini
Saya dapat mengonfirmasi bahwa membangun dan menjalankan aplikasi pada perangkat nyata tidak menimbulkan kesalahan apa pun tanpa modifikasi "Arsitektur yang Dikecualikan".
Jadi itu adalah sesuatu yang berhubungan 100% dengan arsitektur simulator itu sendiri
Halo Carlos,
Terima kasih atas penyelidikan terperinci. Untuk visibilitas, saya juga menemukan utas stack overflow ini .
Untuk meringkas masalah @carloscuesta ,
Embedded binary is not signed with the same certificate as the parent app...
diselesaikan dengan menambahkan arm64 dan x86_64 ke Excluded Architectures , sesuai panduan untuk menggunakan ini di atas VALID ARCHS.Carlos, pada titik ini saya tidak yakin apa lagi yang bisa dilakukan karena ini terdengar seperti masalah non-OneSignal.
Bisakah orang lain mengonfirmasi bahwa solusi Cocoapods yang ditautkan di atas berfungsi untuk mereka jika mereka _are_ menggunakan Cocoapods?
Hai @rgomezp
Terima kasih atas semua bantuan yang Anda berikan.
Carlos, pada titik ini saya tidak yakin apa lagi yang bisa dilakukan karena ini terdengar seperti masalah non-OneSignal.
Saya tidak 100% yakin dengan pernyataan ini karena Jika saya memutuskan tautan seluruh perpustakaan OneSignal dan saya menghapus OneSignalNotificationServiceExtension
proyek ini dibangun di atas Xcode12. Saya tidak tahu dari mana kesalahan itu berasal, itu pasti dan mungkin itu kasus khusus karena perpustakaan ditautkan secara manual. Dan saya tidak perlu menyentuh apapun yang berhubungan dengan arsitektur
Tapi ya, mari kita lihat apakah kita dapat menemukan kasus penggunaan lain 👍🏼
Tampaknya Xcode 12 build untuk simulator dengan arsitektur - arm64, i386, x86_64 .
Jadi solusi solusi saya adalah
Ini bekerja dengan baik di proyek saya.
@stanleyctcl Solusi Anda berhasil! :tada:
Saya tidak melihat target RCTOneSignal
di dalam perpustakaan RCTOneSignal
memiliki VALID_ARCHS
didefinisikan sebagai pengaturan User-Defined
. Ini adalah sesuatu yang harus kita hapus dari sisi Perpustakaan! Saya akan membuat PR untuk memperbaiki masalah ini!
Itu sebabnya semua perubahan saya tidak berhasil. Karena perpustakaan OneSignal telah menetapkan Pengaturan Pengguna ini.
Hei, terima kasih @stanleyctcl
Solusi Anda berhasil untuk saya.
Sebelumnya, build saya pada mode rilis ke iOS Simulator gagal. Saya mendapatkan kesalahan building for iOS Simulator, but linking in object file built for iOS, file onesignal
. Tapi, saya bisa membangun mode rilis di perangkat nyata tanpa ada kesalahan yang muncul. Solusi di atas memecahkan masalah ini.
Sayangnya, setelah saya menerapkan solusi Anda, saya tidak dapat mengarsipkan aplikasi saya. Saya mendapatkan kesalahan ini.
No architectures to compile for (ARCHS=arm64, VALID_ARCHS=arm64 arm64e armv7 armv7s, EXCLUDED_ARCHS=(
arm64
))
ada petunjuk?
@abdullahizzuddiin Pastikan Anda hanya
Ah, burukku. Saya lupa detail kecilnya. Terima kasih @carloscuesta telah menunjuk saya. Ternyata saya hanya perlu mengatur Excluded Architecture
tanpa menghapus VALID ARCHS
dari RCTOneSignal
pengaturan pembangunan subproyek. 🤔
= = =
Saya pikir, saya mendapat kesalahan perbedaan. Saya telah berhasil mengarsipkan. Tapi, setelah saya memilih "Kelola Penandatanganan Secara Otomatis", saya mendapatkan kesalahan ini
Saya dapat menyebarkan aplikasi ke Appstore tanpa masalah pada versi Xcode sebelumnya. Sebelumnya, saya menggunakan 11.7. Sekarang, saya menggunakan 12.0 dan saya langsung mendapatkan kesalahan ini tanpa ada perubahan pada repo saya.
//package.json
react-native-onesignal: 3.8.1
//Podfile
pod 'OneSignal', '>= 2.14.2', '< 3.0'
...
target 'OneSignalNotificationServiceExtension' do
pod 'OneSignal', '>= 2.14.2', '< 3.0'
end
Ada petunjuk? atau haruskah saya membuat masalah terpisah?
ps:
Saya juga telah mengirimkan masalah saya ke Forum Pengembang Apple untuk berjaga-jaga jika itu bukan masalah perpustakaan ini.
saya menggunakan react-native-onesignal 3.9.1 pada versi react native 0.60.0...Saya dapat mengatasi masalah ini dengan memasukkan x86_64 di dalam pengaturan yang Ditentukan Pengguna (VALID_ARCHS)
Apa kabar,
Saya pikir masalah ini aman untuk ditutup karena sepertinya bukan masalah OneSignal.
@abdullahizzuddiin
(Masalah Berbeda, pertimbangkan untuk membuka tiket terpisah)
Untuk visibilitas, saya akan memposting salah satu tanggapan ke utas Forum Dev Apple :
MASALAH:
Mencoba menjalankan build di perangkat yang sebenarnya gagal, meskipun build berhasil di MacBook Pro saya.
Terjadi galat berikut dengan pesan ini:
Profil penyediaan "Profil Penyediaan Tim iOS: com.xxxxxxxxxxxx.Nama -App" tidak menyertakan perangkat "iPhone" yang saat ini dipilih (pengidentifikasi 0000xxxx-000xxxxxxxxxxxxxxxxxx).
Panduan Online Bantuan Xcode
Preferensi akun
Gunakan preferensi Akun untuk mengelola aset akun pengembang (menandatangani sertifikat dan profil penyediaan), menambahkan repositori, dan menambahkan server.
Untuk membuka preferensi Akun, pilih Xcode > Preferensi dan klik Akun.
I Kemudian saya mengklik, mengelola sertifikat, dan menambahkan sertifikat baru dengan mengklik simbol plus.
MASALAH TERSELESAIKAN:
Saya kemudian menjalankan build saya dan kesalahan penandatanganan saya dihapus, aplikasi diinstal pada iPhone 11 Pro Max saya.
Semoga solusi ini membantu Anda.
Hai @rgomezp
Masalah ini adalah campuran dari masalah yang berbeda. Yang Anda tunjuk tidak ada hubungannya dengan masalah Simulator itu sendiri, itu adalah sesuatu yang ada hubungannya dengan RCTOneSignal
karena penggunaan VALID_ARCHS
Saya tidak tahu apakah kami harus menutup masalah ini sepenuhnya sampai simulator diselesaikan.
Hai @rgomezp
Saya telah mengikuti saran dari Apple Dev Forum yang Anda kutip di atas. Tapi, itu tidak menyelesaikan masalah saya.
Untuk sementara, saya menurunkan versi Xcode ke 11.7 dan saya berhasil membangun, menjalankan, dan mengarsipkan. Tapi, saya masih bisa melakukan tindakan itu di Xcode 12.0
Saya akan membiarkan ini terbuka untuk ditutup secara otomatis pada # 1053
Tampaknya Xcode 12 build untuk simulator dengan arsitektur - arm64, i386, x86_64 .
Jadi solusi solusi saya adalah
1. Add **arm64** in **Excluded Architectures** of Project Build setting 2. Remove **VALID ARCHS** from RCTOneSignal subproject build setting. **(VAILD ARCHS was moved to User-Defined of build setting in Xcode 12)**
Ini bekerja dengan baik di proyek saya.
Ini bekerja untuk saya. Ingatlah untuk menghapusnya. Tidak hanya mengosongkan "" karena tidak akan berfungsi
edit:
Proyek saya menggunakan tautan manual Satu sinyal 3.2.12.
reaksi asli 0.59.9
xkode 12
Saya mencoba solusi stanleyctcl yang berfungsi di simulator untuk debug dan rilis build. Tetapi ketika membangun untuk perangkat Generik/Arsip saya menghadapi masalah yang sama seperti abdullahizzuddiin
Tidak ada arsitektur untuk dikompilasi (ARCHS=arm64, VALID_ARCHS=arm64 arm64e armv7 armv7s, EXCLUDED_ARCHS=(
arm64
))
Solusi yang berhasil untuk saya adalah
Terapkan ini saja
2. Remove **VALID ARCHS** from RCTOneSignal subproject build setting. **(VAILD ARCHS was moved to User-Defined of build setting in Xcode 12)**
Ini akan membuat Arsip berfungsi tetapi rilis simulator gagal. Untuk memperbaiki itu. anda harus pergi Semua target proyek dan target pod -> Pengaturan Bangun -> Arsitektur -> Bangun Arsitektur Aktif Saja -> Setel 'Ya' untuk mode rilis
Penjelasan dan Langkah-langkahnya: https://stackoverflow.com/a/64139830/9232424.
Baca lebih lanjut: https://medium.com/macoclock/deep-drive-xcode-build-settings-827c3ce4811c.
Ah, burukku. Saya lupa detail kecilnya. Terima kasih @carloscuesta telah menunjuk saya. Ternyata saya hanya perlu mengatur
Excluded Architecture
tanpa menghapusVALID ARCHS
dariRCTOneSignal
pengaturan pembangunan subproyek. 🤔= = =
Saya pikir, saya mendapat kesalahan perbedaan. Saya telah berhasil mengarsipkan. Tapi, setelah saya memilih "Kelola Penandatanganan Secara Otomatis", saya mendapatkan kesalahan iniSaya dapat menyebarkan aplikasi ke Appstore tanpa masalah pada versi Xcode sebelumnya. Sebelumnya, saya menggunakan 11.7. Sekarang, saya menggunakan 12.0 dan saya langsung mendapatkan kesalahan ini tanpa ada perubahan pada repo saya.
//package.json react-native-onesignal: 3.8.1 //Podfile pod 'OneSignal', '>= 2.14.2', '< 3.0' ... target 'OneSignalNotificationServiceExtension' do pod 'OneSignal', '>= 2.14.2', '< 3.0' end
Ada petunjuk? atau haruskah saya membuat masalah terpisah?
ps:
Saya juga telah mengirimkan masalah saya ke Forum Pengembang Apple untuk berjaga-jaga jika itu bukan masalah perpustakaan ini.
Masalah yang sama terjadi dengan saya di xcode 12, Apakah Anda menyelesaikan masalah? @abdullahizzuddiin atau Anda baru saja menurunkan versi xcode ke 11.7
Terima kasih
Untuk berjalan di simulator, saya harus menambahkan " arm64 " di " Arsitektur yang dikecualikan ".
Tapi, untuk menjalankan aplikasi di perangkat nyata, saya harus membiarkannya tanpa modifikasi " Arsitektur yang Dikecualikan ".
Jadi saya harus membuat perubahan ini setiap kali saya berlari.
Saya harap ini membantu.
Masalah yang sama di sini, itu kembali.
Sama
Sama
Komentar yang paling membantu
Saya juga mengalami beberapa masalah dengan Xcode 12
Saya berhasil membangun proyek di Xcode 11. Namun begitu saya membuka Xcode12 dan membangun proyek saya mendapatkan kesalahan berikut:
Ini sepertinya bukan kesalahan dari sisi OneSignal. Sepertinya ada yang aneh dengan cache atau semacamnya,
hal yang saya coba:
rm -rf ~/Library/Developer/Xcode/DerivedData/
Saya tidak tahu apa lagi yang harus saya coba, saya akan mengatakan bahwa semuanya terhubung dengan benar karena aplikasi berfungsi dengan baik di Produksi dan build bekerja dengan Xcode 11.
Saya memiliki perpustakaan yang ditautkan secara manual menggunakan panduan OneSignal, adakah ide tentang cara memperbaikinya? 🙏🏼
Biasanya ketika saya mendapatkan masalah ini diselesaikan dengan membersihkan
DerivedData
tetapi saya tidak dapat menghilangkan kesalahan