diff --git a/.cursor/rules/pr-conventions.mdc b/.cursor/rules/pr-conventions.mdc deleted file mode 100644 index cd953b17..00000000 --- a/.cursor/rules/pr-conventions.mdc +++ /dev/null @@ -1,32 +0,0 @@ ---- -description: Conventions for pull request titles and body content -alwaysApply: true ---- - -# Pull Request Conventions - -## PR Title - -Use semantic/conventional commit prefixes in PR titles: - -- `fix:` for bug fixes -- `feat:` for new features -- `chore:` for maintenance tasks (deps, CI, tooling) -- `refactor:` for code restructuring without behavior changes -- `docs:` for documentation-only changes -- `test:` for test-only changes - -Example: `fix: resolve notification grouping on Android 14` - -## PR Body - -Follow the repo's PR template at `.github/pull_request_template.md`. Every PR body must include: - -1. **One Line Summary** (required) -2. **Motivation** (required) explaining why the change is being made -3. **Scope** (recommended) describing what is and isn't affected -4. **Testing** section with manual and/or unit testing details -5. **Affected code checklist** with relevant items checked -6. **Checklist** sections confirmed - -Remove the instructional header block (between `` and ``) before submitting. diff --git a/.github/workflows/asana-add-comment.yml b/.github/workflows/asana-add-comment.yml deleted file mode 100644 index 1235c8f1..00000000 --- a/.github/workflows/asana-add-comment.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: Github --> Asana Add Comment Workflow - -on: - issue_comment: - types: [created] - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-latest - permissions: - issues: read - steps: - - name: Get Asana Task Corresponding to Issue - env: - ISSUE_ID: ${{ github.event.issue.id }} - REPO_FULL_NAME: ${{ github.event.repository.full_name }} - WORKSPACE_ID: "780103692902078" - run: | - REPO_SCOPED_ISSUE_ID="$REPO_FULL_NAME#$ISSUE_ID" - - curl --request GET \ - --url "https://app.asana.com/api/1.0/workspaces/$WORKSPACE_ID/tasks/search?opt_fields=notes&text=$REPO_SCOPED_ISSUE_ID&sort_by=modified_at&sort_ascending=false" \ - --header 'accept: application/json' \ - --header 'authorization: Bearer ${{ secrets.ASANA_PAT }}' \ - --output response.json - TASK_GID=$(jq -r '.data[0].gid' response.json) - echo "TASK_GID=$TASK_GID" >> $GITHUB_ENV - - name: Comment on Asana Task - env: - ISSUE_COMMENT: ${{ github.event.comment.body }} - COMMENTER_NAME: ${{ github.event.comment.user.login }} - run: | - BODY_DATA=$(jq -n \ - --arg text "$ISSUE_COMMENT" \ - --arg commenter_name "$COMMENTER_NAME" \ - '{ - "data": { - "text": "\($commenter_name) left a comment:\n\n\($text)", - } - }') - curl --request POST \ - --url https://app.asana.com/api/1.0/tasks/$TASK_GID/stories \ - --header 'accept: application/json' \ - --header 'authorization: Bearer ${{ secrets.ASANA_PAT }}' \ - --header 'content-type: application/json' \ - --data "$BODY_DATA" \ No newline at end of file diff --git a/.github/workflows/asana-create-task.yml b/.github/workflows/asana-create-task.yml deleted file mode 100644 index e6a444ec..00000000 --- a/.github/workflows/asana-create-task.yml +++ /dev/null @@ -1,119 +0,0 @@ -name: Github --> Asana Create Task Workflow - -on: - issues: - types: [opened] - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-latest - permissions: - issues: read - steps: - - name: Create Asana task - env: - ISSUE_TITLE: ${{ github.event.issue.title }} - ISSUE_BODY: ${{ github.event.issue.body }} - ISSUE_HTML_URL: ${{ github.event.issue.html_url }} - ISSUE_ID: ${{ github.event.issue.id }} - ISSUE_NUMBER: ${{ github.event.issue.number }} - REPO_FULL_NAME: ${{ github.event.repository.full_name }} - SDK_PLATFORM_GROUP: "1208961704779581" - SDK_PLATFORM_GROUP_CROSS_PLATFORM: "1208961704779584" - SDK_PLATFORM: "1208961704779592" - SDK_PLATFORM_FLUTTER: "1208961704779607" - DSA_PRIORITY: "1208779519954980" - DSA_PRIORITY_NO_PRIORITY: "1208779521616959" - DSA_STATUS: "1210103546117753" - DSA_STATUS_TRIAGE: "1210103546117756" - DSA_REPO_TICKET_URL: "1210347857768758" - WORKSPACE_ID: "780103692902078" - PROJECT_ID_GITHUB_AND_IMPORTANT_SDK_ISSUES: "1208970714650308" - PROJECT_ID_SDK_BACKLOG: "1208777198342772" - run: | - DATA_BODY=$(jq -n \ - --arg title "$ISSUE_TITLE" \ - --arg body "$ISSUE_BODY" \ - --arg url "$ISSUE_HTML_URL" \ - --arg id "$ISSUE_ID" \ - --arg number "$ISSUE_NUMBER" \ - --arg repo_full_name "$REPO_FULL_NAME" \ - --arg sdk_platform_group "$SDK_PLATFORM_GROUP" \ - --arg sdk_platform_group_cross_platform "$SDK_PLATFORM_GROUP_CROSS_PLATFORM" \ - --arg sdk_platform "$SDK_PLATFORM" \ - --arg sdk_platform_flutter "$SDK_PLATFORM_FLUTTER" \ - --arg dsa_priority "$DSA_PRIORITY" \ - --arg dsa_priority_no_priority "$DSA_PRIORITY_NO_PRIORITY" \ - --arg dsa_status "$DSA_STATUS" \ - --arg dsa_status_triage "$DSA_STATUS_TRIAGE" \ - --arg dsa_repo_ticket_url "$DSA_REPO_TICKET_URL" \ - --arg workspace_id "$WORKSPACE_ID" \ - --arg project_id_github_and_important_sdk_issues "$PROJECT_ID_GITHUB_AND_IMPORTANT_SDK_ISSUES" \ - --arg project_id_sdk_backlog "$PROJECT_ID_SDK_BACKLOG" \ - '{ - "data": { - "custom_fields": { - $sdk_platform_group: $sdk_platform_group_cross_platform, - $sdk_platform: $sdk_platform_flutter, - $dsa_priority: $dsa_priority_no_priority, - $dsa_status: $dsa_status_triage, - $dsa_repo_ticket_url: $url - }, - "name": $title, - "workspace": $workspace_id, - "projects": [$project_id_github_and_important_sdk_issues, $project_id_sdk_backlog], - "notes": "Issue ID: \($repo_full_name)#\($id)\nIssue number: \($number)\nCreated via GitHub Actions\n----\n\n\($body)" - } - }') - - curl --request POST \ - --url https://app.asana.com/api/1.0/tasks?opt_pretty=true \ - --header 'accept: application/json' \ - --header 'authorization: Bearer ${{ secrets.ASANA_PAT }}' \ - --header 'content-type: application/json' \ - --data "$DATA_BODY" \ - --output response.json - - TASK_GID=$(jq -r '.data.gid' response.json) - echo "TASK_GID=$TASK_GID" >> $GITHUB_ENV - - name: Move to "0 Unclassified" section in "Github & Important SDK Issues" project - env: - SECTION_ID_GITHUB_AND_IMPORTANT_SDK_ISSUES: "1208970755434051" - run: | - DATA_BODY=$(jq -n \ - --arg task_gid "$TASK_GID" \ - --arg section_id "$SECTION_ID_GITHUB_AND_IMPORTANT_SDK_ISSUES" \ - '{ - "data": { - "task": $task_gid, - "insert_after": "null" - } - }') - - curl --request POST \ - --url https://app.asana.com/api/1.0/sections/$section_id/addTask \ - --header 'accept: application/json' \ - --header 'authorization: Bearer ${{ secrets.ASANA_PAT }}' \ - --header 'content-type: application/json' \ - --data "$DATA_BODY" - - name: Move to "Untriaged" section in "SDK / Backlog" project - env: - SECTION_ID_SDK_BACKLOG: "1208899729378982" - run: | - DATA_BODY=$(jq -n \ - --arg task_gid "$TASK_GID" \ - --arg section_id "$SECTION_ID_SDK_BACKLOG" \ - '{ - "data": { - "task": $task_gid, - "insert_after": "null" - } - }') - - curl --request POST \ - --url https://app.asana.com/api/1.0/sections/$section_id/addTask \ - --header 'accept: application/json' \ - --header 'authorization: Bearer ${{ secrets.ASANA_PAT }}' \ - --header 'content-type: application/json' \ - --data "$DATA_BODY" \ No newline at end of file diff --git a/.github/workflows/asana-update-issue.yml b/.github/workflows/asana-update-issue.yml deleted file mode 100644 index d9dcebe9..00000000 --- a/.github/workflows/asana-update-issue.yml +++ /dev/null @@ -1,172 +0,0 @@ -name: Github --> Asana Issue Updates Workflow - -on: - issues: - types: [edited, deleted, closed, reopened, assigned, unassigned, labeled, unlabeled, milestoned, demilestoned, pinned, unpinned, locked, unlocked, transferred] - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-latest - permissions: - issues: read - steps: - - name: Get Asana Task Corresponding to Issue - env: - ISSUE_ID: ${{ github.event.issue.id }} - REPO_FULL_NAME: ${{ github.event.repository.full_name }} - WORKSPACE_ID: "780103692902078" - run: | - REPO_SCOPED_ISSUE_ID="$REPO_FULL_NAME#$ISSUE_ID" - - curl --request GET \ - --url "https://app.asana.com/api/1.0/workspaces/$WORKSPACE_ID/tasks/search?opt_fields=notes&text=$REPO_SCOPED_ISSUE_ID&sort_by=modified_at&sort_ascending=false" \ - --header 'accept: application/json' \ - --header 'authorization: Bearer ${{ secrets.ASANA_PAT }}' \ - --output response.json - TASK_GID=$(jq -r '.data[0].gid' response.json) - echo "TASK_GID=$TASK_GID" >> $GITHUB_ENV - - name: Determine Action and Post to Asana - env: - ACTION_TYPE: ${{ github.event.action }} - ACTOR_NAME: ${{ github.event.sender.login }} - ISSUE_TITLE: ${{ github.event.issue.title }} - ISSUE_NUMBER: ${{ github.event.issue.number }} - ISSUE_STATE: ${{ github.event.issue.state }} - run: | - # Map GitHub action types to human-readable descriptions - case "$ACTION_TYPE" in - "edited") - ACTION_DESC="edited the issue" - ;; - "deleted") - ACTION_DESC="deleted the issue" - ;; - "closed") - ACTION_DESC="closed the issue" - ;; - "reopened") - ACTION_DESC="reopened the issue" - ;; - "assigned") - ACTION_DESC="assigned the issue" - ;; - "unassigned") - ACTION_DESC="unassigned the issue" - ;; - "labeled") - ACTION_DESC="added labels to the issue" - ;; - "unlabeled") - ACTION_DESC="removed labels from the issue" - ;; - "milestoned") - ACTION_DESC="added the issue to a milestone" - ;; - "demilestoned") - ACTION_DESC="removed the issue from a milestone" - ;; - "pinned") - ACTION_DESC="pinned the issue" - ;; - "unpinned") - ACTION_DESC="unpinned the issue" - ;; - "locked") - ACTION_DESC="locked the issue" - ;; - "unlocked") - ACTION_DESC="unlocked the issue" - ;; - "transferred") - ACTION_DESC="transferred the issue" - ;; - *) - ACTION_DESC="performed an action on the issue" - ;; - esac - - # Add additional context for specific actions based on webhook payload - if [ "$ACTION_TYPE" = "assigned" ] && [ -n "${{ github.event.assignee.login }}" ]; then - ACTION_DESC="assigned the issue to ${{ github.event.assignee.login }}" - fi - - if [ "$ACTION_TYPE" = "unassigned" ] && [ -n "${{ github.event.assignee.login }}" ]; then - ACTION_DESC="unassigned the issue from ${{ github.event.assignee.login }}" - fi - - if [ "$ACTION_TYPE" = "labeled" ] && [ -n "${{ github.event.label.name }}" ]; then - LABEL_COLOR="${{ github.event.label.color }}" - ACTION_DESC="added label '${{ github.event.label.name }}' to the issue" - if [ -n "$LABEL_COLOR" ]; then - ACTION_DESC="$ACTION_DESC (color: #$LABEL_COLOR)" - fi - fi - - if [ "$ACTION_TYPE" = "unlabeled" ] && [ -n "${{ github.event.label.name }}" ]; then - LABEL_COLOR="${{ github.event.label.color }}" - ACTION_DESC="removed label '${{ github.event.label.name }}' from the issue" - if [ -n "$LABEL_COLOR" ]; then - ACTION_DESC="$ACTION_DESC (color: #$LABEL_COLOR)" - fi - fi - - if [ "$ACTION_TYPE" = "milestoned" ] && [ -n "${{ github.event.milestone.title }}" ]; then - MILESTONE_DUE_DATE="${{ github.event.milestone.due_on }}" - ACTION_DESC="added the issue to milestone '${{ github.event.milestone.title }}'" - if [ -n "$MILESTONE_DUE_DATE" ] && [ "$MILESTONE_DUE_DATE" != "null" ]; then - ACTION_DESC="$ACTION_DESC (due: $MILESTONE_DUE_DATE)" - fi - fi - - if [ "$ACTION_TYPE" = "demilestoned" ] && [ -n "${{ github.event.milestone.title }}" ]; then - ACTION_DESC="removed the issue from milestone '${{ github.event.milestone.title }}'" - fi - - if [ "$ACTION_TYPE" = "transferred" ] && [ -n "${{ github.event.changes.new_repository.full_name }}" ]; then - ACTION_DESC="transferred the issue to repository ${{ github.event.changes.new_repository.full_name }}" - fi - - if [ "$ACTION_TYPE" = "edited" ] && [ -n "${{ github.event.changes.title.from }}" ]; then - OLD_TITLE="${{ github.event.changes.title.from }}" - NEW_TITLE="${{ github.event.issue.title }}" - ACTION_DESC="edited the issue title from '$OLD_TITLE' to '$NEW_TITLE'" - fi - - echo "ACTION_DESC=$ACTION_DESC" >> $GITHUB_ENV - - # Only proceed if we found a task - if [ "$TASK_GID" != "null" ] && [ -n "$TASK_GID" ]; then - # Create a more detailed message with additional context - MESSAGE_TEXT="$ACTOR_NAME performed an action: $ACTION_DESC" - - # Add issue state information for state changes - if [ "$ACTION_TYPE" = "closed" ] || [ "$ACTION_TYPE" = "reopened" ]; then - MESSAGE_TEXT=$(printf "%s\nIssue state: %s" "$MESSAGE_TEXT" "$ISSUE_STATE") - fi - - # Add repository information for transferred issues - if [ "$ACTION_TYPE" = "transferred" ]; then - REPO_NAME="${{ github.event.repository.full_name }}" - MESSAGE_TEXT=$(printf "%s\nFrom repository: %s" "$MESSAGE_TEXT" "$REPO_NAME") - fi - - MESSAGE_TEXT=$(printf "%s\n\nIssue: #%s - %s" "$MESSAGE_TEXT" "$ISSUE_NUMBER" "$ISSUE_TITLE") - - BODY_DATA=$(jq -n \ - --arg text "$MESSAGE_TEXT" \ - '{ - "data": { - "text": $text - } - }') - - curl --request POST \ - --url https://app.asana.com/api/1.0/tasks/$TASK_GID/stories \ - --header 'accept: application/json' \ - --header 'authorization: Bearer ${{ secrets.ASANA_PAT }}' \ - --header 'content-type: application/json' \ - --data "$BODY_DATA" - else - echo "No corresponding Asana task found for issue ID: $ISSUE_ID" - fi \ No newline at end of file diff --git a/.github/workflows/create-release-pr.yml b/.github/workflows/create-release-pr.yml index b91965e0..dcd36495 100644 --- a/.github/workflows/create-release-pr.yml +++ b/.github/workflows/create-release-pr.yml @@ -136,6 +136,10 @@ jobs: sed -i '' "s|s.dependency 'OneSignalXCFramework', '[^']*'|s.dependency 'OneSignalXCFramework', '${VERSION}'|" ios/onesignal_flutter.podspec echo "✓ Updated ios/onesignal_flutter.podspec with iOS SDK ${VERSION}" + # Update Package.swift with new version + sed -i '' "s|\.package(url: \"https://github.com/OneSignal/OneSignal-XCFramework\", exact: \"[^\"]*\")|.package(url: \"https://github.com/OneSignal/OneSignal-XCFramework\", exact: \"${VERSION}\")|" ios/onesignal_flutter/Package.swift + echo "✓ Updated ios/onesignal_flutter/Package.swift with iOS SDK ${VERSION}" + # Only commit if there are changes git add -A git diff --staged --quiet && exit 0 @@ -158,7 +162,7 @@ jobs: sed -i '' "s/OneSignalWrapper\.setSdkVersion(\"[^\"]*\")/OneSignalWrapper.setSdkVersion(\"$WRAPPER_VERSION\")/g" android/src/main/java/com/onesignal/flutter/OneSignalPlugin.java # Update OneSignalPlugin.m wrapper version - sed -i '' "s/OneSignalWrapper\.sdkVersion = @\"[^\"]*\"/OneSignalWrapper.sdkVersion = @\"$WRAPPER_VERSION\"/g" ios/Classes/OneSignalPlugin.m + sed -i '' "s/OneSignalWrapper\.sdkVersion = @\"[^\"]*\"/OneSignalWrapper.sdkVersion = @\"$WRAPPER_VERSION\"/g" ios/onesignal_flutter/Sources/onesignal_flutter/OneSignalPlugin.m # Only commit if there are changes git add -A diff --git a/examples/demo/ios/Podfile.lock b/examples/demo/ios/Podfile.lock index d8512b81..236ac9ea 100644 --- a/examples/demo/ios/Podfile.lock +++ b/examples/demo/ios/Podfile.lock @@ -78,7 +78,7 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467 - onesignal_flutter: 557110960f936d1d2d792864149e79a58945c686 + onesignal_flutter: fa28e94a7baa3cd8b503fc4d760103405882f47f OneSignalXCFramework: 943852e7d70d719f73e9669d48620aeec1b93022 shared_preferences_foundation: 7036424c3d8ec98dfe75ff1667cb0cd531ec82bb url_launcher_ios: 7a95fa5b60cc718a708b8f2966718e93db0cef1b diff --git a/examples/demo/ios/Runner/Info.plist b/examples/demo/ios/Runner/Info.plist index b3283c76..c510f8a0 100644 --- a/examples/demo/ios/Runner/Info.plist +++ b/examples/demo/ios/Runner/Info.plist @@ -43,6 +43,10 @@ NSSupportsLiveActivities + NSLocationWhenInUseUsageDescription + This app uses your location to personalize notifications and content. + NSLocationAlwaysAndWhenInUseUsageDescription + This app uses your location to personalize notifications and content, even in the background. CADisableMinimumFrameDurationOnPhone UIApplicationSupportsIndirectInputEvents diff --git a/examples/demo/lib/main.dart b/examples/demo/lib/main.dart index f6dfc800..1e5544ec 100644 --- a/examples/demo/lib/main.dart +++ b/examples/demo/lib/main.dart @@ -78,7 +78,12 @@ Future main() async { }); // Set up API service - final apiKey = dotenv.env['ONESIGNAL_API_KEY'] ?? ''; + String apiKey = ''; + try { + apiKey = dotenv.env['ONESIGNAL_API_KEY'] ?? ''; + } catch (_) { + LogManager().w('App', 'API key not found, continuing without it'); + } final apiService = OneSignalApiService() ..setAppId(appId) ..setApiKey(apiKey); diff --git a/examples/demo/lib/widgets/app_text_field.dart b/examples/demo/lib/widgets/app_text_field.dart new file mode 100644 index 00000000..eae5a866 --- /dev/null +++ b/examples/demo/lib/widgets/app_text_field.dart @@ -0,0 +1,15 @@ +import 'package:flutter/material.dart'; + +class AppTextField extends TextField { + const AppTextField({ + super.key, + super.controller, + super.decoration, + super.keyboardType, + super.onChanged, + super.textAlign, + super.style, + super.maxLines, + super.autocorrect = false, + }); +} diff --git a/examples/demo/lib/widgets/dialogs.dart b/examples/demo/lib/widgets/dialogs.dart index 935695c1..9f6e3655 100644 --- a/examples/demo/lib/widgets/dialogs.dart +++ b/examples/demo/lib/widgets/dialogs.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import '../services/tooltip_helper.dart'; import '../theme.dart'; +import 'app_text_field.dart'; // Single input dialog (login, email, sms) class SingleInputDialog extends StatefulWidget { @@ -42,7 +43,7 @@ class _SingleInputDialogState extends State { width: double.maxFinite, child: Semantics( label: '${widget.fieldLabel}_input', - child: TextField( + child: AppTextField( controller: _controller, decoration: InputDecoration(labelText: widget.fieldLabel), keyboardType: widget.keyboardType, @@ -109,7 +110,7 @@ class _PairInputDialogState extends State { Expanded( child: Semantics( label: '${widget.keyLabel}_input', - child: TextField( + child: AppTextField( controller: _keyController, decoration: InputDecoration(labelText: widget.keyLabel), onChanged: (_) => setState(() {}), @@ -120,7 +121,7 @@ class _PairInputDialogState extends State { Expanded( child: Semantics( label: '${widget.valueLabel}_input', - child: TextField( + child: AppTextField( controller: _valueController, decoration: InputDecoration(labelText: widget.valueLabel), onChanged: (_) => setState(() {}), @@ -231,7 +232,7 @@ class _MultiPairInputDialogState extends State { Row( children: [ Expanded( - child: TextField( + child: AppTextField( controller: _keyControllers[i], decoration: InputDecoration( labelText: widget.keyLabel, @@ -241,7 +242,7 @@ class _MultiPairInputDialogState extends State { ), const SizedBox(width: 8), Expanded( - child: TextField( + child: AppTextField( controller: _valueControllers[i], decoration: InputDecoration( labelText: widget.valueLabel, @@ -380,7 +381,7 @@ class _LoginDialogState extends State { width: double.maxFinite, child: Semantics( label: 'external_user_id_input', - child: TextField( + child: AppTextField( controller: _controller, decoration: const InputDecoration(labelText: 'External User Id'), onChanged: (_) => setState(() {}), @@ -468,14 +469,14 @@ class _OutcomeDialogState extends State { ), ), const SizedBox(height: 8), - TextField( + AppTextField( controller: _nameController, decoration: const InputDecoration(labelText: 'Outcome Name'), onChanged: (_) => setState(() {}), ), if (_type == OutcomeType.withValue) ...[ const SizedBox(height: 12), - TextField( + AppTextField( controller: _valueController, decoration: const InputDecoration(labelText: 'Value'), keyboardType: @@ -563,13 +564,13 @@ class _TrackEventDialogState extends State { child: Column( mainAxisSize: MainAxisSize.min, children: [ - TextField( + AppTextField( controller: _nameController, decoration: const InputDecoration(labelText: 'Event Name'), onChanged: (_) => setState(() {}), ), const SizedBox(height: 12), - TextField( + AppTextField( controller: _propsController, decoration: InputDecoration( labelText: 'Properties (optional, JSON)', @@ -642,13 +643,13 @@ class _CustomNotificationDialogState extends State { child: Column( mainAxisSize: MainAxisSize.min, children: [ - TextField( + AppTextField( controller: _titleController, decoration: const InputDecoration(labelText: 'Title'), onChanged: (_) => setState(() {}), ), const SizedBox(height: 12), - TextField( + AppTextField( controller: _bodyController, decoration: const InputDecoration(labelText: 'Body'), onChanged: (_) => setState(() {}), diff --git a/examples/demo/lib/widgets/sections/live_activities_section.dart b/examples/demo/lib/widgets/sections/live_activities_section.dart index 22474eb9..dbe82125 100644 --- a/examples/demo/lib/widgets/sections/live_activities_section.dart +++ b/examples/demo/lib/widgets/sections/live_activities_section.dart @@ -3,6 +3,7 @@ import 'package:provider/provider.dart'; import '../../theme.dart'; import '../../viewmodels/app_viewmodel.dart'; +import '../app_text_field.dart'; import '../action_button.dart'; import '../section_card.dart'; @@ -138,7 +139,7 @@ class _InputRow extends StatelessWidget { ), ), Expanded( - child: TextField( + child: AppTextField( controller: controller, textAlign: TextAlign.right, style: const TextStyle(fontSize: 14, color: Color(0xFF212121)), @@ -149,7 +150,6 @@ class _InputRow extends StatelessWidget { contentPadding: EdgeInsets.symmetric(vertical: 4), isDense: true, ), - autocorrect: false, onChanged: onChanged, ), ), diff --git a/examples/demo/pubspec.yaml b/examples/demo/pubspec.yaml index 52577bec..1b71ee24 100644 --- a/examples/demo/pubspec.yaml +++ b/examples/demo/pubspec.yaml @@ -33,6 +33,8 @@ flutter_launcher_icons: adaptive_icon_foreground: "assets/onesignal_logo_icon_padded.png" flutter: + config: + enable-swift-package-manager: false uses-material-design: true assets: - assets/onesignal_logo.svg diff --git a/examples/demo_spm/.gitignore b/examples/demo_spm/.gitignore new file mode 100644 index 00000000..b841075b --- /dev/null +++ b/examples/demo_spm/.gitignore @@ -0,0 +1,48 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.build/ +.buildlog/ +.history +.svn/ +.swiftpm/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins-dependencies +.pub-cache/ +.pub/ +/build/ +/coverage/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release + +# Environment +.env diff --git a/examples/demo_spm/.metadata b/examples/demo_spm/.metadata new file mode 100644 index 00000000..83b34ebb --- /dev/null +++ b/examples/demo_spm/.metadata @@ -0,0 +1,45 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "f6ff1529fd6d8af5f706051d9251ac9231c83407" + channel: "stable" + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: f6ff1529fd6d8af5f706051d9251ac9231c83407 + base_revision: f6ff1529fd6d8af5f706051d9251ac9231c83407 + - platform: android + create_revision: f6ff1529fd6d8af5f706051d9251ac9231c83407 + base_revision: f6ff1529fd6d8af5f706051d9251ac9231c83407 + - platform: ios + create_revision: f6ff1529fd6d8af5f706051d9251ac9231c83407 + base_revision: f6ff1529fd6d8af5f706051d9251ac9231c83407 + - platform: linux + create_revision: f6ff1529fd6d8af5f706051d9251ac9231c83407 + base_revision: f6ff1529fd6d8af5f706051d9251ac9231c83407 + - platform: macos + create_revision: f6ff1529fd6d8af5f706051d9251ac9231c83407 + base_revision: f6ff1529fd6d8af5f706051d9251ac9231c83407 + - platform: web + create_revision: f6ff1529fd6d8af5f706051d9251ac9231c83407 + base_revision: f6ff1529fd6d8af5f706051d9251ac9231c83407 + - platform: windows + create_revision: f6ff1529fd6d8af5f706051d9251ac9231c83407 + base_revision: f6ff1529fd6d8af5f706051d9251ac9231c83407 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/examples/demo_spm/README.md b/examples/demo_spm/README.md new file mode 100644 index 00000000..dbd403a0 --- /dev/null +++ b/examples/demo_spm/README.md @@ -0,0 +1,16 @@ +# demo + +A new Flutter project. + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/examples/demo_spm/analysis_options.yaml b/examples/demo_spm/analysis_options.yaml new file mode 100644 index 00000000..0d290213 --- /dev/null +++ b/examples/demo_spm/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/examples/demo_spm/android/.gitignore b/examples/demo_spm/android/.gitignore new file mode 100644 index 00000000..be3943c9 --- /dev/null +++ b/examples/demo_spm/android/.gitignore @@ -0,0 +1,14 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java +.cxx/ + +# Remember to never publicly share your keystore. +# See https://flutter.dev/to/reference-keystore +key.properties +**/*.keystore +**/*.jks diff --git a/examples/demo_spm/android/app/build.gradle.kts b/examples/demo_spm/android/app/build.gradle.kts new file mode 100644 index 00000000..e9c12dae --- /dev/null +++ b/examples/demo_spm/android/app/build.gradle.kts @@ -0,0 +1,44 @@ +plugins { + id("com.android.application") + id("kotlin-android") + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id("dev.flutter.flutter-gradle-plugin") +} + +android { + namespace = "com.onesignal.example.demo" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_17.toString() + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId = "com.onesignal.example.demo" + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = flutter.minSdkVersion + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig = signingConfigs.getByName("debug") + } + } +} + +flutter { + source = "../.." +} diff --git a/examples/demo_spm/android/app/src/debug/AndroidManifest.xml b/examples/demo_spm/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 00000000..399f6981 --- /dev/null +++ b/examples/demo_spm/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/examples/demo_spm/android/app/src/main/AndroidManifest.xml b/examples/demo_spm/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..710757c5 --- /dev/null +++ b/examples/demo_spm/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/demo_spm/android/app/src/main/kotlin/com/onesignal/example/demo/MainActivity.kt b/examples/demo_spm/android/app/src/main/kotlin/com/onesignal/example/demo/MainActivity.kt new file mode 100644 index 00000000..9409a2eb --- /dev/null +++ b/examples/demo_spm/android/app/src/main/kotlin/com/onesignal/example/demo/MainActivity.kt @@ -0,0 +1,5 @@ +package com.onesignal.example.demo + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity : FlutterActivity() diff --git a/examples/demo_spm/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png b/examples/demo_spm/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png new file mode 100644 index 00000000..95de5cbf Binary files /dev/null and b/examples/demo_spm/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png differ diff --git a/examples/demo_spm/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png b/examples/demo_spm/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png new file mode 100644 index 00000000..639bc1f7 Binary files /dev/null and b/examples/demo_spm/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png differ diff --git a/examples/demo_spm/android/app/src/main/res/drawable-v21/launch_background.xml b/examples/demo_spm/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 00000000..f74085f3 --- /dev/null +++ b/examples/demo_spm/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/examples/demo_spm/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png b/examples/demo_spm/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png new file mode 100644 index 00000000..db57e205 Binary files /dev/null and b/examples/demo_spm/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png differ diff --git a/examples/demo_spm/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png b/examples/demo_spm/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 00000000..0f9c2897 Binary files /dev/null and b/examples/demo_spm/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png differ diff --git a/examples/demo_spm/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png b/examples/demo_spm/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 00000000..f278b388 Binary files /dev/null and b/examples/demo_spm/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png differ diff --git a/examples/demo_spm/android/app/src/main/res/drawable/launch_background.xml b/examples/demo_spm/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 00000000..304732f8 --- /dev/null +++ b/examples/demo_spm/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/examples/demo_spm/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/examples/demo_spm/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..c79c58a3 --- /dev/null +++ b/examples/demo_spm/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/examples/demo_spm/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/examples/demo_spm/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 00000000..88a040ba Binary files /dev/null and b/examples/demo_spm/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/examples/demo_spm/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/examples/demo_spm/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 00000000..d2c144f1 Binary files /dev/null and b/examples/demo_spm/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/examples/demo_spm/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/examples/demo_spm/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 00000000..680b2f0b Binary files /dev/null and b/examples/demo_spm/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/examples/demo_spm/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/examples/demo_spm/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 00000000..d241773d Binary files /dev/null and b/examples/demo_spm/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/examples/demo_spm/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/examples/demo_spm/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 00000000..6062e282 Binary files /dev/null and b/examples/demo_spm/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/examples/demo_spm/android/app/src/main/res/values-night/styles.xml b/examples/demo_spm/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 00000000..06952be7 --- /dev/null +++ b/examples/demo_spm/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/examples/demo_spm/android/app/src/main/res/values/colors.xml b/examples/demo_spm/android/app/src/main/res/values/colors.xml new file mode 100644 index 00000000..f42ada65 --- /dev/null +++ b/examples/demo_spm/android/app/src/main/res/values/colors.xml @@ -0,0 +1,4 @@ + + + #FFFFFF + diff --git a/examples/demo_spm/android/app/src/main/res/values/styles.xml b/examples/demo_spm/android/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..cb1ef880 --- /dev/null +++ b/examples/demo_spm/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/examples/demo_spm/android/app/src/profile/AndroidManifest.xml b/examples/demo_spm/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 00000000..399f6981 --- /dev/null +++ b/examples/demo_spm/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/examples/demo_spm/android/build.gradle.kts b/examples/demo_spm/android/build.gradle.kts new file mode 100644 index 00000000..dbee657b --- /dev/null +++ b/examples/demo_spm/android/build.gradle.kts @@ -0,0 +1,24 @@ +allprojects { + repositories { + google() + mavenCentral() + } +} + +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() +rootProject.layout.buildDirectory.value(newBuildDir) + +subprojects { + val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) + project.layout.buildDirectory.value(newSubprojectBuildDir) +} +subprojects { + project.evaluationDependsOn(":app") +} + +tasks.register("clean") { + delete(rootProject.layout.buildDirectory) +} diff --git a/examples/demo_spm/android/gradle.properties b/examples/demo_spm/android/gradle.properties new file mode 100644 index 00000000..fbee1d8c --- /dev/null +++ b/examples/demo_spm/android/gradle.properties @@ -0,0 +1,2 @@ +org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError +android.useAndroidX=true diff --git a/examples/demo_spm/android/gradle/wrapper/gradle-wrapper.properties b/examples/demo_spm/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..e4ef43fb --- /dev/null +++ b/examples/demo_spm/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-all.zip diff --git a/examples/demo_spm/android/settings.gradle.kts b/examples/demo_spm/android/settings.gradle.kts new file mode 100644 index 00000000..ca7fe065 --- /dev/null +++ b/examples/demo_spm/android/settings.gradle.kts @@ -0,0 +1,26 @@ +pluginManagement { + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id("dev.flutter.flutter-plugin-loader") version "1.0.0" + id("com.android.application") version "8.11.1" apply false + id("org.jetbrains.kotlin.android") version "2.2.20" apply false +} + +include(":app") diff --git a/examples/demo_spm/assets b/examples/demo_spm/assets new file mode 120000 index 00000000..da5ad123 --- /dev/null +++ b/examples/demo_spm/assets @@ -0,0 +1 @@ +../demo/assets \ No newline at end of file diff --git a/examples/demo_spm/ios/.gitignore b/examples/demo_spm/ios/.gitignore new file mode 100644 index 00000000..7a7f9873 --- /dev/null +++ b/examples/demo_spm/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/examples/demo_spm/ios/Flutter/AppFrameworkInfo.plist b/examples/demo_spm/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 00000000..1dc6cf76 --- /dev/null +++ b/examples/demo_spm/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 13.0 + + diff --git a/examples/demo_spm/ios/Flutter/Debug.xcconfig b/examples/demo_spm/ios/Flutter/Debug.xcconfig new file mode 100644 index 00000000..592ceee8 --- /dev/null +++ b/examples/demo_spm/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/examples/demo_spm/ios/Flutter/Release.xcconfig b/examples/demo_spm/ios/Flutter/Release.xcconfig new file mode 100644 index 00000000..592ceee8 --- /dev/null +++ b/examples/demo_spm/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/examples/demo_spm/ios/OneSignalNotificationServiceExtension/Info.plist b/examples/demo_spm/ios/OneSignalNotificationServiceExtension/Info.plist new file mode 100644 index 00000000..57421ebf --- /dev/null +++ b/examples/demo_spm/ios/OneSignalNotificationServiceExtension/Info.plist @@ -0,0 +1,13 @@ + + + + + NSExtension + + NSExtensionPointIdentifier + com.apple.usernotifications.service + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).NotificationService + + + diff --git a/examples/demo_spm/ios/OneSignalNotificationServiceExtension/NotificationService.swift b/examples/demo_spm/ios/OneSignalNotificationServiceExtension/NotificationService.swift new file mode 100644 index 00000000..ab391a33 --- /dev/null +++ b/examples/demo_spm/ios/OneSignalNotificationServiceExtension/NotificationService.swift @@ -0,0 +1,32 @@ +import UserNotifications +import OneSignalExtension + +class NotificationService: UNNotificationServiceExtension { + var contentHandler: ((UNNotificationContent) -> Void)? + var receivedRequest: UNNotificationRequest! + var bestAttemptContent: UNMutableNotificationContent? + + // Note this extension only runs when `mutable_content` is set + // Setting an attachment or action buttons automatically sets the property to true + override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) { + self.receivedRequest = request + self.contentHandler = contentHandler + self.bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent) + + if let bestAttemptContent = bestAttemptContent { + // DEBUGGING: Uncomment the 2 lines below to check this extension is executing +// print("Running NotificationServiceExtension") +// bestAttemptContent.body = "[Modified] " + bestAttemptContent.body + + OneSignalExtension.didReceiveNotificationExtensionRequest(self.receivedRequest, with: bestAttemptContent, withContentHandler: self.contentHandler) + } + } + + override func serviceExtensionTimeWillExpire() { + // 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 { + OneSignalExtension.serviceExtensionTimeWillExpireRequest(self.receivedRequest, with: self.bestAttemptContent) + contentHandler(bestAttemptContent) + } + } +} diff --git a/examples/demo_spm/ios/OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension.entitlements b/examples/demo_spm/ios/OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension.entitlements new file mode 100644 index 00000000..c70461e8 --- /dev/null +++ b/examples/demo_spm/ios/OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.application-groups + + group.com.onesignal.example.onesignal + + + diff --git a/examples/demo_spm/ios/OneSignalWidget/Assets.xcassets/AccentColor.colorset/Contents.json b/examples/demo_spm/ios/OneSignalWidget/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 00000000..eb878970 --- /dev/null +++ b/examples/demo_spm/ios/OneSignalWidget/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/examples/demo_spm/ios/OneSignalWidget/Assets.xcassets/AppIcon.appiconset/Contents.json b/examples/demo_spm/ios/OneSignalWidget/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..23058801 --- /dev/null +++ b/examples/demo_spm/ios/OneSignalWidget/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,35 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "tinted" + } + ], + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/examples/demo_spm/ios/OneSignalWidget/Assets.xcassets/Contents.json b/examples/demo_spm/ios/OneSignalWidget/Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/examples/demo_spm/ios/OneSignalWidget/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/examples/demo_spm/ios/OneSignalWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json b/examples/demo_spm/ios/OneSignalWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json new file mode 100644 index 00000000..eb878970 --- /dev/null +++ b/examples/demo_spm/ios/OneSignalWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/examples/demo_spm/ios/OneSignalWidget/Info.plist b/examples/demo_spm/ios/OneSignalWidget/Info.plist new file mode 100644 index 00000000..0f118fb7 --- /dev/null +++ b/examples/demo_spm/ios/OneSignalWidget/Info.plist @@ -0,0 +1,11 @@ + + + + + NSExtension + + NSExtensionPointIdentifier + com.apple.widgetkit-extension + + + diff --git a/examples/demo_spm/ios/OneSignalWidget/OneSignalWidgetBundle.swift b/examples/demo_spm/ios/OneSignalWidget/OneSignalWidgetBundle.swift new file mode 100644 index 00000000..1940bb22 --- /dev/null +++ b/examples/demo_spm/ios/OneSignalWidget/OneSignalWidgetBundle.swift @@ -0,0 +1,16 @@ +// +// OneSignalWidgetBundle.swift +// OneSignalWidgetExtension +// +// Created by Fadi George on 4/1/26. +// + +import WidgetKit +import SwiftUI + +@main +struct OneSignalWidgetBundle: WidgetBundle { + var body: some Widget { + OneSignalWidgetLiveActivity() + } +} diff --git a/examples/demo_spm/ios/OneSignalWidget/OneSignalWidgetLiveActivity.swift b/examples/demo_spm/ios/OneSignalWidget/OneSignalWidgetLiveActivity.swift new file mode 100644 index 00000000..f4a95f75 --- /dev/null +++ b/examples/demo_spm/ios/OneSignalWidget/OneSignalWidgetLiveActivity.swift @@ -0,0 +1,142 @@ +import ActivityKit +import WidgetKit +import SwiftUI +import OneSignalLiveActivities + +@available(iOS 16.2, *) +struct OneSignalWidgetLiveActivity: Widget { + + private func statusIcon(for status: String) -> String { + switch status { + case "on_the_way": return "box.truck.fill" + case "delivered": return "checkmark.circle.fill" + default: return "bag.fill" + } + } + + private func statusColor(for status: String) -> Color { + switch status { + case "on_the_way": return .blue + case "delivered": return .green + default: return .orange + } + } + + private func statusLabel(for status: String) -> String { + switch status { + case "on_the_way": return "On the Way" + case "delivered": return "Delivered" + default: return "Preparing" + } + } + + var body: some WidgetConfiguration { + ActivityConfiguration(for: DefaultLiveActivityAttributes.self) { context in + let orderNumber = context.attributes.data["orderNumber"]?.asString() ?? "Order" + let status = context.state.data["status"]?.asString() ?? "preparing" + let message = context.state.data["message"]?.asString() ?? "Your order is being prepared" + let eta = context.state.data["estimatedTime"]?.asString() ?? "" + + VStack(spacing: 10) { + HStack { + Text(orderNumber) + .font(.caption) + .foregroundColor(.gray) + Spacer() + if !eta.isEmpty { + Text(eta) + .font(.caption) + .foregroundColor(.white.opacity(0.7)) + } + } + + HStack(spacing: 12) { + Image(systemName: statusIcon(for: status)) + .font(.title2) + .foregroundColor(statusColor(for: status)) + + VStack(alignment: .leading, spacing: 2) { + Text(statusLabel(for: status)) + .font(.headline) + .foregroundColor(.white) + Text(message) + .font(.subheadline) + .foregroundColor(.white.opacity(0.8)) + .lineLimit(1) + } + Spacer() + } + + DeliveryProgressBar(status: status) + } + .padding() + .activityBackgroundTint(Color(red: 0.11, green: 0.13, blue: 0.19)) + .activitySystemActionForegroundColor(.white) + + } dynamicIsland: { context in + let status = context.state.data["status"]?.asString() ?? "preparing" + let message = context.state.data["message"]?.asString() ?? "Preparing" + let eta = context.state.data["estimatedTime"]?.asString() ?? "" + + return DynamicIsland { + DynamicIslandExpandedRegion(.leading) { + Image(systemName: statusIcon(for: status)) + .font(.title2) + .foregroundColor(statusColor(for: status)) + } + DynamicIslandExpandedRegion(.center) { + Text(statusLabel(for: status)) + .font(.headline) + } + DynamicIslandExpandedRegion(.trailing) { + if !eta.isEmpty { + Text(eta) + .font(.caption) + .foregroundColor(.secondary) + } + } + DynamicIslandExpandedRegion(.bottom) { + Text(message) + .font(.caption) + .foregroundColor(.secondary) + } + } compactLeading: { + Image(systemName: statusIcon(for: status)) + .foregroundColor(statusColor(for: status)) + } compactTrailing: { + Text(statusLabel(for: status)) + .font(.caption) + } minimal: { + Image(systemName: statusIcon(for: status)) + .foregroundColor(statusColor(for: status)) + } + } + } +} + +@available(iOS 16.2, *) +struct DeliveryProgressBar: View { + let status: String + + private var progress: CGFloat { + switch status { + case "on_the_way": return 0.6 + case "delivered": return 1.0 + default: return 0.25 + } + } + + var body: some View { + GeometryReader { geo in + ZStack(alignment: .leading) { + RoundedRectangle(cornerRadius: 3) + .fill(Color.white.opacity(0.2)) + .frame(height: 6) + RoundedRectangle(cornerRadius: 3) + .fill(progress >= 1.0 ? Color.green : Color.blue) + .frame(width: geo.size.width * progress, height: 6) + } + } + .frame(height: 6) + } +} diff --git a/examples/demo_spm/ios/Runner.xcodeproj/project.pbxproj b/examples/demo_spm/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000..a29f0e53 --- /dev/null +++ b/examples/demo_spm/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,1098 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + E8C8D1902F7B0DB7006581CB /* OneSignalNotificationServiceExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = E8C8D1892F7B0DB7006581CB /* OneSignalNotificationServiceExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + E8C8D1B32F7D9550006581CB /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E8C8D1B22F7D9550006581CB /* WidgetKit.framework */; }; + E8C8D1B52F7D9550006581CB /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E8C8D1B42F7D9550006581CB /* SwiftUI.framework */; }; + E8C8D1C22F7D9551006581CB /* OneSignalWidgetExtensionExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = E8C8D1B02F7D9550006581CB /* OneSignalWidgetExtensionExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; + E8C8D18E2F7B0DB7006581CB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = E8C8D1882F7B0DB7006581CB; + remoteInfo = OneSignalNotificationServiceExtension; + }; + E8C8D1C02F7D9551006581CB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = E8C8D1AF2F7D9550006581CB; + remoteInfo = OneSignalWidgetExtensionExtension; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + E8C8D1962F7B0DB7006581CB /* Embed Foundation Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + E8C8D1902F7B0DB7006581CB /* OneSignalNotificationServiceExtension.appex in Embed Foundation Extensions */, + E8C8D1C22F7D9551006581CB /* OneSignalWidgetExtensionExtension.appex in Embed Foundation Extensions */, + ); + name = "Embed Foundation Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = FlutterGeneratedPluginSwiftPackage; path = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + E8C8D1892F7B0DB7006581CB /* OneSignalNotificationServiceExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = OneSignalNotificationServiceExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; + E8C8D1B02F7D9550006581CB /* OneSignalWidgetExtensionExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = OneSignalWidgetExtensionExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; + E8C8D1B22F7D9550006581CB /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; }; + E8C8D1B42F7D9550006581CB /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ + E8C8D1912F7B0DB7006581CB /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = { + isa = PBXFileSystemSynchronizedBuildFileExceptionSet; + membershipExceptions = ( + Info.plist, + ); + target = E8C8D1882F7B0DB7006581CB /* OneSignalNotificationServiceExtension */; + }; + E8C8D1C62F7D9551006581CB /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = { + isa = PBXFileSystemSynchronizedBuildFileExceptionSet; + membershipExceptions = ( + Info.plist, + ); + target = E8C8D1AF2F7D9550006581CB /* OneSignalWidget */; + }; +/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ + +/* Begin PBXFileSystemSynchronizedRootGroup section */ + E8C8D18A2F7B0DB7006581CB /* OneSignalNotificationServiceExtension */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (E8C8D1912F7B0DB7006581CB /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = OneSignalNotificationServiceExtension; sourceTree = ""; }; + E8C8D1B62F7D9550006581CB /* OneSignalWidget */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (E8C8D1C62F7D9551006581CB /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = OneSignalWidget; sourceTree = ""; }; +/* End PBXFileSystemSynchronizedRootGroup section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E8C8D1862F7B0DB7006581CB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E8C8D1AD2F7D9550006581CB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E8C8D1B52F7D9550006581CB /* SwiftUI.framework in Frameworks */, + E8C8D1B32F7D9550006581CB /* WidgetKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */, + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + E8C8D18A2F7B0DB7006581CB /* OneSignalNotificationServiceExtension */, + E8C8D1B62F7D9550006581CB /* OneSignalWidget */, + E8C8D1B12F7D9550006581CB /* Frameworks */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + E8C8D1892F7B0DB7006581CB /* OneSignalNotificationServiceExtension.appex */, + E8C8D1B02F7D9550006581CB /* OneSignalWidgetExtensionExtension.appex */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; + E8C8D1B12F7D9550006581CB /* Frameworks */ = { + isa = PBXGroup; + children = ( + E8C8D1B22F7D9550006581CB /* WidgetKit.framework */, + E8C8D1B42F7D9550006581CB /* SwiftUI.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + E8C8D1962F7B0DB7006581CB /* Embed Foundation Extensions */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + E8C8D18F2F7B0DB7006581CB /* PBXTargetDependency */, + E8C8D1C12F7D9551006581CB /* PBXTargetDependency */, + ); + name = Runner; + packageProductDependencies = ( + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */, + ); + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; + E8C8D1882F7B0DB7006581CB /* OneSignalNotificationServiceExtension */ = { + isa = PBXNativeTarget; + buildConfigurationList = E8C8D1922F7B0DB7006581CB /* Build configuration list for PBXNativeTarget "OneSignalNotificationServiceExtension" */; + buildPhases = ( + E8C8D1852F7B0DB7006581CB /* Sources */, + E8C8D1862F7B0DB7006581CB /* Frameworks */, + E8C8D1872F7B0DB7006581CB /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + fileSystemSynchronizedGroups = ( + E8C8D18A2F7B0DB7006581CB /* OneSignalNotificationServiceExtension */, + ); + name = OneSignalNotificationServiceExtension; + packageProductDependencies = ( + ); + productName = OneSignalNotificationServiceExtension; + productReference = E8C8D1892F7B0DB7006581CB /* OneSignalNotificationServiceExtension.appex */; + productType = "com.apple.product-type.app-extension"; + }; + E8C8D1AF2F7D9550006581CB /* OneSignalWidgetExtensionExtension */ = { + isa = PBXNativeTarget; + buildConfigurationList = E8C8D1C72F7D9551006581CB /* Build configuration list for PBXNativeTarget "OneSignalWidgetExtensionExtension" */; + buildPhases = ( + E8C8D1AC2F7D9550006581CB /* Sources */, + E8C8D1AD2F7D9550006581CB /* Frameworks */, + E8C8D1AE2F7D9550006581CB /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + fileSystemSynchronizedGroups = ( + E8C8D1B62F7D9550006581CB /* OneSignalWidget */, + ); + name = OneSignalWidgetExtensionExtension; + packageProductDependencies = ( + ); + productName = OneSignalWidgetExtensionExtension; + productReference = E8C8D1B02F7D9550006581CB /* OneSignalWidgetExtensionExtension.appex */; + productType = "com.apple.product-type.app-extension"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastSwiftUpdateCheck = 2620; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + E8C8D1882F7B0DB7006581CB = { + CreatedOnToolsVersion = 26.2; + }; + E8C8D1AF2F7D9550006581CB = { + CreatedOnToolsVersion = 26.2; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + packageReferences = ( + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */, + ); + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + E8C8D1882F7B0DB7006581CB /* OneSignalNotificationServiceExtension */, + E8C8D1AF2F7D9550006581CB /* OneSignalWidgetExtensionExtension */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E8C8D1872F7B0DB7006581CB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E8C8D1AE2F7D9550006581CB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E8C8D1852F7B0DB7006581CB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E8C8D1AC2F7D9550006581CB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; + E8C8D18F2F7B0DB7006581CB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = E8C8D1882F7B0DB7006581CB /* OneSignalNotificationServiceExtension */; + targetProxy = E8C8D18E2F7B0DB7006581CB /* PBXContainerItemProxy */; + }; + E8C8D1C12F7D9551006581CB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = E8C8D1AF2F7D9550006581CB /* OneSignalWidgetExtensionExtension */; + targetProxy = E8C8D1C02F7D9551006581CB /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 99SW8E36CT; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example.demo.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example.demo.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example.demo.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 99SW8E36CT; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 99SW8E36CT; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + E8C8D1932F7B0DB7006581CB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_ENTITLEMENTS = OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 99SW8E36CT; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = OneSignalNotificationServiceExtension/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = OneSignalNotificationServiceExtension; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + IPHONEOS_DEPLOYMENT_TARGET = 26.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example.OneSignalNotificationServiceExtensionFlutter; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRING_CATALOG_GENERATE_SYMBOLS = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_APPROACHABLE_CONCURRENCY = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + E8C8D1942F7B0DB7006581CB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_ENTITLEMENTS = OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 99SW8E36CT; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = OneSignalNotificationServiceExtension/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = OneSignalNotificationServiceExtension; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + IPHONEOS_DEPLOYMENT_TARGET = 26.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example.OneSignalNotificationServiceExtensionFlutter; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRING_CATALOG_GENERATE_SYMBOLS = YES; + SWIFT_APPROACHABLE_CONCURRENCY = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + E8C8D1952F7B0DB7006581CB /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_ENTITLEMENTS = OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 99SW8E36CT; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = OneSignalNotificationServiceExtension/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = OneSignalNotificationServiceExtension; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + IPHONEOS_DEPLOYMENT_TARGET = 26.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example.OneSignalNotificationServiceExtensionFlutter; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRING_CATALOG_GENERATE_SYMBOLS = YES; + SWIFT_APPROACHABLE_CONCURRENCY = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Profile; + }; + E8C8D1C32F7D9551006581CB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 99SW8E36CT; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = OneSignalWidget/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = OneSignalWidget; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + IPHONEOS_DEPLOYMENT_TARGET = 26.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example.OneSignalWidget; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRING_CATALOG_GENERATE_SYMBOLS = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_APPROACHABLE_CONCURRENCY = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + E8C8D1C42F7D9551006581CB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 99SW8E36CT; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = OneSignalWidget/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = OneSignalWidget; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + IPHONEOS_DEPLOYMENT_TARGET = 26.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example.OneSignalWidget; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRING_CATALOG_GENERATE_SYMBOLS = YES; + SWIFT_APPROACHABLE_CONCURRENCY = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + E8C8D1C52F7D9551006581CB /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 99SW8E36CT; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = OneSignalWidget/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = OneSignalWidget; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + IPHONEOS_DEPLOYMENT_TARGET = 26.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.onesignal.example.OneSignalWidget; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRING_CATALOG_GENERATE_SYMBOLS = YES; + SWIFT_APPROACHABLE_CONCURRENCY = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Profile; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + E8C8D1922F7B0DB7006581CB /* Build configuration list for PBXNativeTarget "OneSignalNotificationServiceExtension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E8C8D1932F7B0DB7006581CB /* Debug */, + E8C8D1942F7B0DB7006581CB /* Release */, + E8C8D1952F7B0DB7006581CB /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + E8C8D1C72F7D9551006581CB /* Build configuration list for PBXNativeTarget "OneSignalWidgetExtensionExtension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E8C8D1C32F7D9551006581CB /* Debug */, + E8C8D1C42F7D9551006581CB /* Release */, + E8C8D1C52F7D9551006581CB /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */ = { + isa = XCSwiftPackageProductDependency; + productName = FlutterGeneratedPluginSwiftPackage; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/examples/demo_spm/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/examples/demo_spm/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/examples/demo_spm/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/examples/demo_spm/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/examples/demo_spm/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/examples/demo_spm/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/examples/demo_spm/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/examples/demo_spm/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000..f9b0d7c5 --- /dev/null +++ b/examples/demo_spm/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/examples/demo_spm/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/examples/demo_spm/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000..c3fedb29 --- /dev/null +++ b/examples/demo_spm/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/demo_spm/ios/Runner.xcworkspace/contents.xcworkspacedata b/examples/demo_spm/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..1d526a16 --- /dev/null +++ b/examples/demo_spm/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/examples/demo_spm/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/examples/demo_spm/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/examples/demo_spm/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/examples/demo_spm/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/examples/demo_spm/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000..f9b0d7c5 --- /dev/null +++ b/examples/demo_spm/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/examples/demo_spm/ios/Runner/AppDelegate.swift b/examples/demo_spm/ios/Runner/AppDelegate.swift new file mode 100644 index 00000000..62666446 --- /dev/null +++ b/examples/demo_spm/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Flutter +import UIKit + +@main +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..d0d98aa1 --- /dev/null +++ b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1 @@ +{"images":[{"size":"20x20","idiom":"iphone","filename":"Icon-App-20x20@2x.png","scale":"2x"},{"size":"20x20","idiom":"iphone","filename":"Icon-App-20x20@3x.png","scale":"3x"},{"size":"29x29","idiom":"iphone","filename":"Icon-App-29x29@1x.png","scale":"1x"},{"size":"29x29","idiom":"iphone","filename":"Icon-App-29x29@2x.png","scale":"2x"},{"size":"29x29","idiom":"iphone","filename":"Icon-App-29x29@3x.png","scale":"3x"},{"size":"40x40","idiom":"iphone","filename":"Icon-App-40x40@2x.png","scale":"2x"},{"size":"40x40","idiom":"iphone","filename":"Icon-App-40x40@3x.png","scale":"3x"},{"size":"57x57","idiom":"iphone","filename":"Icon-App-57x57@1x.png","scale":"1x"},{"size":"57x57","idiom":"iphone","filename":"Icon-App-57x57@2x.png","scale":"2x"},{"size":"60x60","idiom":"iphone","filename":"Icon-App-60x60@2x.png","scale":"2x"},{"size":"60x60","idiom":"iphone","filename":"Icon-App-60x60@3x.png","scale":"3x"},{"size":"20x20","idiom":"ipad","filename":"Icon-App-20x20@1x.png","scale":"1x"},{"size":"20x20","idiom":"ipad","filename":"Icon-App-20x20@2x.png","scale":"2x"},{"size":"29x29","idiom":"ipad","filename":"Icon-App-29x29@1x.png","scale":"1x"},{"size":"29x29","idiom":"ipad","filename":"Icon-App-29x29@2x.png","scale":"2x"},{"size":"40x40","idiom":"ipad","filename":"Icon-App-40x40@1x.png","scale":"1x"},{"size":"40x40","idiom":"ipad","filename":"Icon-App-40x40@2x.png","scale":"2x"},{"size":"50x50","idiom":"ipad","filename":"Icon-App-50x50@1x.png","scale":"1x"},{"size":"50x50","idiom":"ipad","filename":"Icon-App-50x50@2x.png","scale":"2x"},{"size":"72x72","idiom":"ipad","filename":"Icon-App-72x72@1x.png","scale":"1x"},{"size":"72x72","idiom":"ipad","filename":"Icon-App-72x72@2x.png","scale":"2x"},{"size":"76x76","idiom":"ipad","filename":"Icon-App-76x76@1x.png","scale":"1x"},{"size":"76x76","idiom":"ipad","filename":"Icon-App-76x76@2x.png","scale":"2x"},{"size":"83.5x83.5","idiom":"ipad","filename":"Icon-App-83.5x83.5@2x.png","scale":"2x"},{"size":"1024x1024","idiom":"ios-marketing","filename":"Icon-App-1024x1024@1x.png","scale":"1x"}],"info":{"version":1,"author":"xcode"}} \ No newline at end of file diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 00000000..d4295e38 Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 00000000..97658bfe Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 00000000..b1bf42f9 Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 00000000..76b737e0 Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 00000000..b8ac6697 Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 00000000..d3de94d2 Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 00000000..f0559d2b Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 00000000..b1bf42f9 Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 00000000..59124a76 Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 00000000..dd146ada Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png new file mode 100644 index 00000000..388750c5 Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png new file mode 100644 index 00000000..5ede07ab Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png new file mode 100644 index 00000000..9edc8622 Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png new file mode 100644 index 00000000..7a6e7e45 Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 00000000..dd146ada Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 00000000..8e943138 Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png new file mode 100644 index 00000000..7da0bc3d Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png new file mode 100644 index 00000000..be7bd5a1 Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 00000000..96ba43c2 Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 00000000..9dd61861 Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 00000000..2947572c Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/examples/demo_spm/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 00000000..0bedcf2f --- /dev/null +++ b/examples/demo_spm/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/examples/demo_spm/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 00000000..9da19eac Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 00000000..9da19eac Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/examples/demo_spm/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 00000000..9da19eac Binary files /dev/null and b/examples/demo_spm/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ diff --git a/examples/demo_spm/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/examples/demo_spm/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 00000000..89c2725b --- /dev/null +++ b/examples/demo_spm/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/examples/demo_spm/ios/Runner/Base.lproj/LaunchScreen.storyboard b/examples/demo_spm/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..f2e259c7 --- /dev/null +++ b/examples/demo_spm/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/demo_spm/ios/Runner/Base.lproj/Main.storyboard b/examples/demo_spm/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 00000000..f3c28516 --- /dev/null +++ b/examples/demo_spm/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/demo_spm/ios/Runner/Info.plist b/examples/demo_spm/ios/Runner/Info.plist new file mode 100644 index 00000000..4bd33cf5 --- /dev/null +++ b/examples/demo_spm/ios/Runner/Info.plist @@ -0,0 +1,59 @@ + + + + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Demo + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + demo + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + NSSupportsLiveActivities + + NSLocationWhenInUseUsageDescription + This app uses your location to personalize notifications and content. + NSLocationAlwaysAndWhenInUseUsageDescription + This app uses your location to personalize notifications and content, even in the background. + UIApplicationSupportsIndirectInputEvents + + UIBackgroundModes + + remote-notification + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/examples/demo_spm/ios/Runner/Runner-Bridging-Header.h b/examples/demo_spm/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 00000000..308a2a56 --- /dev/null +++ b/examples/demo_spm/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/examples/demo_spm/ios/Runner/Runner.entitlements b/examples/demo_spm/ios/Runner/Runner.entitlements new file mode 100644 index 00000000..34463649 --- /dev/null +++ b/examples/demo_spm/ios/Runner/Runner.entitlements @@ -0,0 +1,12 @@ + + + + + aps-environment + development + com.apple.security.application-groups + + group.com.onesignal.example.onesignal + + + diff --git a/examples/demo_spm/ios/RunnerTests/RunnerTests.swift b/examples/demo_spm/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 00000000..86a7c3b1 --- /dev/null +++ b/examples/demo_spm/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Flutter +import UIKit +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/examples/demo_spm/lib b/examples/demo_spm/lib new file mode 120000 index 00000000..255adc2f --- /dev/null +++ b/examples/demo_spm/lib @@ -0,0 +1 @@ +../demo/lib \ No newline at end of file diff --git a/examples/demo_spm/pubspec.yaml b/examples/demo_spm/pubspec.yaml new file mode 100644 index 00000000..52577bec --- /dev/null +++ b/examples/demo_spm/pubspec.yaml @@ -0,0 +1,39 @@ +name: demo +description: OneSignal Flutter SDK Demo App +publish_to: 'none' +version: 1.0.0+1 + +environment: + sdk: ^3.7.0 + +dependencies: + flutter: + sdk: flutter + onesignal_flutter: + path: ../../ + provider: ^6.1.0 + shared_preferences: ^2.3.0 + http: ^1.2.0 + url_launcher: ^6.2.0 + flutter_svg: ^2.0.0 + flutter_dotenv: ^5.2.1 + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^5.0.0 + flutter_launcher_icons: ^0.14.3 + +flutter_launcher_icons: + android: true + ios: true + remove_alpha_ios: true + image_path: "assets/onesignal_logo_icon_padded.png" + adaptive_icon_background: "#FFFFFF" + adaptive_icon_foreground: "assets/onesignal_logo_icon_padded.png" + +flutter: + uses-material-design: true + assets: + - assets/onesignal_logo.svg + - .env diff --git a/ios/Assets/.gitkeep b/ios/Assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/ios/onesignal_flutter.podspec b/ios/onesignal_flutter.podspec index 98de90eb..84f9d30d 100644 --- a/ios/onesignal_flutter.podspec +++ b/ios/onesignal_flutter.podspec @@ -10,8 +10,8 @@ Pod::Spec.new do |s| s.license = { :file => '../LICENSE' } s.author = { 'Brad Hesse' => 'brad@onesignal.com', 'Josh Kasten' => 'josh@onesignal.com' } s.source = { :path => '.' } - s.source_files = 'Classes/**/*' - s.public_header_files = 'Classes/**/*.h' + s.source_files = 'onesignal_flutter/Sources/onesignal_flutter/**/*.{h,m}' + s.public_header_files = 'onesignal_flutter/Sources/onesignal_flutter/include/**/*.h' s.dependency 'Flutter' s.dependency 'OneSignalXCFramework', '5.5.0' s.ios.deployment_target = '11.0' diff --git a/ios/onesignal_flutter/Package.swift b/ios/onesignal_flutter/Package.swift new file mode 100644 index 00000000..4a75bdc8 --- /dev/null +++ b/ios/onesignal_flutter/Package.swift @@ -0,0 +1,31 @@ +// swift-tools-version: 5.9 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "onesignal_flutter", + platforms: [ + .iOS("11.0") + ], + products: [ + .library(name: "onesignal-flutter", targets: ["onesignal_flutter"]) + ], + dependencies: [ + .package(url: "https://github.com/OneSignal/OneSignal-XCFramework", exact: "5.5.0"), + ], + targets: [ + .target( + name: "onesignal_flutter", + dependencies: [ + .product(name: "OneSignalFramework", package: "OneSignal-XCFramework"), + .product(name: "OneSignalInAppMessages", package: "OneSignal-XCFramework"), + .product(name: "OneSignalLocation", package: "OneSignal-XCFramework"), + .product(name: "OneSignalExtension", package: "OneSignal-XCFramework"), + ], + cSettings: [ + .headerSearchPath("include/onesignal_flutter") + ] + ) + ] +) diff --git a/ios/Classes/OSFlutterCategories.m b/ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterCategories.m similarity index 98% rename from ios/Classes/OSFlutterCategories.m rename to ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterCategories.m index db3ac0ec..536e047e 100644 --- a/ios/Classes/OSFlutterCategories.m +++ b/ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterCategories.m @@ -25,7 +25,7 @@ * THE SOFTWARE. */ -#import "OSFlutterCategories.h" +#import "./include/onesignal_flutter/OSFlutterCategories.h" /* The OneSignal iOS SDK implements similar methods (`toDictionary`) diff --git a/ios/Classes/OSFlutterDebug.m b/ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterDebug.m similarity index 95% rename from ios/Classes/OSFlutterDebug.m rename to ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterDebug.m index f443157a..28ac9b28 100644 --- a/ios/Classes/OSFlutterDebug.m +++ b/ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterDebug.m @@ -25,8 +25,8 @@ * THE SOFTWARE. */ -#import "OSFlutterDebug.h" -#import "OSFlutterCategories.h" +#import "./include/onesignal_flutter/OSFlutterDebug.h" +#import "./include/onesignal_flutter/OSFlutterCategories.h" #import @implementation OSFlutterDebug diff --git a/ios/Classes/OSFlutterInAppMessages.m b/ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterInAppMessages.m similarity index 97% rename from ios/Classes/OSFlutterInAppMessages.m rename to ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterInAppMessages.m index 8acbaefd..7a88a4cc 100644 --- a/ios/Classes/OSFlutterInAppMessages.m +++ b/ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterInAppMessages.m @@ -25,8 +25,8 @@ * THE SOFTWARE. */ -#import "OSFlutterInAppMessages.h" -#import "OSFlutterCategories.h" +#import "./include/onesignal_flutter/OSFlutterInAppMessages.h" +#import "./include/onesignal_flutter/OSFlutterCategories.h" #import @implementation OSFlutterInAppMessages diff --git a/ios/Classes/OSFlutterLiveActivities.m b/ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterLiveActivities.m similarity index 97% rename from ios/Classes/OSFlutterLiveActivities.m rename to ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterLiveActivities.m index aa2a1f80..8654e393 100644 --- a/ios/Classes/OSFlutterLiveActivities.m +++ b/ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterLiveActivities.m @@ -25,10 +25,10 @@ * THE SOFTWARE. */ -#import "OSFlutterLiveActivities.h" -#import "OSFlutterCategories.h" -#import "OneSignalLiveActivities/OneSignalLiveActivities-Swift.h" +#import "./include/onesignal_flutter/OSFlutterLiveActivities.h" +#import "./include/onesignal_flutter/OSFlutterCategories.h" #import +#import @implementation OSFlutterLiveActivities + (void)registerWithRegistrar:(NSObject *)registrar { diff --git a/ios/Classes/OSFlutterLocation.m b/ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterLocation.m similarity index 95% rename from ios/Classes/OSFlutterLocation.m rename to ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterLocation.m index 1d0d46fd..ca088772 100644 --- a/ios/Classes/OSFlutterLocation.m +++ b/ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterLocation.m @@ -25,8 +25,8 @@ * THE SOFTWARE. */ -#import "OSFlutterLocation.h" -#import "OSFlutterCategories.h" +#import "./include/onesignal_flutter/OSFlutterLocation.h" +#import "./include/onesignal_flutter/OSFlutterCategories.h" #import @implementation OSFlutterLocation diff --git a/ios/Classes/OSFlutterNotifications.m b/ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterNotifications.m similarity index 98% rename from ios/Classes/OSFlutterNotifications.m rename to ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterNotifications.m index cbe71d01..027596f6 100644 --- a/ios/Classes/OSFlutterNotifications.m +++ b/ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterNotifications.m @@ -25,8 +25,8 @@ * THE SOFTWARE. */ -#import "OSFlutterNotifications.h" -#import "OSFlutterCategories.h" +#import "./include/onesignal_flutter/OSFlutterNotifications.h" +#import "./include/onesignal_flutter/OSFlutterCategories.h" #import #import diff --git a/ios/Classes/OSFlutterPushSubscription.m b/ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterPushSubscription.m similarity index 96% rename from ios/Classes/OSFlutterPushSubscription.m rename to ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterPushSubscription.m index 785a21a4..65090b89 100644 --- a/ios/Classes/OSFlutterPushSubscription.m +++ b/ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterPushSubscription.m @@ -25,8 +25,8 @@ * THE SOFTWARE. */ -#import "OSFlutterPushSubscription.h" -#import "OSFlutterCategories.h" +#import "./include/onesignal_flutter/OSFlutterPushSubscription.h" +#import "./include/onesignal_flutter/OSFlutterCategories.h" #import #import diff --git a/ios/Classes/OSFlutterSession.m b/ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterSession.m similarity index 96% rename from ios/Classes/OSFlutterSession.m rename to ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterSession.m index a5aa511a..524c17a4 100644 --- a/ios/Classes/OSFlutterSession.m +++ b/ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterSession.m @@ -25,8 +25,8 @@ * THE SOFTWARE. */ -#import "OSFlutterSession.h" -#import "OSFlutterCategories.h" +#import "./include/onesignal_flutter/OSFlutterSession.h" +#import "./include/onesignal_flutter/OSFlutterCategories.h" #import @implementation OSFlutterSession diff --git a/ios/Classes/OSFlutterUser.m b/ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterUser.m similarity index 97% rename from ios/Classes/OSFlutterUser.m rename to ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterUser.m index f5bd0463..a823ef2b 100644 --- a/ios/Classes/OSFlutterUser.m +++ b/ios/onesignal_flutter/Sources/onesignal_flutter/OSFlutterUser.m @@ -24,9 +24,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -#import "OSFlutterUser.h" -#import "OSFlutterCategories.h" -#import "OSFlutterPushSubscription.h" +#import "./include/onesignal_flutter/OSFlutterUser.h" +#import "./include/onesignal_flutter/OSFlutterCategories.h" +#import "./include/onesignal_flutter/OSFlutterPushSubscription.h" #import #import diff --git a/ios/Classes/OneSignalPlugin.m b/ios/onesignal_flutter/Sources/onesignal_flutter/OneSignalPlugin.m similarity index 88% rename from ios/Classes/OneSignalPlugin.m rename to ios/onesignal_flutter/Sources/onesignal_flutter/OneSignalPlugin.m index 49369c2b..951463bb 100644 --- a/ios/Classes/OneSignalPlugin.m +++ b/ios/onesignal_flutter/Sources/onesignal_flutter/OneSignalPlugin.m @@ -25,15 +25,15 @@ * THE SOFTWARE. */ -#import "OneSignalPlugin.h" -#import "OSFlutterCategories.h" -#import "OSFlutterDebug.h" -#import "OSFlutterInAppMessages.h" -#import "OSFlutterLiveActivities.h" -#import "OSFlutterLocation.h" -#import "OSFlutterNotifications.h" -#import "OSFlutterSession.h" -#import "OSFlutterUser.h" +#import "./include/onesignal_flutter/OneSignalPlugin.h" +#import "./include/onesignal_flutter/OSFlutterCategories.h" +#import "./include/onesignal_flutter/OSFlutterDebug.h" +#import "./include/onesignal_flutter/OSFlutterInAppMessages.h" +#import "./include/onesignal_flutter/OSFlutterLiveActivities.h" +#import "./include/onesignal_flutter/OSFlutterLocation.h" +#import "./include/onesignal_flutter/OSFlutterNotifications.h" +#import "./include/onesignal_flutter/OSFlutterSession.h" +#import "./include/onesignal_flutter/OSFlutterUser.h" @interface OneSignalPlugin () diff --git a/ios/Classes/OSFlutterCategories.h b/ios/onesignal_flutter/Sources/onesignal_flutter/include/onesignal_flutter/OSFlutterCategories.h similarity index 100% rename from ios/Classes/OSFlutterCategories.h rename to ios/onesignal_flutter/Sources/onesignal_flutter/include/onesignal_flutter/OSFlutterCategories.h diff --git a/ios/Classes/OSFlutterDebug.h b/ios/onesignal_flutter/Sources/onesignal_flutter/include/onesignal_flutter/OSFlutterDebug.h similarity index 100% rename from ios/Classes/OSFlutterDebug.h rename to ios/onesignal_flutter/Sources/onesignal_flutter/include/onesignal_flutter/OSFlutterDebug.h diff --git a/ios/Classes/OSFlutterInAppMessages.h b/ios/onesignal_flutter/Sources/onesignal_flutter/include/onesignal_flutter/OSFlutterInAppMessages.h similarity index 100% rename from ios/Classes/OSFlutterInAppMessages.h rename to ios/onesignal_flutter/Sources/onesignal_flutter/include/onesignal_flutter/OSFlutterInAppMessages.h diff --git a/ios/Classes/OSFlutterLiveActivities.h b/ios/onesignal_flutter/Sources/onesignal_flutter/include/onesignal_flutter/OSFlutterLiveActivities.h similarity index 100% rename from ios/Classes/OSFlutterLiveActivities.h rename to ios/onesignal_flutter/Sources/onesignal_flutter/include/onesignal_flutter/OSFlutterLiveActivities.h diff --git a/ios/Classes/OSFlutterLocation.h b/ios/onesignal_flutter/Sources/onesignal_flutter/include/onesignal_flutter/OSFlutterLocation.h similarity index 100% rename from ios/Classes/OSFlutterLocation.h rename to ios/onesignal_flutter/Sources/onesignal_flutter/include/onesignal_flutter/OSFlutterLocation.h diff --git a/ios/Classes/OSFlutterNotifications.h b/ios/onesignal_flutter/Sources/onesignal_flutter/include/onesignal_flutter/OSFlutterNotifications.h similarity index 100% rename from ios/Classes/OSFlutterNotifications.h rename to ios/onesignal_flutter/Sources/onesignal_flutter/include/onesignal_flutter/OSFlutterNotifications.h diff --git a/ios/Classes/OSFlutterPushSubscription.h b/ios/onesignal_flutter/Sources/onesignal_flutter/include/onesignal_flutter/OSFlutterPushSubscription.h similarity index 100% rename from ios/Classes/OSFlutterPushSubscription.h rename to ios/onesignal_flutter/Sources/onesignal_flutter/include/onesignal_flutter/OSFlutterPushSubscription.h diff --git a/ios/Classes/OSFlutterSession.h b/ios/onesignal_flutter/Sources/onesignal_flutter/include/onesignal_flutter/OSFlutterSession.h similarity index 100% rename from ios/Classes/OSFlutterSession.h rename to ios/onesignal_flutter/Sources/onesignal_flutter/include/onesignal_flutter/OSFlutterSession.h diff --git a/ios/Classes/OSFlutterUser.h b/ios/onesignal_flutter/Sources/onesignal_flutter/include/onesignal_flutter/OSFlutterUser.h similarity index 100% rename from ios/Classes/OSFlutterUser.h rename to ios/onesignal_flutter/Sources/onesignal_flutter/include/onesignal_flutter/OSFlutterUser.h diff --git a/ios/Classes/OneSignalPlugin.h b/ios/onesignal_flutter/Sources/onesignal_flutter/include/onesignal_flutter/OneSignalPlugin.h similarity index 100% rename from ios/Classes/OneSignalPlugin.h rename to ios/onesignal_flutter/Sources/onesignal_flutter/include/onesignal_flutter/OneSignalPlugin.h