Skip to content

Commit 52c7e24

Browse files
committed
feat opentraa#1: refine pip on iOS (opentraa#5)
* feat opentraa#1: support to get pointer value of native pip view on iOS * feat opentraa#1: add widget to play images * feat: opentraa#1: add PlayerView to play images on iOS * feat opentraa#1: refine pip on iOS
1 parent a7f50c1 commit 52c7e24

File tree

117 files changed

+3659
-175
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

117 files changed

+3659
-175
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.0.2
2+
3+
* Refine the implementation of pip for iOS.
4+
15
## 0.0.1
26

37
* Initial release.

README.md

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@
33
## Introduction
44
pip is a Flutter plugin that supports Picture in Picture (PiP) functionality for both Android and iOS. It allows applications to continue displaying content in a small window while in the background.
55

6+
## Preview
7+
8+
![ios](assets/pip_ios.gif)
9+
10+
Android is too simple to show, so I will not show it here.
11+
612
## Installation
713
Add the dependency in your `pubspec.yaml`:
814
```yaml
@@ -57,8 +63,10 @@ final options = PipOptions(
5763
sourceRectHintBottom: 720, // Source rectangle bottom position
5864
// iOS specific options
5965
sourceContentView: 0, // Source content view
66+
contentView: 0, // Content view to be displayed in PiP
6067
preferredContentWidth: 480, // Preferred content width
61-
preferredContentHeight: 270 // Preferred content height
68+
preferredContentHeight: 270, // Preferred content height
69+
controlStyle: 2, // Control style for PiP window
6270
);
6371
6472
await _pip.setup(options);
@@ -112,8 +120,14 @@ PipOptions({
112120
int? sourceRectHintBottom, // Source rectangle bottom position
113121
// iOS specific options
114122
int? sourceContentView, // Source content view
123+
int? contentView, // Content view to be displayed in PiP
115124
int? preferredContentWidth, // Preferred content width
116-
int? preferredContentHeight // Preferred content height
125+
int? preferredContentHeight,// Preferred content height
126+
int? controlStyle, // Control style for PiP window
127+
// 0: default show all system controls
128+
// 1: hide forward and backward button
129+
// 2: hide play pause button and the progress bar including forward and backward button (recommended)
130+
// 3: hide all system controls including the close and restore button
117131
})
118132
```
119133

@@ -179,20 +193,32 @@ Future<void> unregisterStateChangedObserver()
179193
- Call `pipStart()` when the app enters background (`AppLifecycleState.inactive`)
180194
- Call `pipStop()` when the app returns to foreground (`AppLifecycleState.resumed`)
181195
- Recommended to use `autoEnterEnabled` for automatic PiP mode entry
196+
- The `contentView` will be added to the PiP view after setup, and you are responsible for rendering the content view
197+
- Choose appropriate `controlStyle` based on your needs:
198+
- Style 0: Shows all system controls (default)
199+
- Style 1: Hides forward and backward buttons
200+
- Style 2: Hides play/pause button and progress bar (recommended)
201+
- Style 3: Hides all system controls including close and restore buttons
202+
- How to set the size of the PiP window? Just set the `preferredContentWidth` and `preferredContentHeight` in the `PipOptions`
182203

183204
## Best Practices
184205

185206
1. **Platform-Specific Configuration**
186207
```dart
187208
if (Platform.isAndroid) {
188209
options = PipOptions(
210+
autoEnterEnabled: true,
189211
aspectRatioX: 16,
190212
aspectRatioY: 9,
191213
);
192214
} else if (Platform.isIOS) {
193215
options = PipOptions(
216+
autoEnterEnabled: true,
217+
contentView: someView,
218+
sourceContentView: someOtherView,
194219
preferredContentWidth: 480,
195220
preferredContentHeight: 270,
221+
controlStyle: 2,
196222
);
197223
}
198224
```

assets/pip_ios.gif

1.15 MB
Loading

example/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,19 @@
55
*.swp
66
.DS_Store
77
.atom/
8+
.build/
89
.buildlog/
910
.history
1011
.svn/
12+
.swiftpm/
1113
migrate_working_dir/
1214

1315
# IntelliJ related
1416
*.iml
1517
*.ipr
1618
*.iws
1719
.idea/
20+
.cxx/
1821

1922
# The .vscode folder contains launch configuration and tasks you configure in
2023
# VS Code which you may wish to be included in version control, so this line

example/android/settings.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ pluginManagement {
1818

1919
plugins {
2020
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
21-
id "com.android.application" version "8.1.0" apply false
21+
id "com.android.application" version "8.2.1" apply false
2222
id "org.jetbrains.kotlin.android" version "1.8.22" apply false
2323
}
2424

example/images/PIP1.png

1.15 MB
Loading

example/images/PIP2.png

790 KB
Loading

example/images/PIP3.png

1.17 MB
Loading

example/ios/Runner.xcodeproj/project.pbxproj

Lines changed: 109 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,12 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
004094375FD35AA9F05550C8 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FFD5ECE348E83A00CA687FD1 /* libPods-Runner.a */; };
1011
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
12+
25302D7CD4349DE697EA1B71 /* libPods-RunnerTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6514730758368BD4670D1507 /* libPods-RunnerTests.a */; };
13+
2CEBD8E52DAE04C000B15466 /* PIP1.png in Resources */ = {isa = PBXBuildFile; fileRef = 2CEBD8E12DAE04C000B15466 /* PIP1.png */; };
14+
2CEBD8E62DAE04C000B15466 /* PIP3.png in Resources */ = {isa = PBXBuildFile; fileRef = 2CEBD8E32DAE04C000B15466 /* PIP3.png */; };
15+
2CEBD8E72DAE04C000B15466 /* PIP2.png in Resources */ = {isa = PBXBuildFile; fileRef = 2CEBD8E22DAE04C000B15466 /* PIP2.png */; };
1116
331C80F4294D02FB00263BE5 /* RunnerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 331C80F3294D02FB00263BE5 /* RunnerTests.m */; };
1217
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
1318
978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
@@ -43,12 +48,19 @@
4348
/* Begin PBXFileReference section */
4449
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
4550
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
51+
2CEBD8E12DAE04C000B15466 /* PIP1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = PIP1.png; sourceTree = "<group>"; };
52+
2CEBD8E22DAE04C000B15466 /* PIP2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = PIP2.png; sourceTree = "<group>"; };
53+
2CEBD8E32DAE04C000B15466 /* PIP3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = PIP3.png; sourceTree = "<group>"; };
4654
331C80F1294D02FB00263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
4755
331C80F3294D02FB00263BE5 /* RunnerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RunnerTests.m; sourceTree = "<group>"; };
4856
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
57+
48519B898AA6516669EBF518 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; };
58+
6514730758368BD4670D1507 /* libPods-RunnerTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RunnerTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
59+
6637147B1921F5833DFF608C /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
4960
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
5061
7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
5162
7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
63+
8D820C7179BF00561D3ED413 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
5264
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
5365
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
5466
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -57,26 +69,52 @@
5769
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
5870
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
5971
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
72+
9F4D8CD0D8B13179C136935D /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
73+
CF8EA180A9B91C2A640D795C /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
74+
E578B4B13494895DCE20DFAB /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
75+
FFD5ECE348E83A00CA687FD1 /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; };
6076
/* End PBXFileReference section */
6177

6278
/* Begin PBXFrameworksBuildPhase section */
6379
331C80EE294D02FB00263BE5 /* Frameworks */ = {
6480
isa = PBXFrameworksBuildPhase;
6581
buildActionMask = 2147483647;
6682
files = (
83+
25302D7CD4349DE697EA1B71 /* libPods-RunnerTests.a in Frameworks */,
6784
);
6885
runOnlyForDeploymentPostprocessing = 0;
6986
};
7087
97C146EB1CF9000F007C117D /* Frameworks */ = {
7188
isa = PBXFrameworksBuildPhase;
7289
buildActionMask = 2147483647;
7390
files = (
91+
004094375FD35AA9F05550C8 /* libPods-Runner.a in Frameworks */,
7492
);
7593
runOnlyForDeploymentPostprocessing = 0;
7694
};
7795
/* End PBXFrameworksBuildPhase section */
7896

7997
/* Begin PBXGroup section */
98+
1F1FB082B5D1C29711089890 /* Frameworks */ = {
99+
isa = PBXGroup;
100+
children = (
101+
FFD5ECE348E83A00CA687FD1 /* libPods-Runner.a */,
102+
6514730758368BD4670D1507 /* libPods-RunnerTests.a */,
103+
);
104+
name = Frameworks;
105+
sourceTree = "<group>";
106+
};
107+
2CEBD8E42DAE04C000B15466 /* images */ = {
108+
isa = PBXGroup;
109+
children = (
110+
2CEBD8E12DAE04C000B15466 /* PIP1.png */,
111+
2CEBD8E22DAE04C000B15466 /* PIP2.png */,
112+
2CEBD8E32DAE04C000B15466 /* PIP3.png */,
113+
);
114+
name = images;
115+
path = ../images;
116+
sourceTree = SOURCE_ROOT;
117+
};
80118
331C80F2294D02FB00263BE5 /* RunnerTests */ = {
81119
isa = PBXGroup;
82120
children = (
@@ -85,6 +123,19 @@
85123
path = RunnerTests;
86124
sourceTree = "<group>";
87125
};
126+
4F93CAF8AFE467DE615919EF /* Pods */ = {
127+
isa = PBXGroup;
128+
children = (
129+
6637147B1921F5833DFF608C /* Pods-Runner.debug.xcconfig */,
130+
8D820C7179BF00561D3ED413 /* Pods-Runner.release.xcconfig */,
131+
E578B4B13494895DCE20DFAB /* Pods-Runner.profile.xcconfig */,
132+
9F4D8CD0D8B13179C136935D /* Pods-RunnerTests.debug.xcconfig */,
133+
CF8EA180A9B91C2A640D795C /* Pods-RunnerTests.release.xcconfig */,
134+
48519B898AA6516669EBF518 /* Pods-RunnerTests.profile.xcconfig */,
135+
);
136+
path = Pods;
137+
sourceTree = "<group>";
138+
};
88139
9740EEB11CF90186004384FC /* Flutter */ = {
89140
isa = PBXGroup;
90141
children = (
@@ -103,6 +154,8 @@
103154
97C146F01CF9000F007C117D /* Runner */,
104155
331C80F2294D02FB00263BE5 /* RunnerTests */,
105156
97C146EF1CF9000F007C117D /* Products */,
157+
4F93CAF8AFE467DE615919EF /* Pods */,
158+
1F1FB082B5D1C29711089890 /* Frameworks */,
106159
);
107160
sourceTree = "<group>";
108161
};
@@ -118,6 +171,7 @@
118171
97C146F01CF9000F007C117D /* Runner */ = {
119172
isa = PBXGroup;
120173
children = (
174+
2CEBD8E42DAE04C000B15466 /* images */,
121175
7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */,
122176
7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */,
123177
97C146FA1CF9000F007C117D /* Main.storyboard */,
@@ -146,6 +200,7 @@
146200
isa = PBXNativeTarget;
147201
buildConfigurationList = 331C80F7294D02FB00263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
148202
buildPhases = (
203+
284EA44FCBB3B86EA43A1FA1 /* [CP] Check Pods Manifest.lock */,
149204
331C80ED294D02FB00263BE5 /* Sources */,
150205
331C80EE294D02FB00263BE5 /* Frameworks */,
151206
331C80EF294D02FB00263BE5 /* Resources */,
@@ -164,6 +219,7 @@
164219
isa = PBXNativeTarget;
165220
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
166221
buildPhases = (
222+
13A311554EA85EF00460E2B5 /* [CP] Check Pods Manifest.lock */,
167223
9740EEB61CF901F6004384FC /* Run Script */,
168224
97C146EA1CF9000F007C117D /* Sources */,
169225
97C146EB1CF9000F007C117D /* Frameworks */,
@@ -230,6 +286,9 @@
230286
isa = PBXResourcesBuildPhase;
231287
buildActionMask = 2147483647;
232288
files = (
289+
2CEBD8E52DAE04C000B15466 /* PIP1.png in Resources */,
290+
2CEBD8E62DAE04C000B15466 /* PIP3.png in Resources */,
291+
2CEBD8E72DAE04C000B15466 /* PIP2.png in Resources */,
233292
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
234293
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
235294
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
@@ -240,6 +299,50 @@
240299
/* End PBXResourcesBuildPhase section */
241300

242301
/* Begin PBXShellScriptBuildPhase section */
302+
13A311554EA85EF00460E2B5 /* [CP] Check Pods Manifest.lock */ = {
303+
isa = PBXShellScriptBuildPhase;
304+
buildActionMask = 2147483647;
305+
files = (
306+
);
307+
inputFileListPaths = (
308+
);
309+
inputPaths = (
310+
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
311+
"${PODS_ROOT}/Manifest.lock",
312+
);
313+
name = "[CP] Check Pods Manifest.lock";
314+
outputFileListPaths = (
315+
);
316+
outputPaths = (
317+
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
318+
);
319+
runOnlyForDeploymentPostprocessing = 0;
320+
shellPath = /bin/sh;
321+
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
322+
showEnvVarsInLog = 0;
323+
};
324+
284EA44FCBB3B86EA43A1FA1 /* [CP] Check Pods Manifest.lock */ = {
325+
isa = PBXShellScriptBuildPhase;
326+
buildActionMask = 2147483647;
327+
files = (
328+
);
329+
inputFileListPaths = (
330+
);
331+
inputPaths = (
332+
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
333+
"${PODS_ROOT}/Manifest.lock",
334+
);
335+
name = "[CP] Check Pods Manifest.lock";
336+
outputFileListPaths = (
337+
);
338+
outputPaths = (
339+
"$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt",
340+
);
341+
runOnlyForDeploymentPostprocessing = 0;
342+
shellPath = /bin/sh;
343+
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
344+
showEnvVarsInLog = 0;
345+
};
243346
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
244347
isa = PBXShellScriptBuildPhase;
245348
alwaysOutOfDate = 1;
@@ -380,7 +483,7 @@
380483
buildSettings = {
381484
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
382485
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
383-
DEVELOPMENT_TEAM = 5Y225525LU;
486+
DEVELOPMENT_TEAM = "";
384487
ENABLE_BITCODE = NO;
385488
INFOPLIST_FILE = Runner/Info.plist;
386489
LD_RUNPATH_SEARCH_PATHS = (
@@ -395,6 +498,7 @@
395498
};
396499
331C80F8294D02FB00263BE5 /* Debug */ = {
397500
isa = XCBuildConfiguration;
501+
baseConfigurationReference = 9F4D8CD0D8B13179C136935D /* Pods-RunnerTests.debug.xcconfig */;
398502
buildSettings = {
399503
BUNDLE_LOADER = "$(TEST_HOST)";
400504
CURRENT_PROJECT_VERSION = 1;
@@ -408,6 +512,7 @@
408512
};
409513
331C80F9294D02FB00263BE5 /* Release */ = {
410514
isa = XCBuildConfiguration;
515+
baseConfigurationReference = CF8EA180A9B91C2A640D795C /* Pods-RunnerTests.release.xcconfig */;
411516
buildSettings = {
412517
BUNDLE_LOADER = "$(TEST_HOST)";
413518
CURRENT_PROJECT_VERSION = 1;
@@ -421,6 +526,7 @@
421526
};
422527
331C80FA294D02FB00263BE5 /* Profile */ = {
423528
isa = XCBuildConfiguration;
529+
baseConfigurationReference = 48519B898AA6516669EBF518 /* Pods-RunnerTests.profile.xcconfig */;
424530
buildSettings = {
425531
BUNDLE_LOADER = "$(TEST_HOST)";
426532
CURRENT_PROJECT_VERSION = 1;
@@ -547,7 +653,7 @@
547653
buildSettings = {
548654
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
549655
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
550-
DEVELOPMENT_TEAM = 5Y225525LU;
656+
DEVELOPMENT_TEAM = "";
551657
ENABLE_BITCODE = NO;
552658
INFOPLIST_FILE = Runner/Info.plist;
553659
LD_RUNPATH_SEARCH_PATHS = (
@@ -566,7 +672,7 @@
566672
buildSettings = {
567673
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
568674
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
569-
DEVELOPMENT_TEAM = 5Y225525LU;
675+
DEVELOPMENT_TEAM = "";
570676
ENABLE_BITCODE = NO;
571677
INFOPLIST_FILE = Runner/Info.plist;
572678
LD_RUNPATH_SEARCH_PATHS = (

example/ios/Runner/Info.plist

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
33
<plist version="1.0">
44
<dict>
5+
<key>CADisableMinimumFrameDurationOnPhone</key>
6+
<true/>
57
<key>CFBundleDevelopmentRegion</key>
68
<string>$(DEVELOPMENT_LANGUAGE)</string>
79
<key>CFBundleDisplayName</key>
@@ -24,6 +26,12 @@
2426
<string>$(FLUTTER_BUILD_NUMBER)</string>
2527
<key>LSRequiresIPhoneOS</key>
2628
<true/>
29+
<key>UIApplicationSupportsIndirectInputEvents</key>
30+
<true/>
31+
<key>UIBackgroundModes</key>
32+
<array>
33+
<string>audio</string>
34+
</array>
2735
<key>UILaunchStoryboardName</key>
2836
<string>LaunchScreen</string>
2937
<key>UIMainStoryboardFile</key>
@@ -41,9 +49,5 @@
4149
<string>UIInterfaceOrientationLandscapeLeft</string>
4250
<string>UIInterfaceOrientationLandscapeRight</string>
4351
</array>
44-
<key>CADisableMinimumFrameDurationOnPhone</key>
45-
<true/>
46-
<key>UIApplicationSupportsIndirectInputEvents</key>
47-
<true/>
4852
</dict>
4953
</plist>

0 commit comments

Comments
 (0)