顾海波

【初始】初始化

Showing 100 changed files with 3638 additions and 0 deletions

Too many changes to show.

To preserve performance only 100 of 100+ files are displayed.

  1 +# Miscellaneous
  2 +*.class
  3 +*.log
  4 +*.pyc
  5 +*.swp
  6 +.DS_Store
  7 +.atom/
  8 +.buildlog/
  9 +.history
  10 +.svn/
  11 +migrate_working_dir/
  12 +
  13 +# IntelliJ related
  14 +*.iml
  15 +*.ipr
  16 +*.iws
  17 +.idea/
  18 +
  19 +# The .vscode folder contains launch configuration and tasks you configure in
  20 +# VS Code which you may wish to be included in version control, so this line
  21 +# is commented out by default.
  22 +#.vscode/
  23 +
  24 +# Flutter/Dart/Pub related
  25 +# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
  26 +/pubspec.lock
  27 +**/doc/api/
  28 +.dart_tool/
  29 +build/
  1 +# This file tracks properties of this Flutter project.
  2 +# Used by Flutter tool to assess capabilities and perform upgrades etc.
  3 +#
  4 +# This file should be version controlled and should not be manually edited.
  5 +
  6 +version:
  7 + revision: "2f5301dec020b63b52835fe0be812d3429dadff7"
  8 + channel: "oh-3.22.0"
  9 +
  10 +project_type: plugin
  11 +
  12 +# Tracks metadata for the flutter migrate command
  13 +migration:
  14 + platforms:
  15 + - platform: root
  16 + create_revision: 2f5301dec020b63b52835fe0be812d3429dadff7
  17 + base_revision: 2f5301dec020b63b52835fe0be812d3429dadff7
  18 + - platform: android
  19 + create_revision: 2f5301dec020b63b52835fe0be812d3429dadff7
  20 + base_revision: 2f5301dec020b63b52835fe0be812d3429dadff7
  21 + - platform: ios
  22 + create_revision: 2f5301dec020b63b52835fe0be812d3429dadff7
  23 + base_revision: 2f5301dec020b63b52835fe0be812d3429dadff7
  24 + - platform: linux
  25 + create_revision: 2f5301dec020b63b52835fe0be812d3429dadff7
  26 + base_revision: 2f5301dec020b63b52835fe0be812d3429dadff7
  27 + - platform: macos
  28 + create_revision: 2f5301dec020b63b52835fe0be812d3429dadff7
  29 + base_revision: 2f5301dec020b63b52835fe0be812d3429dadff7
  30 + - platform: web
  31 + create_revision: 2f5301dec020b63b52835fe0be812d3429dadff7
  32 + base_revision: 2f5301dec020b63b52835fe0be812d3429dadff7
  33 + - platform: windows
  34 + create_revision: 2f5301dec020b63b52835fe0be812d3429dadff7
  35 + base_revision: 2f5301dec020b63b52835fe0be812d3429dadff7
  36 +
  37 + # User provided section
  38 +
  39 + # List of Local paths (relative to this file) that should be
  40 + # ignored by the migrate tool.
  41 + #
  42 + # Files that are not part of the templates will be ignored by default.
  43 + unmanaged_files:
  44 + - 'lib/main.dart'
  45 + - 'ios/Runner.xcodeproj/project.pbxproj'
  1 +## 0.0.1
  2 +
  3 +* TODO: Describe initial release.
  1 +TODO: Add your license here.
  1 +# flutter_push
  2 +
  3 +A new Flutter project.
  4 +
  5 +## Getting Started
  6 +
  7 +This project is a starting point for a Flutter
  8 +[plug-in package](https://flutter.dev/developing-packages/),
  9 +a specialized package that includes platform-specific implementation code for
  10 +Android and/or iOS.
  11 +
  12 +For help getting started with Flutter development, view the
  13 +[online documentation](https://flutter.dev/docs), which offers tutorials,
  14 +samples, guidance on mobile development, and a full API reference.
  15 +
  1 +include: package:flutter_lints/flutter.yaml
  2 +
  3 +# Additional information about this file can be found at
  4 +# https://dart.dev/guides/language/analysis-options
  1 +*.iml
  2 +.gradle
  3 +/local.properties
  4 +/.idea/workspace.xml
  5 +/.idea/libraries
  6 +.DS_Store
  7 +/build
  8 +/captures
  9 +.cxx
  1 +group = "com.ewin.flutter_push"
  2 +version = "1.0-SNAPSHOT"
  3 +
  4 +buildscript {
  5 + ext.kotlin_version = "1.7.10"
  6 + repositories {
  7 + maven { url 'https://developer.huawei.com/repo/' }
  8 + google()
  9 + mavenCentral()
  10 + }
  11 +
  12 + dependencies {
  13 + classpath("com.android.tools.build:gradle:7.3.0")
  14 + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version")
  15 + }
  16 +}
  17 +
  18 +rootProject.allprojects {
  19 + repositories {
  20 + google()
  21 + jcenter()
  22 + maven {url 'https://developer.huawei.com/repo/'}
  23 + }
  24 +}
  25 +
  26 +
  27 +apply plugin: "com.android.library"
  28 +apply plugin: "kotlin-android"
  29 +
  30 +android {
  31 + if (project.android.hasProperty("namespace")) {
  32 + namespace = "com.ewin.flutter_push"
  33 + }
  34 +
  35 + compileSdk = 34
  36 +
  37 + compileOptions {
  38 + sourceCompatibility = JavaVersion.VERSION_1_8
  39 + targetCompatibility = JavaVersion.VERSION_1_8
  40 + }
  41 +
  42 + kotlinOptions {
  43 + jvmTarget = "1.8"
  44 + }
  45 +
  46 + sourceSets {
  47 + main.java.srcDirs += "src/main/kotlin"
  48 + test.java.srcDirs += "src/test/kotlin"
  49 + }
  50 +
  51 + defaultConfig {
  52 + minSdk = 21
  53 + }
  54 +
  55 + dependencies {
  56 + def mixpush_version = '2.4.0'
  57 + implementation "io.github.mixpush:mixpush-core:$mixpush_version" // 核心包
  58 + implementation "io.github.mixpush:mixpush-huawei:$mixpush_version" // 华为推送
  59 + implementation group: 'com.alibaba', name: 'fastjson', version: '1.2.68'
  60 +
  61 + testImplementation("org.jetbrains.kotlin:kotlin-test")
  62 + testImplementation("org.mockito:mockito-core:5.0.0")
  63 + }
  64 +
  65 + testOptions {
  66 + unitTests.all {
  67 + useJUnitPlatform()
  68 +
  69 + testLogging {
  70 + events "passed", "skipped", "failed", "standardOut", "standardError"
  71 + outputs.upToDateWhen {false}
  72 + showStandardStreams = true
  73 + }
  74 + }
  75 + }
  76 +}
No preview for this file type
  1 +distributionBase=GRADLE_USER_HOME
  2 +distributionPath=wrapper/dists
  3 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
  4 +networkTimeout=10000
  5 +validateDistributionUrl=true
  6 +zipStoreBase=GRADLE_USER_HOME
  7 +zipStorePath=wrapper/dists
  1 +#!/bin/sh
  2 +
  3 +#
  4 +# Copyright © 2015-2021 the original authors.
  5 +#
  6 +# Licensed under the Apache License, Version 2.0 (the "License");
  7 +# you may not use this file except in compliance with the License.
  8 +# You may obtain a copy of the License at
  9 +#
  10 +# https://www.apache.org/licenses/LICENSE-2.0
  11 +#
  12 +# Unless required by applicable law or agreed to in writing, software
  13 +# distributed under the License is distributed on an "AS IS" BASIS,
  14 +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15 +# See the License for the specific language governing permissions and
  16 +# limitations under the License.
  17 +#
  18 +
  19 +##############################################################################
  20 +#
  21 +# Gradle start up script for POSIX generated by Gradle.
  22 +#
  23 +# Important for running:
  24 +#
  25 +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
  26 +# noncompliant, but you have some other compliant shell such as ksh or
  27 +# bash, then to run this script, type that shell name before the whole
  28 +# command line, like:
  29 +#
  30 +# ksh Gradle
  31 +#
  32 +# Busybox and similar reduced shells will NOT work, because this script
  33 +# requires all of these POSIX shell features:
  34 +# * functions;
  35 +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
  36 +# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
  37 +# * compound commands having a testable exit status, especially «case»;
  38 +# * various built-in commands including «command», «set», and «ulimit».
  39 +#
  40 +# Important for patching:
  41 +#
  42 +# (2) This script targets any POSIX shell, so it avoids extensions provided
  43 +# by Bash, Ksh, etc; in particular arrays are avoided.
  44 +#
  45 +# The "traditional" practice of packing multiple parameters into a
  46 +# space-separated string is a well documented source of bugs and security
  47 +# problems, so this is (mostly) avoided, by progressively accumulating
  48 +# options in "$@", and eventually passing that to Java.
  49 +#
  50 +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
  51 +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
  52 +# see the in-line comments for details.
  53 +#
  54 +# There are tweaks for specific operating systems such as AIX, CygWin,
  55 +# Darwin, MinGW, and NonStop.
  56 +#
  57 +# (3) This script is generated from the Groovy template
  58 +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
  59 +# within the Gradle project.
  60 +#
  61 +# You can find Gradle at https://github.com/gradle/gradle/.
  62 +#
  63 +##############################################################################
  64 +
  65 +# Attempt to set APP_HOME
  66 +
  67 +# Resolve links: $0 may be a link
  68 +app_path=$0
  69 +
  70 +# Need this for daisy-chained symlinks.
  71 +while
  72 + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
  73 + [ -h "$app_path" ]
  74 +do
  75 + ls=$( ls -ld "$app_path" )
  76 + link=${ls#*' -> '}
  77 + case $link in #(
  78 + /*) app_path=$link ;; #(
  79 + *) app_path=$APP_HOME$link ;;
  80 + esac
  81 +done
  82 +
  83 +# This is normally unused
  84 +# shellcheck disable=SC2034
  85 +APP_BASE_NAME=${0##*/}
  86 +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
  87 +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
  88 +
  89 +# Use the maximum available, or set MAX_FD != -1 to use that value.
  90 +MAX_FD=maximum
  91 +
  92 +warn () {
  93 + echo "$*"
  94 +} >&2
  95 +
  96 +die () {
  97 + echo
  98 + echo "$*"
  99 + echo
  100 + exit 1
  101 +} >&2
  102 +
  103 +# OS specific support (must be 'true' or 'false').
  104 +cygwin=false
  105 +msys=false
  106 +darwin=false
  107 +nonstop=false
  108 +case "$( uname )" in #(
  109 + CYGWIN* ) cygwin=true ;; #(
  110 + Darwin* ) darwin=true ;; #(
  111 + MSYS* | MINGW* ) msys=true ;; #(
  112 + NONSTOP* ) nonstop=true ;;
  113 +esac
  114 +
  115 +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
  116 +
  117 +
  118 +# Determine the Java command to use to start the JVM.
  119 +if [ -n "$JAVA_HOME" ] ; then
  120 + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
  121 + # IBM's JDK on AIX uses strange locations for the executables
  122 + JAVACMD=$JAVA_HOME/jre/sh/java
  123 + else
  124 + JAVACMD=$JAVA_HOME/bin/java
  125 + fi
  126 + if [ ! -x "$JAVACMD" ] ; then
  127 + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
  128 +
  129 +Please set the JAVA_HOME variable in your environment to match the
  130 +location of your Java installation."
  131 + fi
  132 +else
  133 + JAVACMD=java
  134 + if ! command -v java >/dev/null 2>&1
  135 + then
  136 + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
  137 +
  138 +Please set the JAVA_HOME variable in your environment to match the
  139 +location of your Java installation."
  140 + fi
  141 +fi
  142 +
  143 +# Increase the maximum file descriptors if we can.
  144 +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
  145 + case $MAX_FD in #(
  146 + max*)
  147 + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
  148 + # shellcheck disable=SC2039,SC3045
  149 + MAX_FD=$( ulimit -H -n ) ||
  150 + warn "Could not query maximum file descriptor limit"
  151 + esac
  152 + case $MAX_FD in #(
  153 + '' | soft) :;; #(
  154 + *)
  155 + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
  156 + # shellcheck disable=SC2039,SC3045
  157 + ulimit -n "$MAX_FD" ||
  158 + warn "Could not set maximum file descriptor limit to $MAX_FD"
  159 + esac
  160 +fi
  161 +
  162 +# Collect all arguments for the java command, stacking in reverse order:
  163 +# * args from the command line
  164 +# * the main class name
  165 +# * -classpath
  166 +# * -D...appname settings
  167 +# * --module-path (only if needed)
  168 +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
  169 +
  170 +# For Cygwin or MSYS, switch paths to Windows format before running java
  171 +if "$cygwin" || "$msys" ; then
  172 + APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
  173 + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
  174 +
  175 + JAVACMD=$( cygpath --unix "$JAVACMD" )
  176 +
  177 + # Now convert the arguments - kludge to limit ourselves to /bin/sh
  178 + for arg do
  179 + if
  180 + case $arg in #(
  181 + -*) false ;; # don't mess with options #(
  182 + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
  183 + [ -e "$t" ] ;; #(
  184 + *) false ;;
  185 + esac
  186 + then
  187 + arg=$( cygpath --path --ignore --mixed "$arg" )
  188 + fi
  189 + # Roll the args list around exactly as many times as the number of
  190 + # args, so each arg winds up back in the position where it started, but
  191 + # possibly modified.
  192 + #
  193 + # NB: a `for` loop captures its iteration list before it begins, so
  194 + # changing the positional parameters here affects neither the number of
  195 + # iterations, nor the values presented in `arg`.
  196 + shift # remove old arg
  197 + set -- "$@" "$arg" # push replacement arg
  198 + done
  199 +fi
  200 +
  201 +
  202 +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
  203 +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
  204 +
  205 +# Collect all arguments for the java command:
  206 +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
  207 +# and any embedded shellness will be escaped.
  208 +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
  209 +# treated as '${Hostname}' itself on the command line.
  210 +
  211 +set -- \
  212 + "-Dorg.gradle.appname=$APP_BASE_NAME" \
  213 + -classpath "$CLASSPATH" \
  214 + org.gradle.wrapper.GradleWrapperMain \
  215 + "$@"
  216 +
  217 +# Stop when "xargs" is not available.
  218 +if ! command -v xargs >/dev/null 2>&1
  219 +then
  220 + die "xargs is not available"
  221 +fi
  222 +
  223 +# Use "xargs" to parse quoted args.
  224 +#
  225 +# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
  226 +#
  227 +# In Bash we could simply go:
  228 +#
  229 +# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
  230 +# set -- "${ARGS[@]}" "$@"
  231 +#
  232 +# but POSIX shell has neither arrays nor command substitution, so instead we
  233 +# post-process each arg (as a line of input to sed) to backslash-escape any
  234 +# character that might be a shell metacharacter, then use eval to reverse
  235 +# that process (while maintaining the separation between arguments), and wrap
  236 +# the whole thing up as a single "set" statement.
  237 +#
  238 +# This will of course break if any of these variables contains a newline or
  239 +# an unmatched quote.
  240 +#
  241 +
  242 +eval "set -- $(
  243 + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
  244 + xargs -n1 |
  245 + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
  246 + tr '\n' ' '
  247 + )" '"$@"'
  248 +
  249 +exec "$JAVACMD" "$@"
  1 +@rem
  2 +@rem Copyright 2015 the original author or authors.
  3 +@rem
  4 +@rem Licensed under the Apache License, Version 2.0 (the "License");
  5 +@rem you may not use this file except in compliance with the License.
  6 +@rem You may obtain a copy of the License at
  7 +@rem
  8 +@rem https://www.apache.org/licenses/LICENSE-2.0
  9 +@rem
  10 +@rem Unless required by applicable law or agreed to in writing, software
  11 +@rem distributed under the License is distributed on an "AS IS" BASIS,
  12 +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13 +@rem See the License for the specific language governing permissions and
  14 +@rem limitations under the License.
  15 +@rem
  16 +
  17 +@if "%DEBUG%"=="" @echo off
  18 +@rem ##########################################################################
  19 +@rem
  20 +@rem Gradle startup script for Windows
  21 +@rem
  22 +@rem ##########################################################################
  23 +
  24 +@rem Set local scope for the variables with windows NT shell
  25 +if "%OS%"=="Windows_NT" setlocal
  26 +
  27 +set DIRNAME=%~dp0
  28 +if "%DIRNAME%"=="" set DIRNAME=.
  29 +@rem This is normally unused
  30 +set APP_BASE_NAME=%~n0
  31 +set APP_HOME=%DIRNAME%
  32 +
  33 +@rem Resolve any "." and ".." in APP_HOME to make it shorter.
  34 +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
  35 +
  36 +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
  37 +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
  38 +
  39 +@rem Find java.exe
  40 +if defined JAVA_HOME goto findJavaFromJavaHome
  41 +
  42 +set JAVA_EXE=java.exe
  43 +%JAVA_EXE% -version >NUL 2>&1
  44 +if %ERRORLEVEL% equ 0 goto execute
  45 +
  46 +echo.
  47 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
  48 +echo.
  49 +echo Please set the JAVA_HOME variable in your environment to match the
  50 +echo location of your Java installation.
  51 +
  52 +goto fail
  53 +
  54 +:findJavaFromJavaHome
  55 +set JAVA_HOME=%JAVA_HOME:"=%
  56 +set JAVA_EXE=%JAVA_HOME%/bin/java.exe
  57 +
  58 +if exist "%JAVA_EXE%" goto execute
  59 +
  60 +echo.
  61 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
  62 +echo.
  63 +echo Please set the JAVA_HOME variable in your environment to match the
  64 +echo location of your Java installation.
  65 +
  66 +goto fail
  67 +
  68 +:execute
  69 +@rem Setup the command line
  70 +
  71 +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
  72 +
  73 +
  74 +@rem Execute Gradle
  75 +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
  76 +
  77 +:end
  78 +@rem End local scope for the variables with windows NT shell
  79 +if %ERRORLEVEL% equ 0 goto mainEnd
  80 +
  81 +:fail
  82 +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
  83 +rem the _cmd.exe /c_ return code!
  84 +set EXIT_CODE=%ERRORLEVEL%
  85 +if %EXIT_CODE% equ 0 set EXIT_CODE=1
  86 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
  87 +exit /b %EXIT_CODE%
  88 +
  89 +:mainEnd
  90 +if "%OS%"=="Windows_NT" endlocal
  91 +
  92 +:omega
  1 +rootProject.name = 'flutter_push'
  1 +<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2 + package="com.ewin.flutter_push">
  3 +</manifest>
  1 +package com.ewin.flutter_push
  2 +
  3 +import android.content.Context
  4 +import android.content.Intent
  5 +import android.net.Uri
  6 +import android.os.Looper
  7 +import android.util.Log
  8 +import com.mixpush.core.MixPushPlatform
  9 +import com.mixpush.core.MixPushMessage
  10 +import com.mixpush.core.MixPushReceiver
  11 +import org.json.JSONObject
  12 +import com.alibaba.fastjson.JSON
  13 +import com.ewin.flutter_push.FlutterPushPlugin
  14 +import com.ewin.flutter_push.enums.MixListenerTypeEnum
  15 +import com.ewin.flutter_push.utils.CommonUtil
  16 +
  17 +class EwinMixPushReceiver : MixPushReceiver() {
  18 + override fun onRegisterSucceed(context: Context, platform: MixPushPlatform) {
  19 + // TODO 上传token到服务端
  20 + Log.e("onRegisterSucceed", "$platform")
  21 + this.invokeListener(MixListenerTypeEnum.ReceiveRegisterResult, platform)
  22 + }
  23 +
  24 + override fun onNotificationMessageClicked(context: Context, message: MixPushMessage) {
  25 + this.invokeListener(MixListenerTypeEnum.NotificationMessageClicked, message)
  26 +
  27 +// var intent: Intent? = null
  28 +// if (message.payload == null) {
  29 +// // 启动APP
  30 +// intent = context.packageManager.getLaunchIntentForPackage(context.packageName)
  31 +// } else {
  32 +// val json = JSONObject(message.payload)
  33 +// val url = json.optString("url", "")
  34 +// if (url == "") {
  35 +// // 启动APP
  36 +// intent = context.packageManager.getLaunchIntentForPackage(context.packageName)
  37 +// } else {
  38 +// val uri = Uri.parse(json.getString("url"))
  39 +//// // 打开浏览器
  40 +//// if (uri.scheme!!.contains("http")) {
  41 +//// intent = Intent(context, WebViewActivity::class.java).putExtra("url", url)
  42 +//// } else if (uri.path == "/user") {
  43 +//// val userId = uri.getQueryParameter("userId")
  44 +//// intent = Intent(context, UserActivity::class.java).putExtra("userId", userId)
  45 +//// }
  46 +// }
  47 +// }
  48 +// if (intent != null) {
  49 +// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
  50 +// context.startActivity(intent)
  51 +// }
  52 + }
  53 +
  54 +
  55 + /**
  56 + * 调用监听器
  57 + *
  58 + * @param type 类型
  59 + * @param params 参数
  60 + */
  61 + private fun invokeListener(type: MixListenerTypeEnum, params: Any?) {
  62 + val p: String = if (params != null) JSON.toJSONString(params) else ""
  63 + CommonUtil.runMainThread {
  64 + FlutterPushPlugin.channel.invokeMethod("onListener", mapOf(
  65 + "type" to type.name,
  66 + "params" to p
  67 + ))
  68 + }
  69 + }
  70 +}
  1 +package com.ewin.flutter_push
  2 +
  3 +import androidx.annotation.NonNull
  4 +import android.content.Context
  5 +
  6 +import io.flutter.embedding.engine.plugins.FlutterPlugin
  7 +import io.flutter.plugin.common.MethodCall
  8 +import io.flutter.plugin.common.MethodChannel
  9 +import io.flutter.plugin.common.MethodChannel.MethodCallHandler
  10 +import io.flutter.plugin.common.MethodChannel.Result
  11 +import com.mixpush.core.GetRegisterIdCallback
  12 +import com.mixpush.core.MixPushClient
  13 +import com.mixpush.core.MixPushLogger
  14 +import com.mixpush.core.MixPushPlatform
  15 +import com.mixpush.huawei.HuaweiPushProvider.HUAWEI
  16 +import com.ewin.flutter_push.EwinMixPushReceiver
  17 +import com.ewin.flutter_push.enums.MixListenerTypeEnum
  18 +import com.ewin.flutter_push.utils.CommonUtil
  19 +import com.alibaba.fastjson.JSON
  20 +
  21 +/** FlutterPushPlugin */
  22 +class FlutterPushPlugin: FlutterPlugin, MethodCallHandler {
  23 + /// The MethodChannel that will the communication between Flutter and native Android
  24 + ///
  25 + /// This local reference serves to register the plugin with the Flutter Engine and unregister it
  26 + /// when the Flutter Engine is detached from the Activity
  27 + companion object {
  28 + lateinit var channel: MethodChannel
  29 + }
  30 + private lateinit var context: Context
  31 +
  32 + override fun onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
  33 + this.context = flutterPluginBinding.applicationContext;
  34 + channel = MethodChannel(flutterPluginBinding.binaryMessenger, "ewin:flutter_push")
  35 + channel.setMethodCallHandler(this)
  36 + }
  37 +
  38 + override fun onMethodCall(call: MethodCall, result: Result) {
  39 + if (call.method == "getPlatformVersion") {
  40 + result.success("Android ${android.os.Build.VERSION.RELEASE}")
  41 + } else if (call.method == "init") {
  42 + val defaultPlatform = CommonUtil.getParam<String?>(call, result, "defaultPlatform")
  43 + MixPushClient.getInstance().setPushReceiver(EwinMixPushReceiver())
  44 + MixPushClient.getInstance().register(this.context,defaultPlatform?:HUAWEI)
  45 + result.success(true)
  46 + } else if (call.method == "getRegId") {
  47 + MixPushClient.getInstance().getRegisterId(this.context, object : GetRegisterIdCallback() {
  48 + override fun callback(platform: MixPushPlatform?) {
  49 + invokeListener(MixListenerTypeEnum.ReceiveRegisterResult, platform)
  50 + }
  51 + })
  52 + result.success(true)
  53 + } else {
  54 + result.notImplemented()
  55 + }
  56 + }
  57 +
  58 + override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {
  59 + channel.setMethodCallHandler(null)
  60 + }
  61 +
  62 + /**
  63 + * 调用监听器
  64 + *
  65 + * @param type 类型
  66 + * @param params 参数
  67 + */
  68 + private fun invokeListener(type: MixListenerTypeEnum, params: Any?) {
  69 + val p: String = if (params != null) JSON.toJSONString(params) else ""
  70 + CommonUtil.runMainThread {
  71 + FlutterPushPlugin.channel.invokeMethod("onListener", mapOf(
  72 + "type" to type.name,
  73 + "params" to p
  74 + ))
  75 + }
  76 + }
  77 +}
  1 +package com.ewin.flutter_push.enums
  2 +
  3 +enum class MixListenerTypeEnum {
  4 + NotificationMessageClicked,
  5 + RequirePermissions,
  6 + ReceivePassThroughMessage,
  7 + CommandResult,
  8 + ReceiveRegisterResult,
  9 + NotificationMessageArrived,
  10 +}
  1 +package com.ewin.flutter_push.utils;
  2 +
  3 +import android.os.Handler;
  4 +import android.os.Looper;
  5 +
  6 +import com.alibaba.fastjson.JSON;
  7 +
  8 +import io.flutter.plugin.common.MethodCall;
  9 +import io.flutter.plugin.common.MethodChannel;
  10 +
  11 +/**
  12 + * 工具类
  13 + */
  14 +public class CommonUtil {
  15 + /**
  16 + * 主线程处理器
  17 + */
  18 + private final static Handler MAIN_HANDLER = new Handler(Looper.getMainLooper());
  19 +
  20 + /**
  21 + * 通用方法,获得参数值,如未找到参数,则直接中断
  22 + *
  23 + * @param methodCall 方法调用对象
  24 + * @param result 返回对象
  25 + * @param param 参数名
  26 + */
  27 + public static <T> T getParam(MethodCall methodCall, MethodChannel.Result result, String param) {
  28 + T par = methodCall.argument(param);
  29 +// if (par == null) {
  30 +// result.error("Missing parameter", "Cannot find parameter `" + param + "` or `" + param + "` is null!", 5);
  31 +// throw new RuntimeException("Cannot find parameter `" + param + "` or `" + param + "` is null!");
  32 +// }
  33 + return par;
  34 + }
  35 +
  36 + /**
  37 + * 运行主线程代码
  38 + *
  39 + * @param runnable 线程对象
  40 + */
  41 + public static void runMainThread(Runnable runnable) {
  42 + MAIN_HANDLER.post(runnable);
  43 + }
  44 +
  45 + /**
  46 + * 运行主线程返回结果执行
  47 + *
  48 + * @param result 返回结果对象
  49 + * @param param 返回参数
  50 + */
  51 + public static void runMainThreadReturn(final MethodChannel.Result result, final Object param) {
  52 + MAIN_HANDLER.post(new Runnable() {
  53 + @Override
  54 + public void run() {
  55 + result.success(param);
  56 + }
  57 + });
  58 + }
  59 +
  60 + /**
  61 + * 运行主线程返回错误结果执行
  62 + *
  63 + * @param result 返回结果对象
  64 + * @param errorCode 错误码
  65 + * @param errorMessage 错误信息
  66 + * @param errorDetails 错误内容
  67 + */
  68 + public static void runMainThreadReturnError(final MethodChannel.Result result, final String errorCode, final String errorMessage, final Object errorDetails) {
  69 + MAIN_HANDLER.post(new Runnable() {
  70 + @Override
  71 + public void run() {
  72 + result.error(errorCode, errorMessage, errorDetails);
  73 + }
  74 + });
  75 + }
  76 +}
  1 +package com.ewin.flutter_push
  2 +
  3 +import io.flutter.plugin.common.MethodCall
  4 +import io.flutter.plugin.common.MethodChannel
  5 +import kotlin.test.Test
  6 +import org.mockito.Mockito
  7 +
  8 +/*
  9 + * This demonstrates a simple unit test of the Kotlin portion of this plugin's implementation.
  10 + *
  11 + * Once you have built the plugin's example app, you can run these tests from the command
  12 + * line by running `./gradlew testDebugUnitTest` in the `example/android/` directory, or
  13 + * you can run them directly from IDEs that support JUnit such as Android Studio.
  14 + */
  15 +
  16 +internal class FlutterPushPluginTest {
  17 + @Test
  18 + fun onMethodCall_getPlatformVersion_returnsExpectedValue() {
  19 + val plugin = FlutterPushPlugin()
  20 +
  21 + val call = MethodCall("getPlatformVersion", null)
  22 + val mockResult: MethodChannel.Result = Mockito.mock(MethodChannel.Result::class.java)
  23 + plugin.onMethodCall(call, mockResult)
  24 +
  25 + Mockito.verify(mockResult).success("Android " + android.os.Build.VERSION.RELEASE)
  26 + }
  27 +}
  1 +# Miscellaneous
  2 +*.class
  3 +*.log
  4 +*.pyc
  5 +*.swp
  6 +.DS_Store
  7 +.atom/
  8 +.buildlog/
  9 +.history
  10 +.svn/
  11 +migrate_working_dir/
  12 +
  13 +# IntelliJ related
  14 +*.iml
  15 +*.ipr
  16 +*.iws
  17 +.idea/
  18 +
  19 +# The .vscode folder contains launch configuration and tasks you configure in
  20 +# VS Code which you may wish to be included in version control, so this line
  21 +# is commented out by default.
  22 +#.vscode/
  23 +
  24 +# Flutter/Dart/Pub related
  25 +**/doc/api/
  26 +**/ios/Flutter/.last_build_id
  27 +.dart_tool/
  28 +.flutter-plugins
  29 +.flutter-plugins-dependencies
  30 +.pub-cache/
  31 +.pub/
  32 +/build/
  33 +
  34 +# Symbolication related
  35 +app.*.symbols
  36 +
  37 +# Obfuscation related
  38 +app.*.map.json
  39 +
  40 +# Android Studio will place build artifacts here
  41 +/android/app/debug
  42 +/android/app/profile
  43 +/android/app/release
  1 +# flutter_push_example
  2 +
  3 +Demonstrates how to use the flutter_push plugin.
  4 +
  5 +## Getting Started
  6 +
  7 +This project is a starting point for a Flutter application.
  8 +
  9 +A few resources to get you started if this is your first Flutter project:
  10 +
  11 +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
  12 +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
  13 +
  14 +For help getting started with Flutter development, view the
  15 +[online documentation](https://docs.flutter.dev/), which offers tutorials,
  16 +samples, guidance on mobile development, and a full API reference.
  1 +# This file configures the analyzer, which statically analyzes Dart code to
  2 +# check for errors, warnings, and lints.
  3 +#
  4 +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
  5 +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
  6 +# invoked from the command line by running `flutter analyze`.
  7 +
  8 +# The following line activates a set of recommended lints for Flutter apps,
  9 +# packages, and plugins designed to encourage good coding practices.
  10 +include: package:flutter_lints/flutter.yaml
  11 +
  12 +linter:
  13 + # The lint rules applied to this project can be customized in the
  14 + # section below to disable rules from the `package:flutter_lints/flutter.yaml`
  15 + # included above or to enable additional rules. A list of all available lints
  16 + # and their documentation is published at https://dart.dev/lints.
  17 + #
  18 + # Instead of disabling a lint rule for the entire project in the
  19 + # section below, it can also be suppressed for a single line of code
  20 + # or a specific dart file by using the `// ignore: name_of_lint` and
  21 + # `// ignore_for_file: name_of_lint` syntax on the line or in the file
  22 + # producing the lint.
  23 + rules:
  24 + # avoid_print: false # Uncomment to disable the `avoid_print` rule
  25 + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
  26 +
  27 +# Additional information about this file can be found at
  28 +# https://dart.dev/guides/language/analysis-options
  1 +gradle-wrapper.jar
  2 +/.gradle
  3 +/captures/
  4 +/gradlew
  5 +/gradlew.bat
  6 +/local.properties
  7 +GeneratedPluginRegistrant.java
  8 +
  9 +# Remember to never publicly share your keystore.
  10 +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
  11 +key.properties
  12 +**/*.keystore
  13 +**/*.jks
  1 +plugins {
  2 + id "com.android.application"
  3 + id "kotlin-android"
  4 + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
  5 + id "dev.flutter.flutter-gradle-plugin"
  6 +}
  7 +
  8 +def localProperties = new Properties()
  9 +def localPropertiesFile = rootProject.file("local.properties")
  10 +if (localPropertiesFile.exists()) {
  11 + localPropertiesFile.withReader("UTF-8") { reader ->
  12 + localProperties.load(reader)
  13 + }
  14 +}
  15 +
  16 +def flutterVersionCode = localProperties.getProperty("flutter.versionCode")
  17 +if (flutterVersionCode == null) {
  18 + flutterVersionCode = "1"
  19 +}
  20 +
  21 +def flutterVersionName = localProperties.getProperty("flutter.versionName")
  22 +if (flutterVersionName == null) {
  23 + flutterVersionName = "1.0"
  24 +}
  25 +
  26 +android {
  27 + namespace = "com.ewin.flutter_push_example"
  28 + compileSdk = flutter.compileSdkVersion
  29 + ndkVersion = flutter.ndkVersion
  30 +
  31 + compileOptions {
  32 + sourceCompatibility = JavaVersion.VERSION_1_8
  33 + targetCompatibility = JavaVersion.VERSION_1_8
  34 + }
  35 +
  36 + defaultConfig {
  37 + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
  38 + applicationId = "com.ewin.flutter_push_example"
  39 + // You can update the following values to match your application needs.
  40 + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
  41 + minSdk = flutter.minSdkVersion
  42 + targetSdk = flutter.targetSdkVersion
  43 + versionCode = flutterVersionCode.toInteger()
  44 + versionName = flutterVersionName
  45 + }
  46 +
  47 + buildTypes {
  48 + release {
  49 + // TODO: Add your own signing config for the release build.
  50 + // Signing with the debug keys for now, so `flutter run --release` works.
  51 + signingConfig = signingConfigs.debug
  52 + }
  53 + }
  54 +}
  55 +
  56 +flutter {
  57 + source = "../.."
  58 +}
  1 +<manifest xmlns:android="http://schemas.android.com/apk/res/android">
  2 + <!-- The INTERNET permission is required for development. Specifically,
  3 + the Flutter tool needs it to communicate with the running application
  4 + to allow setting breakpoints, to provide hot reload, etc.
  5 + -->
  6 + <uses-permission android:name="android.permission.INTERNET"/>
  7 +</manifest>
  1 +<manifest xmlns:android="http://schemas.android.com/apk/res/android">
  2 + <application
  3 + android:label="flutter_push_example"
  4 + android:name="${applicationName}"
  5 + android:icon="@mipmap/ic_launcher">
  6 + <activity
  7 + android:name=".MainActivity"
  8 + android:exported="true"
  9 + android:launchMode="singleTop"
  10 + android:taskAffinity=""
  11 + android:theme="@style/LaunchTheme"
  12 + android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
  13 + android:hardwareAccelerated="true"
  14 + android:windowSoftInputMode="adjustResize">
  15 + <!-- Specifies an Android theme to apply to this Activity as soon as
  16 + the Android process has started. This theme is visible to the user
  17 + while the Flutter UI initializes. After that, this theme continues
  18 + to determine the Window background behind the Flutter UI. -->
  19 + <meta-data
  20 + android:name="io.flutter.embedding.android.NormalTheme"
  21 + android:resource="@style/NormalTheme"
  22 + />
  23 + <intent-filter>
  24 + <action android:name="android.intent.action.MAIN"/>
  25 + <category android:name="android.intent.category.LAUNCHER"/>
  26 + </intent-filter>
  27 + </activity>
  28 + <!-- Don't delete the meta-data below.
  29 + This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
  30 + <meta-data
  31 + android:name="flutterEmbedding"
  32 + android:value="2" />
  33 + </application>
  34 + <!-- Required to query activities that can process text, see:
  35 + https://developer.android.com/training/package-visibility and
  36 + https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
  37 +
  38 + In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
  39 + <queries>
  40 + <intent>
  41 + <action android:name="android.intent.action.PROCESS_TEXT"/>
  42 + <data android:mimeType="text/plain"/>
  43 + </intent>
  44 + </queries>
  45 +</manifest>
  1 +package com.ewin.flutter_push_example
  2 +
  3 +import io.flutter.embedding.android.FlutterActivity
  4 +
  5 +class MainActivity: FlutterActivity()
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<!-- Modify this file to customize your launch splash screen -->
  3 +<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  4 + <item android:drawable="?android:colorBackground" />
  5 +
  6 + <!-- You can insert your own image assets here -->
  7 + <!-- <item>
  8 + <bitmap
  9 + android:gravity="center"
  10 + android:src="@mipmap/launch_image" />
  11 + </item> -->
  12 +</layer-list>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<!-- Modify this file to customize your launch splash screen -->
  3 +<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  4 + <item android:drawable="@android:color/white" />
  5 +
  6 + <!-- You can insert your own image assets here -->
  7 + <!-- <item>
  8 + <bitmap
  9 + android:gravity="center"
  10 + android:src="@mipmap/launch_image" />
  11 + </item> -->
  12 +</layer-list>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<resources>
  3 + <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
  4 + <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
  5 + <!-- Show a splash screen on the activity. Automatically removed when
  6 + the Flutter engine draws its first frame -->
  7 + <item name="android:windowBackground">@drawable/launch_background</item>
  8 + </style>
  9 + <!-- Theme applied to the Android Window as soon as the process has started.
  10 + This theme determines the color of the Android Window while your
  11 + Flutter UI initializes, as well as behind your Flutter UI while its
  12 + running.
  13 +
  14 + This Theme is only used starting with V2 of Flutter's Android embedding. -->
  15 + <style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
  16 + <item name="android:windowBackground">?android:colorBackground</item>
  17 + </style>
  18 +</resources>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<resources>
  3 + <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
  4 + <style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
  5 + <!-- Show a splash screen on the activity. Automatically removed when
  6 + the Flutter engine draws its first frame -->
  7 + <item name="android:windowBackground">@drawable/launch_background</item>
  8 + </style>
  9 + <!-- Theme applied to the Android Window as soon as the process has started.
  10 + This theme determines the color of the Android Window while your
  11 + Flutter UI initializes, as well as behind your Flutter UI while its
  12 + running.
  13 +
  14 + This Theme is only used starting with V2 of Flutter's Android embedding. -->
  15 + <style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
  16 + <item name="android:windowBackground">?android:colorBackground</item>
  17 + </style>
  18 +</resources>
  1 +<manifest xmlns:android="http://schemas.android.com/apk/res/android">
  2 + <!-- The INTERNET permission is required for development. Specifically,
  3 + the Flutter tool needs it to communicate with the running application
  4 + to allow setting breakpoints, to provide hot reload, etc.
  5 + -->
  6 + <uses-permission android:name="android.permission.INTERNET"/>
  7 +</manifest>
  1 +allprojects {
  2 + repositories {
  3 + google()
  4 + mavenCentral()
  5 + }
  6 +}
  7 +
  8 +rootProject.buildDir = "../build"
  9 +subprojects {
  10 + project.buildDir = "${rootProject.buildDir}/${project.name}"
  11 +}
  12 +subprojects {
  13 + project.evaluationDependsOn(":app")
  14 +}
  15 +
  16 +tasks.register("clean", Delete) {
  17 + delete rootProject.buildDir
  18 +}
  1 +org.gradle.jvmargs=-Xmx4G -XX:+HeapDumpOnOutOfMemoryError
  2 +android.useAndroidX=true
  3 +android.enableJetifier=true
  1 +distributionBase=GRADLE_USER_HOME
  2 +distributionPath=wrapper/dists
  3 +zipStoreBase=GRADLE_USER_HOME
  4 +zipStorePath=wrapper/dists
  5 +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
  1 +pluginManagement {
  2 + def flutterSdkPath = {
  3 + def properties = new Properties()
  4 + file("local.properties").withInputStream { properties.load(it) }
  5 + def flutterSdkPath = properties.getProperty("flutter.sdk")
  6 + assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
  7 + return flutterSdkPath
  8 + }()
  9 +
  10 + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
  11 +
  12 + repositories {
  13 + google()
  14 + mavenCentral()
  15 + gradlePluginPortal()
  16 + }
  17 +}
  18 +
  19 +plugins {
  20 + id "dev.flutter.flutter-plugin-loader" version "1.0.0"
  21 + id "com.android.application" version "7.3.0" apply false
  22 + id "org.jetbrains.kotlin.android" version "1.7.10" apply false
  23 +}
  24 +
  25 +include ":app"
  1 +// This is a basic Flutter integration test.
  2 +//
  3 +// Since integration tests run in a full Flutter application, they can interact
  4 +// with the host side of a plugin implementation, unlike Dart unit tests.
  5 +//
  6 +// For more information about Flutter integration tests, please see
  7 +// https://docs.flutter.dev/cookbook/testing/integration/introduction
  8 +
  9 +
  10 +import 'package:flutter_test/flutter_test.dart';
  11 +import 'package:integration_test/integration_test.dart';
  12 +
  13 +import 'package:flutter_push/flutter_push.dart';
  14 +
  15 +void main() {
  16 + IntegrationTestWidgetsFlutterBinding.ensureInitialized();
  17 +
  18 + testWidgets('getPlatformVersion test', (WidgetTester tester) async {
  19 + final FlutterPush plugin = FlutterPush();
  20 + final String? version = await plugin.getPlatformVersion();
  21 + // The version string depends on the host platform running the test, so
  22 + // just assert that some non-empty string is returned.
  23 + expect(version?.isNotEmpty, true);
  24 + });
  25 +}
  1 +**/dgph
  2 +*.mode1v3
  3 +*.mode2v3
  4 +*.moved-aside
  5 +*.pbxuser
  6 +*.perspectivev3
  7 +**/*sync/
  8 +.sconsign.dblite
  9 +.tags*
  10 +**/.vagrant/
  11 +**/DerivedData/
  12 +Icon?
  13 +**/Pods/
  14 +**/.symlinks/
  15 +profile
  16 +xcuserdata
  17 +**/.generated/
  18 +Flutter/App.framework
  19 +Flutter/Flutter.framework
  20 +Flutter/Flutter.podspec
  21 +Flutter/Generated.xcconfig
  22 +Flutter/ephemeral/
  23 +Flutter/app.flx
  24 +Flutter/app.zip
  25 +Flutter/flutter_assets/
  26 +Flutter/flutter_export_environment.sh
  27 +ServiceDefinitions.json
  28 +Runner/GeneratedPluginRegistrant.*
  29 +
  30 +# Exceptions to above rules.
  31 +!default.mode1v3
  32 +!default.mode2v3
  33 +!default.pbxuser
  34 +!default.perspectivev3
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>CFBundleDevelopmentRegion</key>
  6 + <string>en</string>
  7 + <key>CFBundleExecutable</key>
  8 + <string>App</string>
  9 + <key>CFBundleIdentifier</key>
  10 + <string>io.flutter.flutter.app</string>
  11 + <key>CFBundleInfoDictionaryVersion</key>
  12 + <string>6.0</string>
  13 + <key>CFBundleName</key>
  14 + <string>App</string>
  15 + <key>CFBundlePackageType</key>
  16 + <string>FMWK</string>
  17 + <key>CFBundleShortVersionString</key>
  18 + <string>1.0</string>
  19 + <key>CFBundleSignature</key>
  20 + <string>????</string>
  21 + <key>CFBundleVersion</key>
  22 + <string>1.0</string>
  23 + <key>MinimumOSVersion</key>
  24 + <string>12.0</string>
  25 +</dict>
  26 +</plist>
  1 +#include "Generated.xcconfig"
  1 +#include "Generated.xcconfig"
  1 +// !$*UTF8*$!
  2 +{
  3 + archiveVersion = 1;
  4 + classes = {
  5 + };
  6 + objectVersion = 54;
  7 + objects = {
  8 +
  9 +/* Begin PBXBuildFile section */
  10 + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
  11 + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
  12 + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
  13 + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
  14 + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
  15 + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
  16 + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
  17 +/* End PBXBuildFile section */
  18 +
  19 +/* Begin PBXContainerItemProxy section */
  20 + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = {
  21 + isa = PBXContainerItemProxy;
  22 + containerPortal = 97C146E61CF9000F007C117D /* Project object */;
  23 + proxyType = 1;
  24 + remoteGlobalIDString = 97C146ED1CF9000F007C117D;
  25 + remoteInfo = Runner;
  26 + };
  27 +/* End PBXContainerItemProxy section */
  28 +
  29 +/* Begin PBXCopyFilesBuildPhase section */
  30 + 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
  31 + isa = PBXCopyFilesBuildPhase;
  32 + buildActionMask = 2147483647;
  33 + dstPath = "";
  34 + dstSubfolderSpec = 10;
  35 + files = (
  36 + );
  37 + name = "Embed Frameworks";
  38 + runOnlyForDeploymentPostprocessing = 0;
  39 + };
  40 +/* End PBXCopyFilesBuildPhase section */
  41 +
  42 +/* Begin PBXFileReference section */
  43 + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
  44 + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
  45 + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
  46 + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
  47 + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
  48 + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
  49 + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
  50 + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
  51 + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
  52 + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
  53 + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
  54 + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
  55 + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
  56 + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
  57 + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
  58 +/* End PBXFileReference section */
  59 +
  60 +/* Begin PBXFrameworksBuildPhase section */
  61 + 97C146EB1CF9000F007C117D /* Frameworks */ = {
  62 + isa = PBXFrameworksBuildPhase;
  63 + buildActionMask = 2147483647;
  64 + files = (
  65 + );
  66 + runOnlyForDeploymentPostprocessing = 0;
  67 + };
  68 +/* End PBXFrameworksBuildPhase section */
  69 +
  70 +/* Begin PBXGroup section */
  71 + 331C8082294A63A400263BE5 /* RunnerTests */ = {
  72 + isa = PBXGroup;
  73 + children = (
  74 + 331C807B294A618700263BE5 /* RunnerTests.swift */,
  75 + );
  76 + path = RunnerTests;
  77 + sourceTree = "<group>";
  78 + };
  79 + 9740EEB11CF90186004384FC /* Flutter */ = {
  80 + isa = PBXGroup;
  81 + children = (
  82 + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
  83 + 9740EEB21CF90195004384FC /* Debug.xcconfig */,
  84 + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
  85 + 9740EEB31CF90195004384FC /* Generated.xcconfig */,
  86 + );
  87 + name = Flutter;
  88 + sourceTree = "<group>";
  89 + };
  90 + 97C146E51CF9000F007C117D = {
  91 + isa = PBXGroup;
  92 + children = (
  93 + 9740EEB11CF90186004384FC /* Flutter */,
  94 + 97C146F01CF9000F007C117D /* Runner */,
  95 + 97C146EF1CF9000F007C117D /* Products */,
  96 + 331C8082294A63A400263BE5 /* RunnerTests */,
  97 + );
  98 + sourceTree = "<group>";
  99 + };
  100 + 97C146EF1CF9000F007C117D /* Products */ = {
  101 + isa = PBXGroup;
  102 + children = (
  103 + 97C146EE1CF9000F007C117D /* Runner.app */,
  104 + 331C8081294A63A400263BE5 /* RunnerTests.xctest */,
  105 + );
  106 + name = Products;
  107 + sourceTree = "<group>";
  108 + };
  109 + 97C146F01CF9000F007C117D /* Runner */ = {
  110 + isa = PBXGroup;
  111 + children = (
  112 + 97C146FA1CF9000F007C117D /* Main.storyboard */,
  113 + 97C146FD1CF9000F007C117D /* Assets.xcassets */,
  114 + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
  115 + 97C147021CF9000F007C117D /* Info.plist */,
  116 + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
  117 + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
  118 + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
  119 + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
  120 + );
  121 + path = Runner;
  122 + sourceTree = "<group>";
  123 + };
  124 +/* End PBXGroup section */
  125 +
  126 +/* Begin PBXNativeTarget section */
  127 + 331C8080294A63A400263BE5 /* RunnerTests */ = {
  128 + isa = PBXNativeTarget;
  129 + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
  130 + buildPhases = (
  131 + 331C807D294A63A400263BE5 /* Sources */,
  132 + 331C807F294A63A400263BE5 /* Resources */,
  133 + );
  134 + buildRules = (
  135 + );
  136 + dependencies = (
  137 + 331C8086294A63A400263BE5 /* PBXTargetDependency */,
  138 + );
  139 + name = RunnerTests;
  140 + productName = RunnerTests;
  141 + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */;
  142 + productType = "com.apple.product-type.bundle.unit-test";
  143 + };
  144 + 97C146ED1CF9000F007C117D /* Runner */ = {
  145 + isa = PBXNativeTarget;
  146 + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
  147 + buildPhases = (
  148 + 9740EEB61CF901F6004384FC /* Run Script */,
  149 + 97C146EA1CF9000F007C117D /* Sources */,
  150 + 97C146EB1CF9000F007C117D /* Frameworks */,
  151 + 97C146EC1CF9000F007C117D /* Resources */,
  152 + 9705A1C41CF9048500538489 /* Embed Frameworks */,
  153 + 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
  154 + );
  155 + buildRules = (
  156 + );
  157 + dependencies = (
  158 + );
  159 + name = Runner;
  160 + productName = Runner;
  161 + productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
  162 + productType = "com.apple.product-type.application";
  163 + };
  164 +/* End PBXNativeTarget section */
  165 +
  166 +/* Begin PBXProject section */
  167 + 97C146E61CF9000F007C117D /* Project object */ = {
  168 + isa = PBXProject;
  169 + attributes = {
  170 + BuildIndependentTargetsInParallel = YES;
  171 + LastUpgradeCheck = 1510;
  172 + ORGANIZATIONNAME = "";
  173 + TargetAttributes = {
  174 + 331C8080294A63A400263BE5 = {
  175 + CreatedOnToolsVersion = 14.0;
  176 + TestTargetID = 97C146ED1CF9000F007C117D;
  177 + };
  178 + 97C146ED1CF9000F007C117D = {
  179 + CreatedOnToolsVersion = 7.3.1;
  180 + LastSwiftMigration = 1100;
  181 + };
  182 + };
  183 + };
  184 + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
  185 + compatibilityVersion = "Xcode 9.3";
  186 + developmentRegion = en;
  187 + hasScannedForEncodings = 0;
  188 + knownRegions = (
  189 + en,
  190 + Base,
  191 + );
  192 + mainGroup = 97C146E51CF9000F007C117D;
  193 + productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
  194 + projectDirPath = "";
  195 + projectRoot = "";
  196 + targets = (
  197 + 97C146ED1CF9000F007C117D /* Runner */,
  198 + 331C8080294A63A400263BE5 /* RunnerTests */,
  199 + );
  200 + };
  201 +/* End PBXProject section */
  202 +
  203 +/* Begin PBXResourcesBuildPhase section */
  204 + 331C807F294A63A400263BE5 /* Resources */ = {
  205 + isa = PBXResourcesBuildPhase;
  206 + buildActionMask = 2147483647;
  207 + files = (
  208 + );
  209 + runOnlyForDeploymentPostprocessing = 0;
  210 + };
  211 + 97C146EC1CF9000F007C117D /* Resources */ = {
  212 + isa = PBXResourcesBuildPhase;
  213 + buildActionMask = 2147483647;
  214 + files = (
  215 + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
  216 + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
  217 + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
  218 + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
  219 + );
  220 + runOnlyForDeploymentPostprocessing = 0;
  221 + };
  222 +/* End PBXResourcesBuildPhase section */
  223 +
  224 +/* Begin PBXShellScriptBuildPhase section */
  225 + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
  226 + isa = PBXShellScriptBuildPhase;
  227 + alwaysOutOfDate = 1;
  228 + buildActionMask = 2147483647;
  229 + files = (
  230 + );
  231 + inputPaths = (
  232 + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
  233 + );
  234 + name = "Thin Binary";
  235 + outputPaths = (
  236 + );
  237 + runOnlyForDeploymentPostprocessing = 0;
  238 + shellPath = /bin/sh;
  239 + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
  240 + };
  241 + 9740EEB61CF901F6004384FC /* Run Script */ = {
  242 + isa = PBXShellScriptBuildPhase;
  243 + alwaysOutOfDate = 1;
  244 + buildActionMask = 2147483647;
  245 + files = (
  246 + );
  247 + inputPaths = (
  248 + );
  249 + name = "Run Script";
  250 + outputPaths = (
  251 + );
  252 + runOnlyForDeploymentPostprocessing = 0;
  253 + shellPath = /bin/sh;
  254 + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
  255 + };
  256 +/* End PBXShellScriptBuildPhase section */
  257 +
  258 +/* Begin PBXSourcesBuildPhase section */
  259 + 331C807D294A63A400263BE5 /* Sources */ = {
  260 + isa = PBXSourcesBuildPhase;
  261 + buildActionMask = 2147483647;
  262 + files = (
  263 + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */,
  264 + );
  265 + runOnlyForDeploymentPostprocessing = 0;
  266 + };
  267 + 97C146EA1CF9000F007C117D /* Sources */ = {
  268 + isa = PBXSourcesBuildPhase;
  269 + buildActionMask = 2147483647;
  270 + files = (
  271 + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
  272 + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
  273 + );
  274 + runOnlyForDeploymentPostprocessing = 0;
  275 + };
  276 +/* End PBXSourcesBuildPhase section */
  277 +
  278 +/* Begin PBXTargetDependency section */
  279 + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = {
  280 + isa = PBXTargetDependency;
  281 + target = 97C146ED1CF9000F007C117D /* Runner */;
  282 + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */;
  283 + };
  284 +/* End PBXTargetDependency section */
  285 +
  286 +/* Begin PBXVariantGroup section */
  287 + 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
  288 + isa = PBXVariantGroup;
  289 + children = (
  290 + 97C146FB1CF9000F007C117D /* Base */,
  291 + );
  292 + name = Main.storyboard;
  293 + sourceTree = "<group>";
  294 + };
  295 + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
  296 + isa = PBXVariantGroup;
  297 + children = (
  298 + 97C147001CF9000F007C117D /* Base */,
  299 + );
  300 + name = LaunchScreen.storyboard;
  301 + sourceTree = "<group>";
  302 + };
  303 +/* End PBXVariantGroup section */
  304 +
  305 +/* Begin XCBuildConfiguration section */
  306 + 249021D3217E4FDB00AE95B9 /* Profile */ = {
  307 + isa = XCBuildConfiguration;
  308 + buildSettings = {
  309 + ALWAYS_SEARCH_USER_PATHS = NO;
  310 + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
  311 + CLANG_ANALYZER_NONNULL = YES;
  312 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
  313 + CLANG_CXX_LIBRARY = "libc++";
  314 + CLANG_ENABLE_MODULES = YES;
  315 + CLANG_ENABLE_OBJC_ARC = YES;
  316 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
  317 + CLANG_WARN_BOOL_CONVERSION = YES;
  318 + CLANG_WARN_COMMA = YES;
  319 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  320 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
  321 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  322 + CLANG_WARN_EMPTY_BODY = YES;
  323 + CLANG_WARN_ENUM_CONVERSION = YES;
  324 + CLANG_WARN_INFINITE_RECURSION = YES;
  325 + CLANG_WARN_INT_CONVERSION = YES;
  326 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
  327 + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
  328 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
  329 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  330 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
  331 + CLANG_WARN_STRICT_PROTOTYPES = YES;
  332 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
  333 + CLANG_WARN_UNREACHABLE_CODE = YES;
  334 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  335 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
  336 + COPY_PHASE_STRIP = NO;
  337 + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
  338 + ENABLE_NS_ASSERTIONS = NO;
  339 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  340 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  341 + GCC_C_LANGUAGE_STANDARD = gnu99;
  342 + GCC_NO_COMMON_BLOCKS = YES;
  343 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  344 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  345 + GCC_WARN_UNDECLARED_SELECTOR = YES;
  346 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  347 + GCC_WARN_UNUSED_FUNCTION = YES;
  348 + GCC_WARN_UNUSED_VARIABLE = YES;
  349 + IPHONEOS_DEPLOYMENT_TARGET = 12.0;
  350 + MTL_ENABLE_DEBUG_INFO = NO;
  351 + SDKROOT = iphoneos;
  352 + SUPPORTED_PLATFORMS = iphoneos;
  353 + TARGETED_DEVICE_FAMILY = "1,2";
  354 + VALIDATE_PRODUCT = YES;
  355 + };
  356 + name = Profile;
  357 + };
  358 + 249021D4217E4FDB00AE95B9 /* Profile */ = {
  359 + isa = XCBuildConfiguration;
  360 + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
  361 + buildSettings = {
  362 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  363 + CLANG_ENABLE_MODULES = YES;
  364 + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
  365 + ENABLE_BITCODE = NO;
  366 + INFOPLIST_FILE = Runner/Info.plist;
  367 + LD_RUNPATH_SEARCH_PATHS = (
  368 + "$(inherited)",
  369 + "@executable_path/Frameworks",
  370 + );
  371 + PRODUCT_BUNDLE_IDENTIFIER = com.ewin.flutterPushExample;
  372 + PRODUCT_NAME = "$(TARGET_NAME)";
  373 + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
  374 + SWIFT_VERSION = 5.0;
  375 + VERSIONING_SYSTEM = "apple-generic";
  376 + };
  377 + name = Profile;
  378 + };
  379 + 331C8088294A63A400263BE5 /* Debug */ = {
  380 + isa = XCBuildConfiguration;
  381 + buildSettings = {
  382 + BUNDLE_LOADER = "$(TEST_HOST)";
  383 + CODE_SIGN_STYLE = Automatic;
  384 + CURRENT_PROJECT_VERSION = 1;
  385 + GENERATE_INFOPLIST_FILE = YES;
  386 + MARKETING_VERSION = 1.0;
  387 + PRODUCT_BUNDLE_IDENTIFIER = com.ewin.flutterPushExample.RunnerTests;
  388 + PRODUCT_NAME = "$(TARGET_NAME)";
  389 + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
  390 + SWIFT_OPTIMIZATION_LEVEL = "-Onone";
  391 + SWIFT_VERSION = 5.0;
  392 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
  393 + };
  394 + name = Debug;
  395 + };
  396 + 331C8089294A63A400263BE5 /* Release */ = {
  397 + isa = XCBuildConfiguration;
  398 + buildSettings = {
  399 + BUNDLE_LOADER = "$(TEST_HOST)";
  400 + CODE_SIGN_STYLE = Automatic;
  401 + CURRENT_PROJECT_VERSION = 1;
  402 + GENERATE_INFOPLIST_FILE = YES;
  403 + MARKETING_VERSION = 1.0;
  404 + PRODUCT_BUNDLE_IDENTIFIER = com.ewin.flutterPushExample.RunnerTests;
  405 + PRODUCT_NAME = "$(TARGET_NAME)";
  406 + SWIFT_VERSION = 5.0;
  407 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
  408 + };
  409 + name = Release;
  410 + };
  411 + 331C808A294A63A400263BE5 /* Profile */ = {
  412 + isa = XCBuildConfiguration;
  413 + buildSettings = {
  414 + BUNDLE_LOADER = "$(TEST_HOST)";
  415 + CODE_SIGN_STYLE = Automatic;
  416 + CURRENT_PROJECT_VERSION = 1;
  417 + GENERATE_INFOPLIST_FILE = YES;
  418 + MARKETING_VERSION = 1.0;
  419 + PRODUCT_BUNDLE_IDENTIFIER = com.ewin.flutterPushExample.RunnerTests;
  420 + PRODUCT_NAME = "$(TARGET_NAME)";
  421 + SWIFT_VERSION = 5.0;
  422 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
  423 + };
  424 + name = Profile;
  425 + };
  426 + 97C147031CF9000F007C117D /* Debug */ = {
  427 + isa = XCBuildConfiguration;
  428 + buildSettings = {
  429 + ALWAYS_SEARCH_USER_PATHS = NO;
  430 + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
  431 + CLANG_ANALYZER_NONNULL = YES;
  432 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
  433 + CLANG_CXX_LIBRARY = "libc++";
  434 + CLANG_ENABLE_MODULES = YES;
  435 + CLANG_ENABLE_OBJC_ARC = YES;
  436 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
  437 + CLANG_WARN_BOOL_CONVERSION = YES;
  438 + CLANG_WARN_COMMA = YES;
  439 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  440 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
  441 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  442 + CLANG_WARN_EMPTY_BODY = YES;
  443 + CLANG_WARN_ENUM_CONVERSION = YES;
  444 + CLANG_WARN_INFINITE_RECURSION = YES;
  445 + CLANG_WARN_INT_CONVERSION = YES;
  446 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
  447 + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
  448 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
  449 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  450 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
  451 + CLANG_WARN_STRICT_PROTOTYPES = YES;
  452 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
  453 + CLANG_WARN_UNREACHABLE_CODE = YES;
  454 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  455 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
  456 + COPY_PHASE_STRIP = NO;
  457 + DEBUG_INFORMATION_FORMAT = dwarf;
  458 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  459 + ENABLE_TESTABILITY = YES;
  460 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  461 + GCC_C_LANGUAGE_STANDARD = gnu99;
  462 + GCC_DYNAMIC_NO_PIC = NO;
  463 + GCC_NO_COMMON_BLOCKS = YES;
  464 + GCC_OPTIMIZATION_LEVEL = 0;
  465 + GCC_PREPROCESSOR_DEFINITIONS = (
  466 + "DEBUG=1",
  467 + "$(inherited)",
  468 + );
  469 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  470 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  471 + GCC_WARN_UNDECLARED_SELECTOR = YES;
  472 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  473 + GCC_WARN_UNUSED_FUNCTION = YES;
  474 + GCC_WARN_UNUSED_VARIABLE = YES;
  475 + IPHONEOS_DEPLOYMENT_TARGET = 12.0;
  476 + MTL_ENABLE_DEBUG_INFO = YES;
  477 + ONLY_ACTIVE_ARCH = YES;
  478 + SDKROOT = iphoneos;
  479 + TARGETED_DEVICE_FAMILY = "1,2";
  480 + };
  481 + name = Debug;
  482 + };
  483 + 97C147041CF9000F007C117D /* Release */ = {
  484 + isa = XCBuildConfiguration;
  485 + buildSettings = {
  486 + ALWAYS_SEARCH_USER_PATHS = NO;
  487 + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
  488 + CLANG_ANALYZER_NONNULL = YES;
  489 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
  490 + CLANG_CXX_LIBRARY = "libc++";
  491 + CLANG_ENABLE_MODULES = YES;
  492 + CLANG_ENABLE_OBJC_ARC = YES;
  493 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
  494 + CLANG_WARN_BOOL_CONVERSION = YES;
  495 + CLANG_WARN_COMMA = YES;
  496 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  497 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
  498 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  499 + CLANG_WARN_EMPTY_BODY = YES;
  500 + CLANG_WARN_ENUM_CONVERSION = YES;
  501 + CLANG_WARN_INFINITE_RECURSION = YES;
  502 + CLANG_WARN_INT_CONVERSION = YES;
  503 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
  504 + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
  505 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
  506 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  507 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
  508 + CLANG_WARN_STRICT_PROTOTYPES = YES;
  509 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
  510 + CLANG_WARN_UNREACHABLE_CODE = YES;
  511 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  512 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
  513 + COPY_PHASE_STRIP = NO;
  514 + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
  515 + ENABLE_NS_ASSERTIONS = NO;
  516 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  517 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  518 + GCC_C_LANGUAGE_STANDARD = gnu99;
  519 + GCC_NO_COMMON_BLOCKS = YES;
  520 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  521 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  522 + GCC_WARN_UNDECLARED_SELECTOR = YES;
  523 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  524 + GCC_WARN_UNUSED_FUNCTION = YES;
  525 + GCC_WARN_UNUSED_VARIABLE = YES;
  526 + IPHONEOS_DEPLOYMENT_TARGET = 12.0;
  527 + MTL_ENABLE_DEBUG_INFO = NO;
  528 + SDKROOT = iphoneos;
  529 + SUPPORTED_PLATFORMS = iphoneos;
  530 + SWIFT_COMPILATION_MODE = wholemodule;
  531 + SWIFT_OPTIMIZATION_LEVEL = "-O";
  532 + TARGETED_DEVICE_FAMILY = "1,2";
  533 + VALIDATE_PRODUCT = YES;
  534 + };
  535 + name = Release;
  536 + };
  537 + 97C147061CF9000F007C117D /* Debug */ = {
  538 + isa = XCBuildConfiguration;
  539 + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
  540 + buildSettings = {
  541 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  542 + CLANG_ENABLE_MODULES = YES;
  543 + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
  544 + ENABLE_BITCODE = NO;
  545 + INFOPLIST_FILE = Runner/Info.plist;
  546 + LD_RUNPATH_SEARCH_PATHS = (
  547 + "$(inherited)",
  548 + "@executable_path/Frameworks",
  549 + );
  550 + PRODUCT_BUNDLE_IDENTIFIER = com.ewin.flutterPushExample;
  551 + PRODUCT_NAME = "$(TARGET_NAME)";
  552 + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
  553 + SWIFT_OPTIMIZATION_LEVEL = "-Onone";
  554 + SWIFT_VERSION = 5.0;
  555 + VERSIONING_SYSTEM = "apple-generic";
  556 + };
  557 + name = Debug;
  558 + };
  559 + 97C147071CF9000F007C117D /* Release */ = {
  560 + isa = XCBuildConfiguration;
  561 + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
  562 + buildSettings = {
  563 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  564 + CLANG_ENABLE_MODULES = YES;
  565 + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
  566 + ENABLE_BITCODE = NO;
  567 + INFOPLIST_FILE = Runner/Info.plist;
  568 + LD_RUNPATH_SEARCH_PATHS = (
  569 + "$(inherited)",
  570 + "@executable_path/Frameworks",
  571 + );
  572 + PRODUCT_BUNDLE_IDENTIFIER = com.ewin.flutterPushExample;
  573 + PRODUCT_NAME = "$(TARGET_NAME)";
  574 + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
  575 + SWIFT_VERSION = 5.0;
  576 + VERSIONING_SYSTEM = "apple-generic";
  577 + };
  578 + name = Release;
  579 + };
  580 +/* End XCBuildConfiguration section */
  581 +
  582 +/* Begin XCConfigurationList section */
  583 + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
  584 + isa = XCConfigurationList;
  585 + buildConfigurations = (
  586 + 331C8088294A63A400263BE5 /* Debug */,
  587 + 331C8089294A63A400263BE5 /* Release */,
  588 + 331C808A294A63A400263BE5 /* Profile */,
  589 + );
  590 + defaultConfigurationIsVisible = 0;
  591 + defaultConfigurationName = Release;
  592 + };
  593 + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
  594 + isa = XCConfigurationList;
  595 + buildConfigurations = (
  596 + 97C147031CF9000F007C117D /* Debug */,
  597 + 97C147041CF9000F007C117D /* Release */,
  598 + 249021D3217E4FDB00AE95B9 /* Profile */,
  599 + );
  600 + defaultConfigurationIsVisible = 0;
  601 + defaultConfigurationName = Release;
  602 + };
  603 + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
  604 + isa = XCConfigurationList;
  605 + buildConfigurations = (
  606 + 97C147061CF9000F007C117D /* Debug */,
  607 + 97C147071CF9000F007C117D /* Release */,
  608 + 249021D4217E4FDB00AE95B9 /* Profile */,
  609 + );
  610 + defaultConfigurationIsVisible = 0;
  611 + defaultConfigurationName = Release;
  612 + };
  613 +/* End XCConfigurationList section */
  614 + };
  615 + rootObject = 97C146E61CF9000F007C117D /* Project object */;
  616 +}
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Workspace
  3 + version = "1.0">
  4 + <FileRef
  5 + location = "self:">
  6 + </FileRef>
  7 +</Workspace>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>IDEDidComputeMac32BitWarning</key>
  6 + <true/>
  7 +</dict>
  8 +</plist>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>PreviewsEnabled</key>
  6 + <false/>
  7 +</dict>
  8 +</plist>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Scheme
  3 + LastUpgradeVersion = "1510"
  4 + version = "1.3">
  5 + <BuildAction
  6 + parallelizeBuildables = "YES"
  7 + buildImplicitDependencies = "YES">
  8 + <BuildActionEntries>
  9 + <BuildActionEntry
  10 + buildForTesting = "YES"
  11 + buildForRunning = "YES"
  12 + buildForProfiling = "YES"
  13 + buildForArchiving = "YES"
  14 + buildForAnalyzing = "YES">
  15 + <BuildableReference
  16 + BuildableIdentifier = "primary"
  17 + BlueprintIdentifier = "97C146ED1CF9000F007C117D"
  18 + BuildableName = "Runner.app"
  19 + BlueprintName = "Runner"
  20 + ReferencedContainer = "container:Runner.xcodeproj">
  21 + </BuildableReference>
  22 + </BuildActionEntry>
  23 + </BuildActionEntries>
  24 + </BuildAction>
  25 + <TestAction
  26 + buildConfiguration = "Debug"
  27 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  28 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  29 + shouldUseLaunchSchemeArgsEnv = "YES">
  30 + <MacroExpansion>
  31 + <BuildableReference
  32 + BuildableIdentifier = "primary"
  33 + BlueprintIdentifier = "97C146ED1CF9000F007C117D"
  34 + BuildableName = "Runner.app"
  35 + BlueprintName = "Runner"
  36 + ReferencedContainer = "container:Runner.xcodeproj">
  37 + </BuildableReference>
  38 + </MacroExpansion>
  39 + <Testables>
  40 + <TestableReference
  41 + skipped = "NO"
  42 + parallelizable = "YES">
  43 + <BuildableReference
  44 + BuildableIdentifier = "primary"
  45 + BlueprintIdentifier = "331C8080294A63A400263BE5"
  46 + BuildableName = "RunnerTests.xctest"
  47 + BlueprintName = "RunnerTests"
  48 + ReferencedContainer = "container:Runner.xcodeproj">
  49 + </BuildableReference>
  50 + </TestableReference>
  51 + </Testables>
  52 + </TestAction>
  53 + <LaunchAction
  54 + buildConfiguration = "Debug"
  55 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  56 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  57 + launchStyle = "0"
  58 + useCustomWorkingDirectory = "NO"
  59 + ignoresPersistentStateOnLaunch = "NO"
  60 + debugDocumentVersioning = "YES"
  61 + debugServiceExtension = "internal"
  62 + allowLocationSimulation = "YES">
  63 + <BuildableProductRunnable
  64 + runnableDebuggingMode = "0">
  65 + <BuildableReference
  66 + BuildableIdentifier = "primary"
  67 + BlueprintIdentifier = "97C146ED1CF9000F007C117D"
  68 + BuildableName = "Runner.app"
  69 + BlueprintName = "Runner"
  70 + ReferencedContainer = "container:Runner.xcodeproj">
  71 + </BuildableReference>
  72 + </BuildableProductRunnable>
  73 + </LaunchAction>
  74 + <ProfileAction
  75 + buildConfiguration = "Profile"
  76 + shouldUseLaunchSchemeArgsEnv = "YES"
  77 + savedToolIdentifier = ""
  78 + useCustomWorkingDirectory = "NO"
  79 + debugDocumentVersioning = "YES">
  80 + <BuildableProductRunnable
  81 + runnableDebuggingMode = "0">
  82 + <BuildableReference
  83 + BuildableIdentifier = "primary"
  84 + BlueprintIdentifier = "97C146ED1CF9000F007C117D"
  85 + BuildableName = "Runner.app"
  86 + BlueprintName = "Runner"
  87 + ReferencedContainer = "container:Runner.xcodeproj">
  88 + </BuildableReference>
  89 + </BuildableProductRunnable>
  90 + </ProfileAction>
  91 + <AnalyzeAction
  92 + buildConfiguration = "Debug">
  93 + </AnalyzeAction>
  94 + <ArchiveAction
  95 + buildConfiguration = "Release"
  96 + revealArchiveInOrganizer = "YES">
  97 + </ArchiveAction>
  98 +</Scheme>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Workspace
  3 + version = "1.0">
  4 + <FileRef
  5 + location = "group:Runner.xcodeproj">
  6 + </FileRef>
  7 +</Workspace>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>IDEDidComputeMac32BitWarning</key>
  6 + <true/>
  7 +</dict>
  8 +</plist>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>PreviewsEnabled</key>
  6 + <false/>
  7 +</dict>
  8 +</plist>
  1 +import Flutter
  2 +import UIKit
  3 +
  4 +@UIApplicationMain
  5 +@objc class AppDelegate: FlutterAppDelegate {
  6 + override func application(
  7 + _ application: UIApplication,
  8 + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  9 + ) -> Bool {
  10 + GeneratedPluginRegistrant.register(with: self)
  11 + return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  12 + }
  13 +}
  1 +{
  2 + "images" : [
  3 + {
  4 + "size" : "20x20",
  5 + "idiom" : "iphone",
  6 + "filename" : "Icon-App-20x20@2x.png",
  7 + "scale" : "2x"
  8 + },
  9 + {
  10 + "size" : "20x20",
  11 + "idiom" : "iphone",
  12 + "filename" : "Icon-App-20x20@3x.png",
  13 + "scale" : "3x"
  14 + },
  15 + {
  16 + "size" : "29x29",
  17 + "idiom" : "iphone",
  18 + "filename" : "Icon-App-29x29@1x.png",
  19 + "scale" : "1x"
  20 + },
  21 + {
  22 + "size" : "29x29",
  23 + "idiom" : "iphone",
  24 + "filename" : "Icon-App-29x29@2x.png",
  25 + "scale" : "2x"
  26 + },
  27 + {
  28 + "size" : "29x29",
  29 + "idiom" : "iphone",
  30 + "filename" : "Icon-App-29x29@3x.png",
  31 + "scale" : "3x"
  32 + },
  33 + {
  34 + "size" : "40x40",
  35 + "idiom" : "iphone",
  36 + "filename" : "Icon-App-40x40@2x.png",
  37 + "scale" : "2x"
  38 + },
  39 + {
  40 + "size" : "40x40",
  41 + "idiom" : "iphone",
  42 + "filename" : "Icon-App-40x40@3x.png",
  43 + "scale" : "3x"
  44 + },
  45 + {
  46 + "size" : "60x60",
  47 + "idiom" : "iphone",
  48 + "filename" : "Icon-App-60x60@2x.png",
  49 + "scale" : "2x"
  50 + },
  51 + {
  52 + "size" : "60x60",
  53 + "idiom" : "iphone",
  54 + "filename" : "Icon-App-60x60@3x.png",
  55 + "scale" : "3x"
  56 + },
  57 + {
  58 + "size" : "20x20",
  59 + "idiom" : "ipad",
  60 + "filename" : "Icon-App-20x20@1x.png",
  61 + "scale" : "1x"
  62 + },
  63 + {
  64 + "size" : "20x20",
  65 + "idiom" : "ipad",
  66 + "filename" : "Icon-App-20x20@2x.png",
  67 + "scale" : "2x"
  68 + },
  69 + {
  70 + "size" : "29x29",
  71 + "idiom" : "ipad",
  72 + "filename" : "Icon-App-29x29@1x.png",
  73 + "scale" : "1x"
  74 + },
  75 + {
  76 + "size" : "29x29",
  77 + "idiom" : "ipad",
  78 + "filename" : "Icon-App-29x29@2x.png",
  79 + "scale" : "2x"
  80 + },
  81 + {
  82 + "size" : "40x40",
  83 + "idiom" : "ipad",
  84 + "filename" : "Icon-App-40x40@1x.png",
  85 + "scale" : "1x"
  86 + },
  87 + {
  88 + "size" : "40x40",
  89 + "idiom" : "ipad",
  90 + "filename" : "Icon-App-40x40@2x.png",
  91 + "scale" : "2x"
  92 + },
  93 + {
  94 + "size" : "76x76",
  95 + "idiom" : "ipad",
  96 + "filename" : "Icon-App-76x76@1x.png",
  97 + "scale" : "1x"
  98 + },
  99 + {
  100 + "size" : "76x76",
  101 + "idiom" : "ipad",
  102 + "filename" : "Icon-App-76x76@2x.png",
  103 + "scale" : "2x"
  104 + },
  105 + {
  106 + "size" : "83.5x83.5",
  107 + "idiom" : "ipad",
  108 + "filename" : "Icon-App-83.5x83.5@2x.png",
  109 + "scale" : "2x"
  110 + },
  111 + {
  112 + "size" : "1024x1024",
  113 + "idiom" : "ios-marketing",
  114 + "filename" : "Icon-App-1024x1024@1x.png",
  115 + "scale" : "1x"
  116 + }
  117 + ],
  118 + "info" : {
  119 + "version" : 1,
  120 + "author" : "xcode"
  121 + }
  122 +}
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "LaunchImage.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "filename" : "LaunchImage@2x.png",
  11 + "scale" : "2x"
  12 + },
  13 + {
  14 + "idiom" : "universal",
  15 + "filename" : "LaunchImage@3x.png",
  16 + "scale" : "3x"
  17 + }
  18 + ],
  19 + "info" : {
  20 + "version" : 1,
  21 + "author" : "xcode"
  22 + }
  23 +}
  1 +# Launch Screen Assets
  2 +
  3 +You can customize the launch screen with your own desired assets by replacing the image files in this directory.
  4 +
  5 +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.
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
  3 + <dependencies>
  4 + <deployment identifier="iOS"/>
  5 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
  6 + </dependencies>
  7 + <scenes>
  8 + <!--View Controller-->
  9 + <scene sceneID="EHf-IW-A2E">
  10 + <objects>
  11 + <viewController id="01J-lp-oVM" sceneMemberID="viewController">
  12 + <layoutGuides>
  13 + <viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
  14 + <viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
  15 + </layoutGuides>
  16 + <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
  17 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  18 + <subviews>
  19 + <imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
  20 + </imageView>
  21 + </subviews>
  22 + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  23 + <constraints>
  24 + <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
  25 + <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
  26 + </constraints>
  27 + </view>
  28 + </viewController>
  29 + <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
  30 + </objects>
  31 + <point key="canvasLocation" x="53" y="375"/>
  32 + </scene>
  33 + </scenes>
  34 + <resources>
  35 + <image name="LaunchImage" width="168" height="185"/>
  36 + </resources>
  37 +</document>
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
  3 + <dependencies>
  4 + <deployment identifier="iOS"/>
  5 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
  6 + </dependencies>
  7 + <scenes>
  8 + <!--Flutter View Controller-->
  9 + <scene sceneID="tne-QT-ifu">
  10 + <objects>
  11 + <viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
  12 + <layoutGuides>
  13 + <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
  14 + <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
  15 + </layoutGuides>
  16 + <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
  17 + <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
  18 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  19 + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
  20 + </view>
  21 + </viewController>
  22 + <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
  23 + </objects>
  24 + </scene>
  25 + </scenes>
  26 +</document>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>CFBundleDevelopmentRegion</key>
  6 + <string>$(DEVELOPMENT_LANGUAGE)</string>
  7 + <key>CFBundleDisplayName</key>
  8 + <string>Flutter Push</string>
  9 + <key>CFBundleExecutable</key>
  10 + <string>$(EXECUTABLE_NAME)</string>
  11 + <key>CFBundleIdentifier</key>
  12 + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
  13 + <key>CFBundleInfoDictionaryVersion</key>
  14 + <string>6.0</string>
  15 + <key>CFBundleName</key>
  16 + <string>flutter_push_example</string>
  17 + <key>CFBundlePackageType</key>
  18 + <string>APPL</string>
  19 + <key>CFBundleShortVersionString</key>
  20 + <string>$(FLUTTER_BUILD_NAME)</string>
  21 + <key>CFBundleSignature</key>
  22 + <string>????</string>
  23 + <key>CFBundleVersion</key>
  24 + <string>$(FLUTTER_BUILD_NUMBER)</string>
  25 + <key>LSRequiresIPhoneOS</key>
  26 + <true/>
  27 + <key>UILaunchStoryboardName</key>
  28 + <string>LaunchScreen</string>
  29 + <key>UIMainStoryboardFile</key>
  30 + <string>Main</string>
  31 + <key>UISupportedInterfaceOrientations</key>
  32 + <array>
  33 + <string>UIInterfaceOrientationPortrait</string>
  34 + <string>UIInterfaceOrientationLandscapeLeft</string>
  35 + <string>UIInterfaceOrientationLandscapeRight</string>
  36 + </array>
  37 + <key>UISupportedInterfaceOrientations~ipad</key>
  38 + <array>
  39 + <string>UIInterfaceOrientationPortrait</string>
  40 + <string>UIInterfaceOrientationPortraitUpsideDown</string>
  41 + <string>UIInterfaceOrientationLandscapeLeft</string>
  42 + <string>UIInterfaceOrientationLandscapeRight</string>
  43 + </array>
  44 + <key>CADisableMinimumFrameDurationOnPhone</key>
  45 + <true/>
  46 + <key>UIApplicationSupportsIndirectInputEvents</key>
  47 + <true/>
  48 +</dict>
  49 +</plist>
  1 +#import "GeneratedPluginRegistrant.h"
  1 +import Flutter
  2 +import UIKit
  3 +import XCTest
  4 +
  5 +@testable import flutter_push
  6 +
  7 +// This demonstrates a simple unit test of the Swift portion of this plugin's implementation.
  8 +//
  9 +// See https://developer.apple.com/documentation/xctest for more information about using XCTest.
  10 +
  11 +class RunnerTests: XCTestCase {
  12 +
  13 + func testGetPlatformVersion() {
  14 + let plugin = FlutterPushPlugin()
  15 +
  16 + let call = FlutterMethodCall(methodName: "getPlatformVersion", arguments: [])
  17 +
  18 + let resultExpectation = expectation(description: "result block must be called.")
  19 + plugin.handle(call) { result in
  20 + XCTAssertEqual(result as! String, "iOS " + UIDevice.current.systemVersion)
  21 + resultExpectation.fulfill()
  22 + }
  23 + waitForExpectations(timeout: 1)
  24 + }
  25 +
  26 +}
  1 +import 'package:flutter/material.dart';
  2 +import 'dart:async';
  3 +
  4 +import 'package:flutter/services.dart';
  5 +import 'package:flutter_push/flutter_push.dart';
  6 +
  7 +void main() {
  8 + runApp(const MyApp());
  9 +}
  10 +
  11 +class MyApp extends StatefulWidget {
  12 + const MyApp({super.key});
  13 +
  14 + @override
  15 + State<MyApp> createState() => _MyAppState();
  16 +}
  17 +
  18 +class _MyAppState extends State<MyApp> {
  19 + String _platformVersion = 'Unknown';
  20 + final _flutterPushPlugin = FlutterPush();
  21 + Map<String, Function> methods = {};
  22 +
  23 + @override
  24 + void initState() {
  25 + super.initState();
  26 + initPlatformState();
  27 + _flutterPushPlugin.addListener(onXiaoMiPushListener);
  28 + }
  29 +
  30 + @override
  31 + void dispose() {
  32 + super.dispose();
  33 + _flutterPushPlugin.removeListener(onXiaoMiPushListener);
  34 + }
  35 +
  36 + /// 小米推送监听器
  37 + onXiaoMiPushListener(type, params) {
  38 +
  39 + }
  40 + // Platform messages are asynchronous, so we initialize in an async method.
  41 + Future<void> initPlatformState() async {
  42 + String platformVersion;
  43 + // Platform messages may fail, so we use a try/catch PlatformException.
  44 + // We also handle the message potentially returning null.
  45 + try {
  46 + platformVersion =
  47 + await _flutterPushPlugin.getPlatformVersion() ?? 'Unknown platform version';
  48 +
  49 + await _flutterPushPlugin.init();
  50 + } on PlatformException {
  51 + platformVersion = 'Failed to get platform version.';
  52 + }
  53 +
  54 + // If the widget was removed from the tree while the asynchronous platform
  55 + // message was in flight, we want to discard the reply rather than calling
  56 + // setState to update our non-existent appearance.
  57 + if (!mounted) return;
  58 +
  59 + setState(() {
  60 + _platformVersion = platformVersion;
  61 + });
  62 + }
  63 +
  64 + @override
  65 + Widget build(BuildContext context) {
  66 + return MaterialApp(
  67 + home: Scaffold(
  68 + appBar: AppBar(
  69 + title: const Text('Plugin example app'),
  70 + ),
  71 + body: Center(
  72 + child: Text('Running on: $_platformVersion\n'),
  73 + ),
  74 + ),
  75 + );
  76 + }
  77 +}
  1 +flutter/ephemeral
  1 +# Project-level configuration.
  2 +cmake_minimum_required(VERSION 3.10)
  3 +project(runner LANGUAGES CXX)
  4 +
  5 +# The name of the executable created for the application. Change this to change
  6 +# the on-disk name of your application.
  7 +set(BINARY_NAME "flutter_push_example")
  8 +# The unique GTK application identifier for this application. See:
  9 +# https://wiki.gnome.org/HowDoI/ChooseApplicationID
  10 +set(APPLICATION_ID "com.ewin.flutter_push")
  11 +
  12 +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
  13 +# versions of CMake.
  14 +cmake_policy(SET CMP0063 NEW)
  15 +
  16 +# Load bundled libraries from the lib/ directory relative to the binary.
  17 +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib")
  18 +
  19 +# Root filesystem for cross-building.
  20 +if(FLUTTER_TARGET_PLATFORM_SYSROOT)
  21 + set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT})
  22 + set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT})
  23 + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
  24 + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
  25 + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
  26 + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
  27 +endif()
  28 +
  29 +# Define build configuration options.
  30 +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
  31 + set(CMAKE_BUILD_TYPE "Debug" CACHE
  32 + STRING "Flutter build mode" FORCE)
  33 + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
  34 + "Debug" "Profile" "Release")
  35 +endif()
  36 +
  37 +# Compilation settings that should be applied to most targets.
  38 +#
  39 +# Be cautious about adding new options here, as plugins use this function by
  40 +# default. In most cases, you should add new options to specific targets instead
  41 +# of modifying this function.
  42 +function(APPLY_STANDARD_SETTINGS TARGET)
  43 + target_compile_features(${TARGET} PUBLIC cxx_std_14)
  44 + target_compile_options(${TARGET} PRIVATE -Wall -Werror)
  45 + target_compile_options(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:-O3>")
  46 + target_compile_definitions(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:NDEBUG>")
  47 +endfunction()
  48 +
  49 +# Flutter library and tool build rules.
  50 +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter")
  51 +add_subdirectory(${FLUTTER_MANAGED_DIR})
  52 +
  53 +# System-level dependencies.
  54 +find_package(PkgConfig REQUIRED)
  55 +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
  56 +
  57 +add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}")
  58 +
  59 +# Define the application target. To change its name, change BINARY_NAME above,
  60 +# not the value here, or `flutter run` will no longer work.
  61 +#
  62 +# Any new source files that you add to the application should be added here.
  63 +add_executable(${BINARY_NAME}
  64 + "main.cc"
  65 + "my_application.cc"
  66 + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc"
  67 +)
  68 +
  69 +# Apply the standard set of build settings. This can be removed for applications
  70 +# that need different build settings.
  71 +apply_standard_settings(${BINARY_NAME})
  72 +
  73 +# Add dependency libraries. Add any application-specific dependencies here.
  74 +target_link_libraries(${BINARY_NAME} PRIVATE flutter)
  75 +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK)
  76 +
  77 +# Run the Flutter tool portions of the build. This must not be removed.
  78 +add_dependencies(${BINARY_NAME} flutter_assemble)
  79 +
  80 +# Only the install-generated bundle's copy of the executable will launch
  81 +# correctly, since the resources must in the right relative locations. To avoid
  82 +# people trying to run the unbundled copy, put it in a subdirectory instead of
  83 +# the default top-level location.
  84 +set_target_properties(${BINARY_NAME}
  85 + PROPERTIES
  86 + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run"
  87 +)
  88 +
  89 +# Enable the test target.
  90 +set(include_flutter_push_tests TRUE)
  91 +
  92 +# Generated plugin build rules, which manage building the plugins and adding
  93 +# them to the application.
  94 +include(flutter/generated_plugins.cmake)
  95 +
  96 +
  97 +# === Installation ===
  98 +# By default, "installing" just makes a relocatable bundle in the build
  99 +# directory.
  100 +set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle")
  101 +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
  102 + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE)
  103 +endif()
  104 +
  105 +# Start with a clean build bundle directory every time.
  106 +install(CODE "
  107 + file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\")
  108 + " COMPONENT Runtime)
  109 +
  110 +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data")
  111 +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib")
  112 +
  113 +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}"
  114 + COMPONENT Runtime)
  115 +
  116 +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}"
  117 + COMPONENT Runtime)
  118 +
  119 +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
  120 + COMPONENT Runtime)
  121 +
  122 +foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES})
  123 + install(FILES "${bundled_library}"
  124 + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
  125 + COMPONENT Runtime)
  126 +endforeach(bundled_library)
  127 +
  128 +# Copy the native assets provided by the build.dart from all packages.
  129 +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/")
  130 +install(DIRECTORY "${NATIVE_ASSETS_DIR}"
  131 + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
  132 + COMPONENT Runtime)
  133 +
  134 +# Fully re-copy the assets directory on each build to avoid having stale files
  135 +# from a previous install.
  136 +set(FLUTTER_ASSET_DIR_NAME "flutter_assets")
  137 +install(CODE "
  138 + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\")
  139 + " COMPONENT Runtime)
  140 +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}"
  141 + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime)
  142 +
  143 +# Install the AOT library on non-Debug builds only.
  144 +if(NOT CMAKE_BUILD_TYPE MATCHES "Debug")
  145 + install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
  146 + COMPONENT Runtime)
  147 +endif()
  1 +# This file controls Flutter-level build steps. It should not be edited.
  2 +cmake_minimum_required(VERSION 3.10)
  3 +
  4 +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral")
  5 +
  6 +# Configuration provided via flutter tool.
  7 +include(${EPHEMERAL_DIR}/generated_config.cmake)
  8 +
  9 +# TODO: Move the rest of this into files in ephemeral. See
  10 +# https://github.com/flutter/flutter/issues/57146.
  11 +
  12 +# Serves the same purpose as list(TRANSFORM ... PREPEND ...),
  13 +# which isn't available in 3.10.
  14 +function(list_prepend LIST_NAME PREFIX)
  15 + set(NEW_LIST "")
  16 + foreach(element ${${LIST_NAME}})
  17 + list(APPEND NEW_LIST "${PREFIX}${element}")
  18 + endforeach(element)
  19 + set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE)
  20 +endfunction()
  21 +
  22 +# === Flutter Library ===
  23 +# System-level dependencies.
  24 +find_package(PkgConfig REQUIRED)
  25 +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
  26 +pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0)
  27 +pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0)
  28 +
  29 +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so")
  30 +
  31 +# Published to parent scope for install step.
  32 +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE)
  33 +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE)
  34 +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE)
  35 +set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE)
  36 +
  37 +list(APPEND FLUTTER_LIBRARY_HEADERS
  38 + "fl_basic_message_channel.h"
  39 + "fl_binary_codec.h"
  40 + "fl_binary_messenger.h"
  41 + "fl_dart_project.h"
  42 + "fl_engine.h"
  43 + "fl_json_message_codec.h"
  44 + "fl_json_method_codec.h"
  45 + "fl_message_codec.h"
  46 + "fl_method_call.h"
  47 + "fl_method_channel.h"
  48 + "fl_method_codec.h"
  49 + "fl_method_response.h"
  50 + "fl_plugin_registrar.h"
  51 + "fl_plugin_registry.h"
  52 + "fl_standard_message_codec.h"
  53 + "fl_standard_method_codec.h"
  54 + "fl_string_codec.h"
  55 + "fl_value.h"
  56 + "fl_view.h"
  57 + "flutter_linux.h"
  58 +)
  59 +list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/")
  60 +add_library(flutter INTERFACE)
  61 +target_include_directories(flutter INTERFACE
  62 + "${EPHEMERAL_DIR}"
  63 +)
  64 +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}")
  65 +target_link_libraries(flutter INTERFACE
  66 + PkgConfig::GTK
  67 + PkgConfig::GLIB
  68 + PkgConfig::GIO
  69 +)
  70 +add_dependencies(flutter flutter_assemble)
  71 +
  72 +# === Flutter tool backend ===
  73 +# _phony_ is a non-existent file to force this command to run every time,
  74 +# since currently there's no way to get a full input/output list from the
  75 +# flutter tool.
  76 +add_custom_command(
  77 + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS}
  78 + ${CMAKE_CURRENT_BINARY_DIR}/_phony_
  79 + COMMAND ${CMAKE_COMMAND} -E env
  80 + ${FLUTTER_TOOL_ENVIRONMENT}
  81 + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh"
  82 + ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE}
  83 + VERBATIM
  84 +)
  85 +add_custom_target(flutter_assemble DEPENDS
  86 + "${FLUTTER_LIBRARY}"
  87 + ${FLUTTER_LIBRARY_HEADERS}
  88 +)
  1 +//
  2 +// Generated file. Do not edit.
  3 +//
  4 +
  5 +// clang-format off
  6 +
  7 +#include "generated_plugin_registrant.h"
  8 +
  9 +#include <flutter_push/flutter_push_plugin.h>
  10 +
  11 +void fl_register_plugins(FlPluginRegistry* registry) {
  12 + g_autoptr(FlPluginRegistrar) flutter_push_registrar =
  13 + fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterPushPlugin");
  14 + flutter_push_plugin_register_with_registrar(flutter_push_registrar);
  15 +}
  1 +//
  2 +// Generated file. Do not edit.
  3 +//
  4 +
  5 +// clang-format off
  6 +
  7 +#ifndef GENERATED_PLUGIN_REGISTRANT_
  8 +#define GENERATED_PLUGIN_REGISTRANT_
  9 +
  10 +#include <flutter_linux/flutter_linux.h>
  11 +
  12 +// Registers Flutter plugins.
  13 +void fl_register_plugins(FlPluginRegistry* registry);
  14 +
  15 +#endif // GENERATED_PLUGIN_REGISTRANT_
  1 +#
  2 +# Generated file, do not edit.
  3 +#
  4 +
  5 +list(APPEND FLUTTER_PLUGIN_LIST
  6 + flutter_push
  7 +)
  8 +
  9 +list(APPEND FLUTTER_FFI_PLUGIN_LIST
  10 +)
  11 +
  12 +set(PLUGIN_BUNDLED_LIBRARIES)
  13 +
  14 +foreach(plugin ${FLUTTER_PLUGIN_LIST})
  15 + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin})
  16 + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
  17 + list(APPEND PLUGIN_BUNDLED_LIBRARIES $<TARGET_FILE:${plugin}_plugin>)
  18 + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
  19 +endforeach(plugin)
  20 +
  21 +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
  22 + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin})
  23 + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
  24 +endforeach(ffi_plugin)
  1 +#include "my_application.h"
  2 +
  3 +int main(int argc, char** argv) {
  4 + g_autoptr(MyApplication) app = my_application_new();
  5 + return g_application_run(G_APPLICATION(app), argc, argv);
  6 +}
  1 +#include "my_application.h"
  2 +
  3 +#include <flutter_linux/flutter_linux.h>
  4 +#ifdef GDK_WINDOWING_X11
  5 +#include <gdk/gdkx.h>
  6 +#endif
  7 +
  8 +#include "flutter/generated_plugin_registrant.h"
  9 +
  10 +struct _MyApplication {
  11 + GtkApplication parent_instance;
  12 + char** dart_entrypoint_arguments;
  13 +};
  14 +
  15 +G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION)
  16 +
  17 +// Implements GApplication::activate.
  18 +static void my_application_activate(GApplication* application) {
  19 + MyApplication* self = MY_APPLICATION(application);
  20 + GtkWindow* window =
  21 + GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application)));
  22 +
  23 + // Use a header bar when running in GNOME as this is the common style used
  24 + // by applications and is the setup most users will be using (e.g. Ubuntu
  25 + // desktop).
  26 + // If running on X and not using GNOME then just use a traditional title bar
  27 + // in case the window manager does more exotic layout, e.g. tiling.
  28 + // If running on Wayland assume the header bar will work (may need changing
  29 + // if future cases occur).
  30 + gboolean use_header_bar = TRUE;
  31 +#ifdef GDK_WINDOWING_X11
  32 + GdkScreen* screen = gtk_window_get_screen(window);
  33 + if (GDK_IS_X11_SCREEN(screen)) {
  34 + const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen);
  35 + if (g_strcmp0(wm_name, "GNOME Shell") != 0) {
  36 + use_header_bar = FALSE;
  37 + }
  38 + }
  39 +#endif
  40 + if (use_header_bar) {
  41 + GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new());
  42 + gtk_widget_show(GTK_WIDGET(header_bar));
  43 + gtk_header_bar_set_title(header_bar, "flutter_push_example");
  44 + gtk_header_bar_set_show_close_button(header_bar, TRUE);
  45 + gtk_window_set_titlebar(window, GTK_WIDGET(header_bar));
  46 + } else {
  47 + gtk_window_set_title(window, "flutter_push_example");
  48 + }
  49 +
  50 + gtk_window_set_default_size(window, 1280, 720);
  51 + gtk_widget_show(GTK_WIDGET(window));
  52 +
  53 + g_autoptr(FlDartProject) project = fl_dart_project_new();
  54 + fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments);
  55 +
  56 + FlView* view = fl_view_new(project);
  57 + gtk_widget_show(GTK_WIDGET(view));
  58 + gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view));
  59 +
  60 + fl_register_plugins(FL_PLUGIN_REGISTRY(view));
  61 +
  62 + gtk_widget_grab_focus(GTK_WIDGET(view));
  63 +}
  64 +
  65 +// Implements GApplication::local_command_line.
  66 +static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) {
  67 + MyApplication* self = MY_APPLICATION(application);
  68 + // Strip out the first argument as it is the binary name.
  69 + self->dart_entrypoint_arguments = g_strdupv(*arguments + 1);
  70 +
  71 + g_autoptr(GError) error = nullptr;
  72 + if (!g_application_register(application, nullptr, &error)) {
  73 + g_warning("Failed to register: %s", error->message);
  74 + *exit_status = 1;
  75 + return TRUE;
  76 + }
  77 +
  78 + g_application_activate(application);
  79 + *exit_status = 0;
  80 +
  81 + return TRUE;
  82 +}
  83 +
  84 +// Implements GApplication::startup.
  85 +static void my_application_startup(GApplication* application) {
  86 + //MyApplication* self = MY_APPLICATION(object);
  87 +
  88 + // Perform any actions required at application startup.
  89 +
  90 + G_APPLICATION_CLASS(my_application_parent_class)->startup(application);
  91 +}
  92 +
  93 +// Implements GApplication::shutdown.
  94 +static void my_application_shutdown(GApplication* application) {
  95 + //MyApplication* self = MY_APPLICATION(object);
  96 +
  97 + // Perform any actions required at application shutdown.
  98 +
  99 + G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application);
  100 +}
  101 +
  102 +// Implements GObject::dispose.
  103 +static void my_application_dispose(GObject* object) {
  104 + MyApplication* self = MY_APPLICATION(object);
  105 + g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev);
  106 + G_OBJECT_CLASS(my_application_parent_class)->dispose(object);
  107 +}
  108 +
  109 +static void my_application_class_init(MyApplicationClass* klass) {
  110 + G_APPLICATION_CLASS(klass)->activate = my_application_activate;
  111 + G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line;
  112 + G_APPLICATION_CLASS(klass)->startup = my_application_startup;
  113 + G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown;
  114 + G_OBJECT_CLASS(klass)->dispose = my_application_dispose;
  115 +}
  116 +
  117 +static void my_application_init(MyApplication* self) {}
  118 +
  119 +MyApplication* my_application_new() {
  120 + return MY_APPLICATION(g_object_new(my_application_get_type(),
  121 + "application-id", APPLICATION_ID,
  122 + "flags", G_APPLICATION_NON_UNIQUE,
  123 + nullptr));
  124 +}
  1 +#ifndef FLUTTER_MY_APPLICATION_H_
  2 +#define FLUTTER_MY_APPLICATION_H_
  3 +
  4 +#include <gtk/gtk.h>
  5 +
  6 +G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION,
  7 + GtkApplication)
  8 +
  9 +/**
  10 + * my_application_new:
  11 + *
  12 + * Creates a new Flutter-based application.
  13 + *
  14 + * Returns: a new #MyApplication.
  15 + */
  16 +MyApplication* my_application_new();
  17 +
  18 +#endif // FLUTTER_MY_APPLICATION_H_
  1 +# Flutter-related
  2 +**/Flutter/ephemeral/
  3 +**/Pods/
  4 +
  5 +# Xcode-related
  6 +**/dgph
  7 +**/xcuserdata/
  1 +#include "ephemeral/Flutter-Generated.xcconfig"
  1 +#include "ephemeral/Flutter-Generated.xcconfig"
  1 +//
  2 +// Generated file. Do not edit.
  3 +//
  4 +
  5 +import FlutterMacOS
  6 +import Foundation
  7 +
  8 +import flutter_push
  9 +
  10 +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
  11 + FlutterPushPlugin.register(with: registry.registrar(forPlugin: "FlutterPushPlugin"))
  12 +}
  1 +// !$*UTF8*$!
  2 +{
  3 + archiveVersion = 1;
  4 + classes = {
  5 + };
  6 + objectVersion = 54;
  7 + objects = {
  8 +
  9 +/* Begin PBXAggregateTarget section */
  10 + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = {
  11 + isa = PBXAggregateTarget;
  12 + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */;
  13 + buildPhases = (
  14 + 33CC111E2044C6BF0003C045 /* ShellScript */,
  15 + );
  16 + dependencies = (
  17 + );
  18 + name = "Flutter Assemble";
  19 + productName = FLX;
  20 + };
  21 +/* End PBXAggregateTarget section */
  22 +
  23 +/* Begin PBXBuildFile section */
  24 + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; };
  25 + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; };
  26 + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; };
  27 + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; };
  28 + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; };
  29 + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; };
  30 +/* End PBXBuildFile section */
  31 +
  32 +/* Begin PBXContainerItemProxy section */
  33 + 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = {
  34 + isa = PBXContainerItemProxy;
  35 + containerPortal = 33CC10E52044A3C60003C045 /* Project object */;
  36 + proxyType = 1;
  37 + remoteGlobalIDString = 33CC10EC2044A3C60003C045;
  38 + remoteInfo = Runner;
  39 + };
  40 + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = {
  41 + isa = PBXContainerItemProxy;
  42 + containerPortal = 33CC10E52044A3C60003C045 /* Project object */;
  43 + proxyType = 1;
  44 + remoteGlobalIDString = 33CC111A2044C6BA0003C045;
  45 + remoteInfo = FLX;
  46 + };
  47 +/* End PBXContainerItemProxy section */
  48 +
  49 +/* Begin PBXCopyFilesBuildPhase section */
  50 + 33CC110E2044A8840003C045 /* Bundle Framework */ = {
  51 + isa = PBXCopyFilesBuildPhase;
  52 + buildActionMask = 2147483647;
  53 + dstPath = "";
  54 + dstSubfolderSpec = 10;
  55 + files = (
  56 + );
  57 + name = "Bundle Framework";
  58 + runOnlyForDeploymentPostprocessing = 0;
  59 + };
  60 +/* End PBXCopyFilesBuildPhase section */
  61 +
  62 +/* Begin PBXFileReference section */
  63 + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
  64 + 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
  65 + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; };
  66 + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; };
  67 + 33CC10ED2044A3C60003C045 /* flutter_push_example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "flutter_push_example.app"; sourceTree = BUILT_PRODUCTS_DIR; };
  68 + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
  69 + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = "<group>"; };
  70 + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
  71 + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = "<group>"; };
  72 + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = "<group>"; };
  73 + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = "<group>"; };
  74 + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = "<group>"; };
  75 + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = "<group>"; };
  76 + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = "<group>"; };
  77 + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = "<group>"; };
  78 + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = "<group>"; };
  79 + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; };
  80 + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; };
  81 +/* End PBXFileReference section */
  82 +
  83 +/* Begin PBXFrameworksBuildPhase section */
  84 + 331C80D2294CF70F00263BE5 /* Frameworks */ = {
  85 + isa = PBXFrameworksBuildPhase;
  86 + buildActionMask = 2147483647;
  87 + files = (
  88 + );
  89 + runOnlyForDeploymentPostprocessing = 0;
  90 + };
  91 + 33CC10EA2044A3C60003C045 /* Frameworks */ = {
  92 + isa = PBXFrameworksBuildPhase;
  93 + buildActionMask = 2147483647;
  94 + files = (
  95 + );
  96 + runOnlyForDeploymentPostprocessing = 0;
  97 + };
  98 +/* End PBXFrameworksBuildPhase section */
  99 +
  100 +/* Begin PBXGroup section */
  101 + 331C80D6294CF71000263BE5 /* RunnerTests */ = {
  102 + isa = PBXGroup;
  103 + children = (
  104 + 331C80D7294CF71000263BE5 /* RunnerTests.swift */,
  105 + );
  106 + path = RunnerTests;
  107 + sourceTree = "<group>";
  108 + };
  109 + 33BA886A226E78AF003329D5 /* Configs */ = {
  110 + isa = PBXGroup;
  111 + children = (
  112 + 33E5194F232828860026EE4D /* AppInfo.xcconfig */,
  113 + 9740EEB21CF90195004384FC /* Debug.xcconfig */,
  114 + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
  115 + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */,
  116 + );
  117 + path = Configs;
  118 + sourceTree = "<group>";
  119 + };
  120 + 33CC10E42044A3C60003C045 = {
  121 + isa = PBXGroup;
  122 + children = (
  123 + 33FAB671232836740065AC1E /* Runner */,
  124 + 33CEB47122A05771004F2AC0 /* Flutter */,
  125 + 331C80D6294CF71000263BE5 /* RunnerTests */,
  126 + 33CC10EE2044A3C60003C045 /* Products */,
  127 + D73912EC22F37F3D000D13A0 /* Frameworks */,
  128 + );
  129 + sourceTree = "<group>";
  130 + };
  131 + 33CC10EE2044A3C60003C045 /* Products */ = {
  132 + isa = PBXGroup;
  133 + children = (
  134 + 33CC10ED2044A3C60003C045 /* flutter_push_example.app */,
  135 + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */,
  136 + );
  137 + name = Products;
  138 + sourceTree = "<group>";
  139 + };
  140 + 33CC11242044D66E0003C045 /* Resources */ = {
  141 + isa = PBXGroup;
  142 + children = (
  143 + 33CC10F22044A3C60003C045 /* Assets.xcassets */,
  144 + 33CC10F42044A3C60003C045 /* MainMenu.xib */,
  145 + 33CC10F72044A3C60003C045 /* Info.plist */,
  146 + );
  147 + name = Resources;
  148 + path = ..;
  149 + sourceTree = "<group>";
  150 + };
  151 + 33CEB47122A05771004F2AC0 /* Flutter */ = {
  152 + isa = PBXGroup;
  153 + children = (
  154 + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */,
  155 + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */,
  156 + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */,
  157 + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */,
  158 + );
  159 + path = Flutter;
  160 + sourceTree = "<group>";
  161 + };
  162 + 33FAB671232836740065AC1E /* Runner */ = {
  163 + isa = PBXGroup;
  164 + children = (
  165 + 33CC10F02044A3C60003C045 /* AppDelegate.swift */,
  166 + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */,
  167 + 33E51913231747F40026EE4D /* DebugProfile.entitlements */,
  168 + 33E51914231749380026EE4D /* Release.entitlements */,
  169 + 33CC11242044D66E0003C045 /* Resources */,
  170 + 33BA886A226E78AF003329D5 /* Configs */,
  171 + );
  172 + path = Runner;
  173 + sourceTree = "<group>";
  174 + };
  175 + D73912EC22F37F3D000D13A0 /* Frameworks */ = {
  176 + isa = PBXGroup;
  177 + children = (
  178 + );
  179 + name = Frameworks;
  180 + sourceTree = "<group>";
  181 + };
  182 +/* End PBXGroup section */
  183 +
  184 +/* Begin PBXNativeTarget section */
  185 + 331C80D4294CF70F00263BE5 /* RunnerTests */ = {
  186 + isa = PBXNativeTarget;
  187 + buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
  188 + buildPhases = (
  189 + 331C80D1294CF70F00263BE5 /* Sources */,
  190 + 331C80D2294CF70F00263BE5 /* Frameworks */,
  191 + 331C80D3294CF70F00263BE5 /* Resources */,
  192 + );
  193 + buildRules = (
  194 + );
  195 + dependencies = (
  196 + 331C80DA294CF71000263BE5 /* PBXTargetDependency */,
  197 + );
  198 + name = RunnerTests;
  199 + productName = RunnerTests;
  200 + productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */;
  201 + productType = "com.apple.product-type.bundle.unit-test";
  202 + };
  203 + 33CC10EC2044A3C60003C045 /* Runner */ = {
  204 + isa = PBXNativeTarget;
  205 + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */;
  206 + buildPhases = (
  207 + 33CC10E92044A3C60003C045 /* Sources */,
  208 + 33CC10EA2044A3C60003C045 /* Frameworks */,
  209 + 33CC10EB2044A3C60003C045 /* Resources */,
  210 + 33CC110E2044A8840003C045 /* Bundle Framework */,
  211 + 3399D490228B24CF009A79C7 /* ShellScript */,
  212 + );
  213 + buildRules = (
  214 + );
  215 + dependencies = (
  216 + 33CC11202044C79F0003C045 /* PBXTargetDependency */,
  217 + );
  218 + name = Runner;
  219 + productName = Runner;
  220 + productReference = 33CC10ED2044A3C60003C045 /* flutter_push_example.app */;
  221 + productType = "com.apple.product-type.application";
  222 + };
  223 +/* End PBXNativeTarget section */
  224 +
  225 +/* Begin PBXProject section */
  226 + 33CC10E52044A3C60003C045 /* Project object */ = {
  227 + isa = PBXProject;
  228 + attributes = {
  229 + BuildIndependentTargetsInParallel = YES;
  230 + LastSwiftUpdateCheck = 0920;
  231 + LastUpgradeCheck = 1510;
  232 + ORGANIZATIONNAME = "";
  233 + TargetAttributes = {
  234 + 331C80D4294CF70F00263BE5 = {
  235 + CreatedOnToolsVersion = 14.0;
  236 + TestTargetID = 33CC10EC2044A3C60003C045;
  237 + };
  238 + 33CC10EC2044A3C60003C045 = {
  239 + CreatedOnToolsVersion = 9.2;
  240 + LastSwiftMigration = 1100;
  241 + ProvisioningStyle = Automatic;
  242 + SystemCapabilities = {
  243 + com.apple.Sandbox = {
  244 + enabled = 1;
  245 + };
  246 + };
  247 + };
  248 + 33CC111A2044C6BA0003C045 = {
  249 + CreatedOnToolsVersion = 9.2;
  250 + ProvisioningStyle = Manual;
  251 + };
  252 + };
  253 + };
  254 + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */;
  255 + compatibilityVersion = "Xcode 9.3";
  256 + developmentRegion = en;
  257 + hasScannedForEncodings = 0;
  258 + knownRegions = (
  259 + en,
  260 + Base,
  261 + );
  262 + mainGroup = 33CC10E42044A3C60003C045;
  263 + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */;
  264 + projectDirPath = "";
  265 + projectRoot = "";
  266 + targets = (
  267 + 33CC10EC2044A3C60003C045 /* Runner */,
  268 + 331C80D4294CF70F00263BE5 /* RunnerTests */,
  269 + 33CC111A2044C6BA0003C045 /* Flutter Assemble */,
  270 + );
  271 + };
  272 +/* End PBXProject section */
  273 +
  274 +/* Begin PBXResourcesBuildPhase section */
  275 + 331C80D3294CF70F00263BE5 /* Resources */ = {
  276 + isa = PBXResourcesBuildPhase;
  277 + buildActionMask = 2147483647;
  278 + files = (
  279 + );
  280 + runOnlyForDeploymentPostprocessing = 0;
  281 + };
  282 + 33CC10EB2044A3C60003C045 /* Resources */ = {
  283 + isa = PBXResourcesBuildPhase;
  284 + buildActionMask = 2147483647;
  285 + files = (
  286 + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */,
  287 + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */,
  288 + );
  289 + runOnlyForDeploymentPostprocessing = 0;
  290 + };
  291 +/* End PBXResourcesBuildPhase section */
  292 +
  293 +/* Begin PBXShellScriptBuildPhase section */
  294 + 3399D490228B24CF009A79C7 /* ShellScript */ = {
  295 + isa = PBXShellScriptBuildPhase;
  296 + alwaysOutOfDate = 1;
  297 + buildActionMask = 2147483647;
  298 + files = (
  299 + );
  300 + inputFileListPaths = (
  301 + );
  302 + inputPaths = (
  303 + );
  304 + outputFileListPaths = (
  305 + );
  306 + outputPaths = (
  307 + );
  308 + runOnlyForDeploymentPostprocessing = 0;
  309 + shellPath = /bin/sh;
  310 + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n";
  311 + };
  312 + 33CC111E2044C6BF0003C045 /* ShellScript */ = {
  313 + isa = PBXShellScriptBuildPhase;
  314 + buildActionMask = 2147483647;
  315 + files = (
  316 + );
  317 + inputFileListPaths = (
  318 + Flutter/ephemeral/FlutterInputs.xcfilelist,
  319 + );
  320 + inputPaths = (
  321 + Flutter/ephemeral/tripwire,
  322 + );
  323 + outputFileListPaths = (
  324 + Flutter/ephemeral/FlutterOutputs.xcfilelist,
  325 + );
  326 + outputPaths = (
  327 + );
  328 + runOnlyForDeploymentPostprocessing = 0;
  329 + shellPath = /bin/sh;
  330 + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire";
  331 + };
  332 +/* End PBXShellScriptBuildPhase section */
  333 +
  334 +/* Begin PBXSourcesBuildPhase section */
  335 + 331C80D1294CF70F00263BE5 /* Sources */ = {
  336 + isa = PBXSourcesBuildPhase;
  337 + buildActionMask = 2147483647;
  338 + files = (
  339 + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */,
  340 + );
  341 + runOnlyForDeploymentPostprocessing = 0;
  342 + };
  343 + 33CC10E92044A3C60003C045 /* Sources */ = {
  344 + isa = PBXSourcesBuildPhase;
  345 + buildActionMask = 2147483647;
  346 + files = (
  347 + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */,
  348 + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */,
  349 + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */,
  350 + );
  351 + runOnlyForDeploymentPostprocessing = 0;
  352 + };
  353 +/* End PBXSourcesBuildPhase section */
  354 +
  355 +/* Begin PBXTargetDependency section */
  356 + 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = {
  357 + isa = PBXTargetDependency;
  358 + target = 33CC10EC2044A3C60003C045 /* Runner */;
  359 + targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */;
  360 + };
  361 + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = {
  362 + isa = PBXTargetDependency;
  363 + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */;
  364 + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */;
  365 + };
  366 +/* End PBXTargetDependency section */
  367 +
  368 +/* Begin PBXVariantGroup section */
  369 + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = {
  370 + isa = PBXVariantGroup;
  371 + children = (
  372 + 33CC10F52044A3C60003C045 /* Base */,
  373 + );
  374 + name = MainMenu.xib;
  375 + path = Runner;
  376 + sourceTree = "<group>";
  377 + };
  378 +/* End PBXVariantGroup section */
  379 +
  380 +/* Begin XCBuildConfiguration section */
  381 + 331C80DB294CF71000263BE5 /* Debug */ = {
  382 + isa = XCBuildConfiguration;
  383 + buildSettings = {
  384 + BUNDLE_LOADER = "$(TEST_HOST)";
  385 + CURRENT_PROJECT_VERSION = 1;
  386 + GENERATE_INFOPLIST_FILE = YES;
  387 + MARKETING_VERSION = 1.0;
  388 + PRODUCT_BUNDLE_IDENTIFIER = com.ewin.flutterPushExample.RunnerTests;
  389 + PRODUCT_NAME = "$(TARGET_NAME)";
  390 + SWIFT_VERSION = 5.0;
  391 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/flutter_push_example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/flutter_push_example";
  392 + };
  393 + name = Debug;
  394 + };
  395 + 331C80DC294CF71000263BE5 /* Release */ = {
  396 + isa = XCBuildConfiguration;
  397 + buildSettings = {
  398 + BUNDLE_LOADER = "$(TEST_HOST)";
  399 + CURRENT_PROJECT_VERSION = 1;
  400 + GENERATE_INFOPLIST_FILE = YES;
  401 + MARKETING_VERSION = 1.0;
  402 + PRODUCT_BUNDLE_IDENTIFIER = com.ewin.flutterPushExample.RunnerTests;
  403 + PRODUCT_NAME = "$(TARGET_NAME)";
  404 + SWIFT_VERSION = 5.0;
  405 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/flutter_push_example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/flutter_push_example";
  406 + };
  407 + name = Release;
  408 + };
  409 + 331C80DD294CF71000263BE5 /* Profile */ = {
  410 + isa = XCBuildConfiguration;
  411 + buildSettings = {
  412 + BUNDLE_LOADER = "$(TEST_HOST)";
  413 + CURRENT_PROJECT_VERSION = 1;
  414 + GENERATE_INFOPLIST_FILE = YES;
  415 + MARKETING_VERSION = 1.0;
  416 + PRODUCT_BUNDLE_IDENTIFIER = com.ewin.flutterPushExample.RunnerTests;
  417 + PRODUCT_NAME = "$(TARGET_NAME)";
  418 + SWIFT_VERSION = 5.0;
  419 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/flutter_push_example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/flutter_push_example";
  420 + };
  421 + name = Profile;
  422 + };
  423 + 338D0CE9231458BD00FA5F75 /* Profile */ = {
  424 + isa = XCBuildConfiguration;
  425 + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
  426 + buildSettings = {
  427 + ALWAYS_SEARCH_USER_PATHS = NO;
  428 + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
  429 + CLANG_ANALYZER_NONNULL = YES;
  430 + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
  431 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
  432 + CLANG_CXX_LIBRARY = "libc++";
  433 + CLANG_ENABLE_MODULES = YES;
  434 + CLANG_ENABLE_OBJC_ARC = YES;
  435 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
  436 + CLANG_WARN_BOOL_CONVERSION = YES;
  437 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  438 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
  439 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  440 + CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
  441 + CLANG_WARN_EMPTY_BODY = YES;
  442 + CLANG_WARN_ENUM_CONVERSION = YES;
  443 + CLANG_WARN_INFINITE_RECURSION = YES;
  444 + CLANG_WARN_INT_CONVERSION = YES;
  445 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
  446 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
  447 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  448 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
  449 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
  450 + CODE_SIGN_IDENTITY = "-";
  451 + COPY_PHASE_STRIP = NO;
  452 + DEAD_CODE_STRIPPING = YES;
  453 + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
  454 + ENABLE_NS_ASSERTIONS = NO;
  455 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  456 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  457 + GCC_C_LANGUAGE_STANDARD = gnu11;
  458 + GCC_NO_COMMON_BLOCKS = YES;
  459 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  460 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  461 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  462 + GCC_WARN_UNUSED_FUNCTION = YES;
  463 + GCC_WARN_UNUSED_VARIABLE = YES;
  464 + MACOSX_DEPLOYMENT_TARGET = 10.14;
  465 + MTL_ENABLE_DEBUG_INFO = NO;
  466 + SDKROOT = macosx;
  467 + SWIFT_COMPILATION_MODE = wholemodule;
  468 + SWIFT_OPTIMIZATION_LEVEL = "-O";
  469 + };
  470 + name = Profile;
  471 + };
  472 + 338D0CEA231458BD00FA5F75 /* Profile */ = {
  473 + isa = XCBuildConfiguration;
  474 + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
  475 + buildSettings = {
  476 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  477 + CLANG_ENABLE_MODULES = YES;
  478 + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
  479 + CODE_SIGN_STYLE = Automatic;
  480 + COMBINE_HIDPI_IMAGES = YES;
  481 + INFOPLIST_FILE = Runner/Info.plist;
  482 + LD_RUNPATH_SEARCH_PATHS = (
  483 + "$(inherited)",
  484 + "@executable_path/../Frameworks",
  485 + );
  486 + PROVISIONING_PROFILE_SPECIFIER = "";
  487 + SWIFT_VERSION = 5.0;
  488 + };
  489 + name = Profile;
  490 + };
  491 + 338D0CEB231458BD00FA5F75 /* Profile */ = {
  492 + isa = XCBuildConfiguration;
  493 + buildSettings = {
  494 + CODE_SIGN_STYLE = Manual;
  495 + PRODUCT_NAME = "$(TARGET_NAME)";
  496 + };
  497 + name = Profile;
  498 + };
  499 + 33CC10F92044A3C60003C045 /* Debug */ = {
  500 + isa = XCBuildConfiguration;
  501 + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
  502 + buildSettings = {
  503 + ALWAYS_SEARCH_USER_PATHS = NO;
  504 + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
  505 + CLANG_ANALYZER_NONNULL = YES;
  506 + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
  507 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
  508 + CLANG_CXX_LIBRARY = "libc++";
  509 + CLANG_ENABLE_MODULES = YES;
  510 + CLANG_ENABLE_OBJC_ARC = YES;
  511 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
  512 + CLANG_WARN_BOOL_CONVERSION = YES;
  513 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  514 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
  515 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  516 + CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
  517 + CLANG_WARN_EMPTY_BODY = YES;
  518 + CLANG_WARN_ENUM_CONVERSION = YES;
  519 + CLANG_WARN_INFINITE_RECURSION = YES;
  520 + CLANG_WARN_INT_CONVERSION = YES;
  521 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
  522 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
  523 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  524 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
  525 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
  526 + CODE_SIGN_IDENTITY = "-";
  527 + COPY_PHASE_STRIP = NO;
  528 + DEAD_CODE_STRIPPING = YES;
  529 + DEBUG_INFORMATION_FORMAT = dwarf;
  530 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  531 + ENABLE_TESTABILITY = YES;
  532 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  533 + GCC_C_LANGUAGE_STANDARD = gnu11;
  534 + GCC_DYNAMIC_NO_PIC = NO;
  535 + GCC_NO_COMMON_BLOCKS = YES;
  536 + GCC_OPTIMIZATION_LEVEL = 0;
  537 + GCC_PREPROCESSOR_DEFINITIONS = (
  538 + "DEBUG=1",
  539 + "$(inherited)",
  540 + );
  541 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  542 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  543 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  544 + GCC_WARN_UNUSED_FUNCTION = YES;
  545 + GCC_WARN_UNUSED_VARIABLE = YES;
  546 + MACOSX_DEPLOYMENT_TARGET = 10.14;
  547 + MTL_ENABLE_DEBUG_INFO = YES;
  548 + ONLY_ACTIVE_ARCH = YES;
  549 + SDKROOT = macosx;
  550 + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
  551 + SWIFT_OPTIMIZATION_LEVEL = "-Onone";
  552 + };
  553 + name = Debug;
  554 + };
  555 + 33CC10FA2044A3C60003C045 /* Release */ = {
  556 + isa = XCBuildConfiguration;
  557 + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
  558 + buildSettings = {
  559 + ALWAYS_SEARCH_USER_PATHS = NO;
  560 + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
  561 + CLANG_ANALYZER_NONNULL = YES;
  562 + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
  563 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
  564 + CLANG_CXX_LIBRARY = "libc++";
  565 + CLANG_ENABLE_MODULES = YES;
  566 + CLANG_ENABLE_OBJC_ARC = YES;
  567 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
  568 + CLANG_WARN_BOOL_CONVERSION = YES;
  569 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  570 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
  571 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  572 + CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
  573 + CLANG_WARN_EMPTY_BODY = YES;
  574 + CLANG_WARN_ENUM_CONVERSION = YES;
  575 + CLANG_WARN_INFINITE_RECURSION = YES;
  576 + CLANG_WARN_INT_CONVERSION = YES;
  577 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
  578 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
  579 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  580 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
  581 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
  582 + CODE_SIGN_IDENTITY = "-";
  583 + COPY_PHASE_STRIP = NO;
  584 + DEAD_CODE_STRIPPING = YES;
  585 + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
  586 + ENABLE_NS_ASSERTIONS = NO;
  587 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  588 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  589 + GCC_C_LANGUAGE_STANDARD = gnu11;
  590 + GCC_NO_COMMON_BLOCKS = YES;
  591 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  592 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  593 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  594 + GCC_WARN_UNUSED_FUNCTION = YES;
  595 + GCC_WARN_UNUSED_VARIABLE = YES;
  596 + MACOSX_DEPLOYMENT_TARGET = 10.14;
  597 + MTL_ENABLE_DEBUG_INFO = NO;
  598 + SDKROOT = macosx;
  599 + SWIFT_COMPILATION_MODE = wholemodule;
  600 + SWIFT_OPTIMIZATION_LEVEL = "-O";
  601 + };
  602 + name = Release;
  603 + };
  604 + 33CC10FC2044A3C60003C045 /* Debug */ = {
  605 + isa = XCBuildConfiguration;
  606 + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
  607 + buildSettings = {
  608 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  609 + CLANG_ENABLE_MODULES = YES;
  610 + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
  611 + CODE_SIGN_STYLE = Automatic;
  612 + COMBINE_HIDPI_IMAGES = YES;
  613 + INFOPLIST_FILE = Runner/Info.plist;
  614 + LD_RUNPATH_SEARCH_PATHS = (
  615 + "$(inherited)",
  616 + "@executable_path/../Frameworks",
  617 + );
  618 + PROVISIONING_PROFILE_SPECIFIER = "";
  619 + SWIFT_OPTIMIZATION_LEVEL = "-Onone";
  620 + SWIFT_VERSION = 5.0;
  621 + };
  622 + name = Debug;
  623 + };
  624 + 33CC10FD2044A3C60003C045 /* Release */ = {
  625 + isa = XCBuildConfiguration;
  626 + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
  627 + buildSettings = {
  628 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  629 + CLANG_ENABLE_MODULES = YES;
  630 + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements;
  631 + CODE_SIGN_STYLE = Automatic;
  632 + COMBINE_HIDPI_IMAGES = YES;
  633 + INFOPLIST_FILE = Runner/Info.plist;
  634 + LD_RUNPATH_SEARCH_PATHS = (
  635 + "$(inherited)",
  636 + "@executable_path/../Frameworks",
  637 + );
  638 + PROVISIONING_PROFILE_SPECIFIER = "";
  639 + SWIFT_VERSION = 5.0;
  640 + };
  641 + name = Release;
  642 + };
  643 + 33CC111C2044C6BA0003C045 /* Debug */ = {
  644 + isa = XCBuildConfiguration;
  645 + buildSettings = {
  646 + CODE_SIGN_STYLE = Manual;
  647 + PRODUCT_NAME = "$(TARGET_NAME)";
  648 + };
  649 + name = Debug;
  650 + };
  651 + 33CC111D2044C6BA0003C045 /* Release */ = {
  652 + isa = XCBuildConfiguration;
  653 + buildSettings = {
  654 + CODE_SIGN_STYLE = Automatic;
  655 + PRODUCT_NAME = "$(TARGET_NAME)";
  656 + };
  657 + name = Release;
  658 + };
  659 +/* End XCBuildConfiguration section */
  660 +
  661 +/* Begin XCConfigurationList section */
  662 + 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
  663 + isa = XCConfigurationList;
  664 + buildConfigurations = (
  665 + 331C80DB294CF71000263BE5 /* Debug */,
  666 + 331C80DC294CF71000263BE5 /* Release */,
  667 + 331C80DD294CF71000263BE5 /* Profile */,
  668 + );
  669 + defaultConfigurationIsVisible = 0;
  670 + defaultConfigurationName = Release;
  671 + };
  672 + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = {
  673 + isa = XCConfigurationList;
  674 + buildConfigurations = (
  675 + 33CC10F92044A3C60003C045 /* Debug */,
  676 + 33CC10FA2044A3C60003C045 /* Release */,
  677 + 338D0CE9231458BD00FA5F75 /* Profile */,
  678 + );
  679 + defaultConfigurationIsVisible = 0;
  680 + defaultConfigurationName = Release;
  681 + };
  682 + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = {
  683 + isa = XCConfigurationList;
  684 + buildConfigurations = (
  685 + 33CC10FC2044A3C60003C045 /* Debug */,
  686 + 33CC10FD2044A3C60003C045 /* Release */,
  687 + 338D0CEA231458BD00FA5F75 /* Profile */,
  688 + );
  689 + defaultConfigurationIsVisible = 0;
  690 + defaultConfigurationName = Release;
  691 + };
  692 + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = {
  693 + isa = XCConfigurationList;
  694 + buildConfigurations = (
  695 + 33CC111C2044C6BA0003C045 /* Debug */,
  696 + 33CC111D2044C6BA0003C045 /* Release */,
  697 + 338D0CEB231458BD00FA5F75 /* Profile */,
  698 + );
  699 + defaultConfigurationIsVisible = 0;
  700 + defaultConfigurationName = Release;
  701 + };
  702 +/* End XCConfigurationList section */
  703 + };
  704 + rootObject = 33CC10E52044A3C60003C045 /* Project object */;
  705 +}
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>IDEDidComputeMac32BitWarning</key>
  6 + <true/>
  7 +</dict>
  8 +</plist>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Scheme
  3 + LastUpgradeVersion = "1510"
  4 + version = "1.3">
  5 + <BuildAction
  6 + parallelizeBuildables = "YES"
  7 + buildImplicitDependencies = "YES">
  8 + <BuildActionEntries>
  9 + <BuildActionEntry
  10 + buildForTesting = "YES"
  11 + buildForRunning = "YES"
  12 + buildForProfiling = "YES"
  13 + buildForArchiving = "YES"
  14 + buildForAnalyzing = "YES">
  15 + <BuildableReference
  16 + BuildableIdentifier = "primary"
  17 + BlueprintIdentifier = "33CC10EC2044A3C60003C045"
  18 + BuildableName = "flutter_push_example.app"
  19 + BlueprintName = "Runner"
  20 + ReferencedContainer = "container:Runner.xcodeproj">
  21 + </BuildableReference>
  22 + </BuildActionEntry>
  23 + </BuildActionEntries>
  24 + </BuildAction>
  25 + <TestAction
  26 + buildConfiguration = "Debug"
  27 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  28 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  29 + shouldUseLaunchSchemeArgsEnv = "YES">
  30 + <MacroExpansion>
  31 + <BuildableReference
  32 + BuildableIdentifier = "primary"
  33 + BlueprintIdentifier = "33CC10EC2044A3C60003C045"
  34 + BuildableName = "flutter_push_example.app"
  35 + BlueprintName = "Runner"
  36 + ReferencedContainer = "container:Runner.xcodeproj">
  37 + </BuildableReference>
  38 + </MacroExpansion>
  39 + <Testables>
  40 + <TestableReference
  41 + skipped = "NO"
  42 + parallelizable = "YES">
  43 + <BuildableReference
  44 + BuildableIdentifier = "primary"
  45 + BlueprintIdentifier = "331C80D4294CF70F00263BE5"
  46 + BuildableName = "RunnerTests.xctest"
  47 + BlueprintName = "RunnerTests"
  48 + ReferencedContainer = "container:Runner.xcodeproj">
  49 + </BuildableReference>
  50 + </TestableReference>
  51 + </Testables>
  52 + </TestAction>
  53 + <LaunchAction
  54 + buildConfiguration = "Debug"
  55 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  56 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  57 + launchStyle = "0"
  58 + useCustomWorkingDirectory = "NO"
  59 + ignoresPersistentStateOnLaunch = "NO"
  60 + debugDocumentVersioning = "YES"
  61 + debugServiceExtension = "internal"
  62 + allowLocationSimulation = "YES">
  63 + <BuildableProductRunnable
  64 + runnableDebuggingMode = "0">
  65 + <BuildableReference
  66 + BuildableIdentifier = "primary"
  67 + BlueprintIdentifier = "33CC10EC2044A3C60003C045"
  68 + BuildableName = "flutter_push_example.app"
  69 + BlueprintName = "Runner"
  70 + ReferencedContainer = "container:Runner.xcodeproj">
  71 + </BuildableReference>
  72 + </BuildableProductRunnable>
  73 + </LaunchAction>
  74 + <ProfileAction
  75 + buildConfiguration = "Profile"
  76 + shouldUseLaunchSchemeArgsEnv = "YES"
  77 + savedToolIdentifier = ""
  78 + useCustomWorkingDirectory = "NO"
  79 + debugDocumentVersioning = "YES">
  80 + <BuildableProductRunnable
  81 + runnableDebuggingMode = "0">
  82 + <BuildableReference
  83 + BuildableIdentifier = "primary"
  84 + BlueprintIdentifier = "33CC10EC2044A3C60003C045"
  85 + BuildableName = "flutter_push_example.app"
  86 + BlueprintName = "Runner"
  87 + ReferencedContainer = "container:Runner.xcodeproj">
  88 + </BuildableReference>
  89 + </BuildableProductRunnable>
  90 + </ProfileAction>
  91 + <AnalyzeAction
  92 + buildConfiguration = "Debug">
  93 + </AnalyzeAction>
  94 + <ArchiveAction
  95 + buildConfiguration = "Release"
  96 + revealArchiveInOrganizer = "YES">
  97 + </ArchiveAction>
  98 +</Scheme>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Workspace
  3 + version = "1.0">
  4 + <FileRef
  5 + location = "group:Runner.xcodeproj">
  6 + </FileRef>
  7 +</Workspace>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>IDEDidComputeMac32BitWarning</key>
  6 + <true/>
  7 +</dict>
  8 +</plist>