Skip to content

feat: [SDK-5566] install the iOS SDK from OneSignal-XCFramework with the NSE and App Group - #83

Open
sherwinski wants to merge 2 commits into
sherwin/sdk-5562from
sherwin/sdk-5566
Open

sherwinski wants to merge 2 commits into
sherwin/sdk-5562from
sherwin/sdk-5566

Conversation

@sherwinski

Copy link
Copy Markdown
Collaborator

One-Line Summary

Native iOS setup installs the SDK from OneSignal-XCFramework with the documented product-to-target map, and creates the Notification Service Extension and App Group by default.

Ticket: SDK-5566

Details

The resolver's SPM line now names OneSignal-XCFramework (the bug-bash run pinned OneSignal-iOS-SDK, the source repository) with OneSignalFramework + OneSignalInAppMessages on the app target and OneSignalExtension on the extension; the Podfile output matches the documentation's 2 target blocks. ios.md makes the NSE and App Group part of the default install, with the recipe in the new ios-nse.md and 3 new templates; verify_integration.py checks the target, the link, and the shared App Group. The safety contract §8, the telemetry contract, and the platform matrix say the same.

Notes

  • Decision: OneSignalInAppMessages is in by default (the documentation marks it Recommended, and it needs no code). OneSignalLocation is out unless the user's request names location; the summary mentions it in one sentence. No new question.
  • The feed lists OneSignal-iOS-SDK; OneSignal-XCFramework publishes the same tags, so the pin applies to both (checked: tags 5.5.1 to 5.8.0 exist in both). The "Add XCFramework channels to sdk-releases" item from the ticket is a change in the sdk-releases repository and is not in this PR.
  • The NSE target is a pbxproj text edit first (the shapes File ▸ New ▸ Target writes), with the human hand-off as fallback under the existing capability_manual class.
  • The bundle gate now exempts fenced code blocks from the ../ check, because the rpath in the pbxproj snippet needs ../../. A self-test case keeps a ../ in prose rejected.
  • Wrapper frameworks (cross-platform.md) keep the NSE optional; this PR covers native iOS only.

Testing

Scenario Session ID Verdict
compile_check_ios.sh (3 templates compile or lint; 3 negative controls rejected) — pass
verify_integration.py --platform ios on a scratch fixture: good tree passes; missing NotificationService.swift → warn; App Group mismatch → error — pass
resolve_sdk_version.py ios (json, podfile, podfile-nse) — pass
package_directory_bundle.py --check and --self-test — pass
iOS setup eval scenario not run —

Affected areas

  • skills/setup/SKILL.md
  • skills/setup/assets/
  • skills/credentials/SKILL.md
  • skills/verify/SKILL.md
  • scripts/
  • references/

A pbxproj snippet in a skill carries an rpath with ../../ in it. That
text goes into the user's project and is not a link the plugin resolves,
so the gate now skips fenced code blocks for the parent-segment check
only. A new self-test case keeps a ../ in prose rejected.
… App Group

The resolver's SPM line now names the OneSignal-XCFramework package and
the product-to-target map; the Podfile output gains the in-app messages
subspec and a line for the extension target. The default product set is
OneSignalFramework and OneSignalInAppMessages on the app target and
OneSignalExtension on the extension; OneSignalLocation is added only on
request.

The Notification Service Extension and the App Group are now part of the
default native iOS install. ios-nse.md holds the recipe, 3 new templates
hold the extension files, compile_check_ios.sh compiles the Swift one
against a stub of OneSignalExtension.h, and verify_integration.py checks
the target, the link, and the shared App Group. The safety and telemetry
contracts, the platform matrix, and the prior-install detection follow.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant