Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[📚] Issues while seting up iOS notification images - iOS Notification Images #7632

Open
darlanhms opened this issue Feb 19, 2024 · 3 comments
Labels
Help: Good First Issue Issues that are non-critical issues & well defined for first time contributors. Type: Docs

Comments

@darlanhms
Copy link

darlanhms commented Feb 19, 2024

Summary: I followed every step on iOS Notification Images section and I still had some issues building my application, I managed to solve em' but I don't know if it is worth documenting. (It is a expo bare workflow BTW). It wasn't an error with this library itself and it is probably some annoying ios configuration, I just think it is helpful to share if someone is having the same issues.

  • Unable to integrate the following embedded targets with their respective host targets (a host target is a "parent" target which embeds a "child" target like a framework or extension)

This issue always occurs when I put target 'ImageNotification' do ... at the end of the file.
I solved it by putting it before the last end tag.

  • Cycle inside ...; building could produce unreliable results. Cycle details: → Target '...': ExtractAppIntentsMetadata

I solved it by clicking on xcode project, Targets -> Build Phases and dragging "Embed Frameworks" above "Compile Sources"

  • 'sharedApplication' is unavailable: not available on iOS

I solved it by pasting the following code to Podfile. It disables that option on every pod.

  post_install do |installer|
    ...
    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'NO'
      end
    end
   ...

  • [Sandbox: bash(72986) deny(1) file-write-data /Users/XXX/ios/Pods/resources-to-copy-XXXShareExtension.txt

I solved it by going to xcode project Build Settings and setting User Script Sandboxing to 'No'


I'm not experienced at writing issues, if the issue is bad written or not related just close it.

@darlanhms darlanhms added Help: Good First Issue Issues that are non-critical issues & well defined for first time contributors. Type: Docs labels Feb 19, 2024
@controtie
Copy link

Super helpful finding this post today. Thanks for sharing your findings!

@themtaysw
Copy link

themtaysw commented Apr 3, 2024

hi @darlanhms so i followed your guide and its great and worked before but since i needed clean build i prebuild with expo and now this step fix:

'sharedApplication' is unavailable: not available on iOS (App Extension) - Use view controller based solutions where appropriate instead.

doesnt work, any suggestion?

my Podfile:

require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking")
require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods")

require 'json'
podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {}

ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0'
ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] = podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR']

platform :ios, podfile_properties['ios.deploymentTarget'] || '13.4'
install! 'cocoapods',
  :deterministic_uuids => false

prepare_react_native_project!

# If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set.
# because `react-native-flipper` depends on (FlipperKit,...), which will be excluded. To fix this,
# you can also exclude `react-native-flipper` in `react-native.config.js`
#
# ```js
# module.exports = {
#   dependencies: {
#     ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}),
#   }
# }
# ```
flipper_config = FlipperConfiguration.disabled
if ENV['NO_FLIPPER'] == '1' then
  # Explicitly disabled through environment variables
  flipper_config = FlipperConfiguration.disabled
elsif podfile_properties.key?('ios.flipper') then
  # Configure Flipper in Podfile.properties.json
  if podfile_properties['ios.flipper'] == 'true' then
    flipper_config = FlipperConfiguration.enabled(["Debug", "Release"])
  elsif podfile_properties['ios.flipper'] != 'false' then
    flipper_config = FlipperConfiguration.enabled(["Debug", "Release"], { 'Flipper' => podfile_properties['ios.flipper'] })
  end
end

target 'matysw' do
  use_expo_modules!
  config = use_native_modules!

  use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks']
  use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS']

  use_react_native!(
    :path => config[:reactNativePath],
    :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes',
    # An absolute path to your application root.
    :app_path => "#{Pod::Config.instance.installation_root}/..",
    # Note that if you have use_frameworks! enabled, Flipper will not work if enabled
    :flipper_configuration => flipper_config
  )

  post_install do |installer|
    react_native_post_install(
      installer,
      config[:reactNativePath],
      :mac_catalyst_enabled => false
    )

    # This is necessary for Xcode 14, because it signs resource bundles by default
    # when building for devices.
    installer.target_installation_results.pod_target_installation_results
      .each do |pod_name, target_installation_result|
      target_installation_result.resource_bundle_targets.each do |resource_bundle_target|
        resource_bundle_target.build_configurations.each do |config|
          config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
        end
      end
    end
    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'NO'
      end
    end
  end

  post_integrate do |installer|
    begin
      expo_patch_react_imports!(installer)
    rescue => e
      Pod::UI.warn e
    end
  end
  
  target 'ImageNotification' do
    pod 'Firebase/Messaging', '~> 10.23.1'
  end
end

@JamesZhao2022
Copy link

Thank you so much for help, I did everything to fix the issue. Build and run all works, but the image didn't show, did you do anything to make the image show in app notifcation?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Help: Good First Issue Issues that are non-critical issues & well defined for first time contributors. Type: Docs
Projects
None yet
Development

No branches or pull requests

4 participants