рд╡рд┐рд╡рд░рдг:
рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рд╕реЗ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдПрд╕рдбреАрдХреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рд╣реИ - https://documentation.onesignal.com/docs/react-native-sdk-setup
рдореИрдВрдиреЗ npm рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝рд╛ рд╣реИ, рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рд╣реИ react-native link
рдФрд░ рд╕рд╛рде рд╣реА pod install
ред рд╕рдм рдХреБрдЫ рд╕реБрдЪрд╛рд░реВ рд╣реЛ рдЧрдпрд╛ред
рдлрд┐рд░ рдореИрдВ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реВрдВред рдЬрдм рдореИрдВ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдкрд╣реБрдБрдЪрддрд╛ рд╣реВрдБ рдЬрд╣рд╛рдБ рдореБрдЭреЗ Link Binary with Libararies
рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ libRCTOneSignal.a
рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕реЗ рдЙрд╕ рд╕реВрдЪреА рдореЗрдВ рдирд╣реАрдВ рдвреВрдВрдв рдкрд╛ рд░рд╣рд╛ рд╣реВрдБ рдЬреЛ Xcode рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЬрдм рдореИрдВ рдПрдХ рд╕рд┐рдЧреНрдирд▓ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдпрд╣ рд╕рдм рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ:
рдпрд╣рд╛рдБ рдореЗрд░реА рд╢реАрд░реНрд╖рд▓реЗрдЦ рдЦреЛрдЬ рдкреГрд╖реНрда рд╕реЗрдЯрд┐рдВрдЧ рд╣реИ:
рдЕрдм рдореИрдВрдиреЗ 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)
рд╡рд╛рддрд╛рд╡рд░рдг
3.2.6
0.55.4
9.2
react-native link
рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: DI рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ RCTOneSignal
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ Libraries
рдЬреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдлрд┐рд░ рдореИрдВ libRCTOneSignal.a
рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк react-native link
рдЕрддрд┐рд░рд┐рдХреНрдд рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд▓реЛрдЧ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХреЗрдВ рдХрд┐ рд▓рд┐рдВрдХ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ :)
рдЖрдкрдиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛?
рдпрд╣ рднреА рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ рдХрд┐ RCTOneSignal рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП
@nickyhajal @abdul-elah-js @steverob рдХреНрдпрд╛ рдХреЛрдИ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ RCTOneSignal
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ Libraries
рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП?
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рднреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
@pacozaa рдЖрдк рдпрд╣рд╛рдВ рдлреЗрд╕рдмреБрдХ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: https://facebook.github.io/react-native/docs/linking-libraries-ios
node_modules/react-native-onesignal/ios рдЦреЛрд▓реЗрдВ, рдлрд┐рд░ RCTOneSignal.xcodeproj рдХреЛ XCode рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлреЛрд▓реНрдбрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдбреНрд░реИрдЧ рдФрд░ рдбреНрд░реЙрдк рдХрд░реЗрдВ, рдлрд┐рд░ libRCTOneSignal.a рд╕рд░реНрдЪ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ-рдиреЗрдЯрд┐рд╡ рд╕реЗрдЯрдЕрдк рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдиреЗ рдФрд░ рд╣рдорд╛рд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдХреЛрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝реЛрд▓реНрдбрд░ рдирд╣реАрдВред
@rgomezp рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ? libRCTOneSignal.a рдПрдХреНрд╕рдХреЛрдб 12 рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ рдирд╣реАрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХреНрд╕рдХреЛрдб 11.7 рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
@рд╢реНрд░реА рдЕрд▓реЗрдЦрд┐рди ,
ios
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЬрд╛рдХрд░ pod deintegrate && pod install
рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП Xcode 12 рдореЗрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдкреЙрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ред
рд╣рд╛рдЙрдбреА,
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдк рдореЗрдВ рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ Xcode 12 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ _not_ Cocoapods рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рдкреЙрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ Xcode 12 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдФрд░ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИред :(
рд▓рд┐рдм рдХреЛ рдкреЙрдбреНрд╕ рдореЗрдВ рд▓реЗ рдЬрд╛рдирд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рдЯрд╛рд░рдЧреЗрдЯ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХреГрдкрдпрд╛ рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдХрд┐ ASAP ЁЯЩП
@rgomezp рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЙрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ? рдХреЛрдХреЛрдкреЛрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ OneSignal рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ 0.59 . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
react-native-onesignal
рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рдЖ рд░рд╣реА рд╣реИрдВред рдпрд╣рд╛рдБ рдкреЙрдб рдЙрджрд╛рд╣рд░рдг рд╣реИ:
# 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 (рдХреЛрдИ рдХреЛрдХреЛрдкреЛрдбреНрд╕ рдирд╣реАрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ рдФрд░ рдпрд╣ рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рд░рдг XCode 12 рдкрд░ рдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИ
@rgomezp рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕реЗ рджреЗрдЦ рд░рд╣рд╛ рд╣реИ?
рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ 0.59 (рдХреЛрдИ рдХреЛрдХреЛрдкреЛрдбреНрд╕ рдирд╣реАрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ рдФрд░ рдпрд╣ рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рд░рдг 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
рдЕрджреНрдпрддрди 1:
рдЕрдЧрд░ рдореИрдВ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдРрдк рдмрдирд╛рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ... рд╕рдорд╕реНрдпрд╛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдореИрдВ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ (рдЙрдирдореЗрдВ рд╕реЗ рд╕рднреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрдИрдУрдПрд╕ рдХреЗ рд╕рд╛рде)
рдЕрдкрдбреЗрдЯ 2:
рдореИрдВ рднреМрддрд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рднреА рдбрд┐рдмрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдЕрдкрдбреЗрдЯ 3:
рдореИрдВ рдбрд┐рдмрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди onesignal рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕рд╣рдорддрд┐ рдХрд╛ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рд╕реВрдЪрдирд╛рдПрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИрдВред рдореИрдВрдиреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг 3.9.2 рднреА рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ред
рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди xcode рдХреЛ 11.7 рдкрд░ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рдирд╛ рдФрд░ ios рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдмреИрдХрдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ред рд╕рдорд╕реНрдпрд╛ xcode 12+ . рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ
рдореИрдВрдиреЗ XCode рдХреЛ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬреИрд╕рд╛ рдХрд┐ @Tebrynn рдиреЗ рдХрд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред
рдореЗрд░реЗ рд▓рд┐рдП, рдореИрдиреБрдЕрд▓ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЛ Cocoapods рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдерд╛ред
рдореИрдВрдиреЗ рдЕрднреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рд╣реИ (https://documentation.onesignal.com/docs/react-native-sdk-setup)ред
рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрдкрд╛рдп?
рдореИрдВрдиреЗ рдЕрднреА Xcode12 рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдмрд┐рд▓реНрдб рдкрд░ рднреА рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред
рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХреНрд╕рдХреЛрдб 12 рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ libRCTOneSignal.a рдирд╣реАрдВ рдвреВрдВрдврдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЙрди рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░реЛрдВ рдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред рдореИрдВ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВред
рдореИрдВрдиреЗ OneSignal рдХреЗ рд▓рд┐рдП arm64 рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдИ рд▓реЗрдЦ рдкрдврд╝реЗред рдореИрдВрдиреЗ рдЕрдм рддрдХ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрд┐рд╕реНрдордд рдХреЗ рдЗрдиреНрд╣реЗрдВ рдЖрдЬрдорд╛рдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЪреВрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рд╢рд╛рдпрдж рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЬреНрдпрд╛рджрд╛ рд╕рдордп рдирд╣реАрдВ рдмрд┐рддрд╛рдКрдВрдЧрд╛ред
рд╡рд╣реА рдореБрджреНрджрд╛, рдПрдХреНрд╕рдХреЛрдб 12.4 рдФрд░ рдЖрд░рдПрди 0.59.10ред
рдпрд╣рд╛рдБ рд╡рд╣реА рдореБрджреНрджрд╛ред
рд╣рд╛рдЙрдбреА,
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдиреНрдпреБрдЕрд▓ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХрд┐рд╕реА рддрд░рд╣ рдЯреВрдЯ рдЧрдПред рд╣рдореЗрдВ рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдФрд░ рдЦреБрджрд╛рдИ рдХрд░рдиреА рд╣реЛрдЧреАред
рдЖрдкрдХреЗ рдзреИрд░реНрдп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдЗрд╕ рдмреАрдЪ, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ, Cocoapods рд╕реНрдерд╛рдкрдирд╛ рд╡рд┐рдзрд┐ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ
рдореИрдВ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХреЛрдИ рднреА рд╕рдорд╛рдзрд╛рди?
рд╣реИрд▓реЛ, рд░рд┐рдПрдХреНрдЯ-рдиреЗрдЯрд┐рд╡-рд╡рдирд╕рд┐рдЧреНрдирд▓ рд╕рдВрд╕реНрдХрд░рдг 4.0.0 рдХреЗ рдЕрдиреБрд╕рд╛рд░ RCTOneSignal.xcodeproj рдореЗрдВ рдирд┐рд╣рд┐рдд рдмрд╛рдЗрдирд░реА рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдкрдХреЛ OneSignal рдХреЛ NotificationServiceExtension рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП Cocoapods рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдЖрдк рдЕрдкрдиреЗ рдкреЙрдбрдлрд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝рдХрд░ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
target 'OneSignalNotificationServiceExtension' do
pod 'OneSignal', '>= 3.0', '< 4.0'
end
рдлрд┐рд░ рдпрджрд┐ рдЖрдк рд╕реНрд╡рд┐рдлреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕реЗрд╡рд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рдореНрди рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ
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>
рдкреВрд░рд╛ рд╕реЗрдЯрдЕрдк рдЧрд╛рдЗрдб рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
react-native link
рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: DI рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗRCTOneSignal
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛLibraries
рдЬреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдлрд┐рд░ рдореИрдВlibRCTOneSignal.a
рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк
react-native link
рдЕрддрд┐рд░рд┐рдХреНрдд рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд▓реЛрдЧ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХреЗрдВ рдХрд┐ рд▓рд┐рдВрдХ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ :)