youtube-ios-player-helper
adalah library open source yang membantu Anda menyematkan
pemutar iframe YouTube ke dalam aplikasi iOS. Library ini membuat
WebView
dan jembatan antara kode Objective-C aplikasi Anda dan
kode JavaScript pemutar YouTube, sehingga memungkinkan aplikasi iOS mengontrol
pemutar YouTube. Artikel ini menjelaskan langkah-langkah untuk menginstal library dan mulai menggunakannya dari aplikasi iOS Anda.
Penginstalan
Artikel ini mengasumsikan bahwa Anda telah membuat project iOS Single View Application baru yang menargetkan versi terbaru iOS, dan bahwa Anda menambahkan file berikut saat membuat project:
Main.storyboard
ViewController.h
ViewController.m
Anda dapat menginstal library melalui CocoaPods atau dengan menyalin file library dan sumber dari halaman GitHub project.
- Library tersedia untuk diinstal melalui CocoaPods. Atau, library dan file sumber tersedia melalui halaman GitHub project dan dapat disalin ke project yang ada.
Instal library melalui CocoaPods
Jika project Anda menggunakan CocoaPods, tambahkan baris di bawah ini ke Podfile Anda untuk menginstal library.
Pada baris tersebut, ganti x.y.z
dengan versi pod terbaru, yang akan diidentifikasi di halaman GitHub project.
pod "youtube-ios-player-helper", "~> x.y.z"
Pada prompt command line, ketik pod install
untuk memperbarui ruang kerja dengan dependensi.
Tips: Ingat bahwa saat menggunakan CocoaPods, Anda harus membuka file .xcworkspace
di Xcode, bukan file .xcodeproj
.
Lihat tutorial CocoaPods untuk mempelajari lebih lanjut.
Menginstal library secara manual
Untuk menginstal library helper secara manual, download sumber melalui link download GitHub atau clone repositori. Setelah memiliki salinan lokal kode, ikuti langkah-langkah berikut:
Buka project contoh di Xcode atau Finder.
Pilih
YTPlayerView.h
,YTPlayerView.m
, dan folder Assets. Jika Anda membuka ruang kerja di Xcode, ini tersedia di Pods -> Development Pods -> YouTube-Player-iOS-Helper dan Pods -> Development Pods -> YouTube-Player-iOS-Helper -> Resource. Di Finder, keduanya tersedia dalam direktori utama project di direktori Classes dan Assets.Tarik file dan folder ini ke project Anda. Pastikan opsi Salin item ke dalam folder grup tujuan dicentang. Saat menarik folder Aset, pastikan opsi Buat Referensi Folder untuk folder yang ditambahkan dicentang.
Library sekarang seharusnya sudah diinstal.
Menambahkan YTPlayerView
melalui Interface Builder atau Storyboard
Untuk menambahkan YTPlayerView
melalui Interface Builder atau Storyboard:
-
Tarik instance
UIView
ke Tampilan Anda. -
Pilih Identity Inspector dan ubah class tampilan ke
YTPlayerView
. -
Buka
ViewController.h
dan tambahkan header berikut:#import “YTPlayerView.h”
Tambahkan juga properti berikut:
@property(nonatomic, strong) IBOutlet YTPlayerView *playerView;
-
Di Interface Builder, buat koneksi dari elemen View yang Anda tentukan pada langkah sebelumnya ke properti
playerView
Pengontrol View. -
Sekarang buka
ViewController.m
dan tambahkan kode berikut ke akhir metodeviewDidLoad
Anda:[self.playerView loadWithVideoId:@"M7lc1UVf-VE"];
Build dan jalankan aplikasi. Saat thumbnail video dimuat, ketuk thumbnail video untuk meluncurkan pemutar video layar penuh.
Mengontrol pemutaran video
Metode ViewController::loadWithVideoId:
memiliki varian,
loadWithVideoId:playerVars:
, yang memungkinkan developer meneruskan variabel
pemain tambahan ke tampilan. Variabel pemutar ini sesuai dengan
parameter pemain di
IFrame Player API. Parameter playsinline
memungkinkan video diputar
secara langsung di tampilan, bukan diputar dalam layar penuh. Saat video diputar secara inline, aplikasi
yang berisi iOS dapat mengontrol pemutaran secara terprogram.
Ganti panggilan loadWithVideoId:
dengan kode ini:
NSDictionary *playerVars = @{ @"playsinline" : @1, }; [self.playerView loadWithVideoId:@"M7lc1UVf-VE" playerVars:playerVars];
Buka storyboard atau Interface Builder. Tarik dua tombol ke Tampilan, beri label
Putar dan Berhenti. Buka ViewController.h
dan tambahkan metode berikut, yang akan dipetakan ke tombol:
- (IBAction)playVideo:(id)sender; - (IBAction)stopVideo:(id)sender;
Sekarang buka ViewController.m
dan tentukan dua fungsi ini:
- (IBAction)playVideo:(id)sender { [self.playerView playVideo]; } - (IBAction)stopVideo:(id)sender { [self.playerView stopVideo]; }
Sebagian besar fungsi IFrame Player API memiliki padanan Objective-C, meskipun beberapa penamaan mungkin sedikit berbeda agar lebih cocok dengan pedoman coding Objective-C. Pengecualian
penting adalah metode yang mengontrol volume video, karena metode ini dikontrol oleh
hardware ponsel atau dengan instance UIView
bawaan yang dirancang untuk tujuan ini,
seperti MPVolumeView
.
Buka storyboard atau Interface Builder dan control-tarik untuk menghubungkan tombol Play dan
Stop ke metode playVideo:
dan stopVideo:
.
Sekarang, build dan jalankan aplikasi. Setelah thumbnail video dimuat, Anda dapat memutar dan menghentikan video menggunakan kontrol native selain kontrol pemutar.
Menangani callback pemain
Menangani peristiwa pemutaran secara terprogram, seperti perubahan status pemutaran, dan error pemutaran dapat berguna. Di JavaScript API, hal ini dilakukan dengan pemroses peristiwa. Di Objective-C,hal ini dilakukan dengan delegasi.
Kode berikut menunjukkan cara memperbarui deklarasi antarmuka di
ViewController.h
sehingga class sesuai dengan protokol delegasi. Ubah
deklarasi antarmuka ViewController.h
sebagai berikut:
@interface ViewController : UIViewController<YTPlayerViewDelegate>
YTPlayerViewDelegate
adalah protokol untuk menangani peristiwa pemutaran di pemutar.
Guna mengupdate ViewController.m
untuk menangani beberapa peristiwa, Anda harus menetapkan instance ViewController
terlebih dahulu sebagai delegasi instance YTPlayerView
. Untuk membuat perubahan ini, tambahkan baris berikut ke metode viewDidLoad
di ViewController.h
.
self.playerView.delegate = self;
Sekarang, tambahkan metode berikut ke ViewController.m
:
- (void)playerView:(YTPlayerView *)playerView didChangeToState:(YTPlayerState)state { switch (state) { case kYTPlayerStatePlaying: NSLog(@"Started playback"); break; case kYTPlayerStatePaused: NSLog(@"Paused playback"); break; default: break; } }
Build dan jalankan aplikasi. Lihat output log di Xcode saat status pemutar berubah. Anda akan melihat update saat video diputar atau dihentikan.
Library ini menyediakan konstanta yang dimulai dengan awalan kYT*
untuk memudahkan dan keterbacaan. Untuk mengetahui daftar lengkap konstanta ini, lihat
YTPlayerView.m
.
Praktik terbaik dan batasan
Library ini dibuat berdasarkan IFrame Player API dengan membuat WebView
dan merender HTML serta JavaScript yang diperlukan untuk pemutar dasar. Tujuan library ini adalah
agar mudah digunakan, sehingga memerlukan metode pemaketan yang sering ditulis developer ke dalam
paket. Ada beberapa batasan yang harus diperhatikan:
- Library tidak mendukung pemutaran video serentak di beberapa
instance
YTPlayerView
. Jika aplikasi Anda memiliki beberapa instanceYTPlayerView
, praktik terbaik yang direkomendasikan adalah menjeda atau menghentikan pemutaran dalam instance yang ada sebelum memulai pemutaran dalam instance lain. Dalam contoh aplikasi yang disertakan bersama project, ViewController menggunakanNSNotificationCenter
untuk mengirim notifikasi bahwa pemutaran akan dimulai. ViewController lainnya diberi tahu dan akan menjeda pemutaran dalam instanceYTPlayerView
-nya. - Gunakan kembali instance
YTPlayerView
yang ada dan dimuat jika memungkinkan. Saat video perlu diubah dalam Tampilan, jangan buat instanceUIView
baru atau instanceYTPlayerView
baru, dan jangan memanggilloadVideoId:
atauloadPlaylistId:
. Sebagai gantinya, gunakan kelompok fungsicueVideoById:startSeconds:
, yang tidak memuat ulangWebView
. Ada penundaan yang terlihat saat memuat seluruh pemutar IFrame. - Pemutar ini tidak dapat memutar video pribadi, tetapi dapat memutar video yang tidak tercantum. Karena library ini menggabungkan pemutar iframe yang ada, perilaku pemutar akan hampir identik dengan pemutar yang disematkan di halaman web di browser seluler.
Kontribusi
Karena ini adalah project open source, harap kirimkan perbaikan dan peningkatan pada cabang utama project GitHub .