ΠΠΏΠΈΡΠΈΡΠ΅ ΠΎΡΠΈΠ±ΠΊΡ
ΠΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΡΠΊΡΡΡΠΈΠΈ ΠΏΠ»Π΅Π΅ΡΠ° Ρ ΠΌΠ΅Π½Ρ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠ»Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠ°:
2021-06-30 09:24:44.141532+0200 Media Creations[39379:12785401] [ProcessSuspension] 0x10c4dd0b0 - ProcessAssertion: Failed to acquire RBS MediaPlayback assertion 'WebKit Media Playback' for process with PID 39379, error: Error Domain=RBSAssertionErrorDomain Code=3 "Required client entitlement is missing" UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:"com.apple.webkit" name:"MediaPlayback" sourceEnvironment:"(null)">, NSLocalizedFailureReason=Required client entitlement is missing}
ΠΠΎΠΉ YoutubePlayerController Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
final YoutubePlayerController _controller = YoutubePlayerController(
initialVideoId: videoId,
flags: YoutubePlayerFlags(
enableCaption: false,
hideThumbnail: true,
forceHD: true,
autoPlay: false,
startAt: startAt,
),
);
ΠΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ
ΠΡΠΊΡΠΎΠΉΡΠ΅ YoutubePlayerFlutter Π½Π° IOS
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΡΠΊΡΡΠ²Π°Π΅Ρ ΠΏΠ»Π΅Π΅Ρ Π±Π΅Π· ΠΎΡΠΈΠ±ΠΎΠΊ
Π‘ΠΊΡΠΈΠ½ΡΠΎΡΡ
ΠΡΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ½ΠΈΠΌΠΊΠΈ ΡΠΊΡΠ°Π½Π°, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ Π²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ:
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ
ΠΠΎΡ ΠΌΠΎΠΉ ΠΊΠΎΠ΄ YoutubePlayer:
return OrientationBuilder(
builder: (_, __) => YoutubePlayer(
key: UniqueKey(),
showVideoProgressIndicator: true,
onReady: _controller.play,
controller: _controller,
controlsTimeOut: const Duration(seconds: 2),
actionsPadding: const EdgeInsets.only(bottom: 10),
progressIndicatorColor: _theme.primaryColor,
onEnded: (_) => _controller.pause(),
bottomActions: [
Padding(
padding: const EdgeInsets.only(
left: VideoFullScreenButton.paddingSize +
VideoFullScreenButton.size * 2,
right: VideoFullScreenButton.paddingSize,
),
child: CurrentPosition(),
),
ProgressBar(
colors: ProgressBarColors(
playedColor: _theme.primaryColor,
handleColor: _theme.primaryColor,
),
isExpanded: true,
),
GestureDetector(
onTap: () => launch(
Strings.youtubeUrlFromId(
videoId,
seconds: _controller.value.position.inSeconds,
),
),
child: const Padding(
padding: EdgeInsets.only(
left: VideoFullScreenButton.paddingSize,
right: VideoFullScreenButton.paddingSize,
),
child: FaIcon(
FontAwesomeIcons.externalLinkAlt,
color: Colors.white,
size: VideoFullScreenButton.size,
),
),
),
VideoFullScreenButton(
preloadedFullScreen: isFullScreen,
key: UniqueKey(),
onTap: (isFullScreen) => _onVideoFullScreenTap(
isFullScreen,
context,
_controller,
),
),
],
),
);
Π§Π΅Π³ΠΎ-ΡΠΎ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅? Π ΡΠ»ΡΡΠ°Π΅ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΡΠ²Π΅ΡΡ ΡΡΠ°Π·Ρ.
Π£ ΠΌΠ΅Π½Ρ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°
ΠΡΠ½ΠΎΡΠΈΡΡΡ Π»ΠΈ ΡΡΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊ Info.plist?
@PcolBP Π²Ρ Π½Π°ΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅?
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π΅ Π΄Π»Ρ YoutubePlayerFlutter. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΠ»ΡΡ Π½Π° YoutubePlayerIframe, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π»ΡΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ YoutubePlayerFlutter, ΠΈ Ρ ΡΠ΅Ρ ΠΏΠΎΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅ ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΡΡΡ.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π£ ΠΌΠ΅Π½Ρ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°