5 рдорд┐рдирдЯ рдореЗрдВ рдПрдХ рдЖрдИрдУрдПрд╕ рд╡реАрдбрд┐рдпреЛ рдкреНрд▓реЗрдпрд░ рдФрд░ рд░рд┐рдХреЙрд░реНрдбрд░ рд▓рд┐рдЦрдирд╛

рд╣рд╛рдп рд╣рд╛рдмрд░рд╛ рд▓реЛрдЧ

рдмрд┐рд▓реНрд▓реА рдХреЗ рддрд╣рдд, iOS рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╡реАрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП, рдЗрд╕ рдкрд░ рдХрджрдо рд╕реЗ рдХрджрдо рдирд┐рд░реНрджреЗрд╢ред рдЖрдкрдХреЛ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреАрдЖрдИ, рд╕реАрдзреЗ рд╣рдерд┐рдпрд╛рд░ (рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ, рд╡реИрдХрд▓реНрдкрд┐рдХ) рдФрд░ рдПрдХ рдХрдк рдХреЙрдлреА рдХреЗ рд╕рд╛рде Xcode, KFOR рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред



рдЖрдЬ рд╣рдо рджрд┐рдЦрд╛рдПрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ рдЬрд▓реНрджреА рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ BaaS Backendless рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ iOS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╕рд░реНрд╡рд░ рдкрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рдЦреЗрд▓ рд╕рдХрддрд╛ рд╣реИред

(рдЬреЛ рд▓реЛрдЧ рд╣рдорд╛рд░реЗ рдордВрдЪ рдкрд░ рд╕рднреА рдПрдкреАрдЖрдИ рдХреА рд░реВрд╕реА-рднрд╛рд╖рд╛ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рдкрд╣рд▓реЗ рдкреЛрд╕реНрдЯ рдХреЛ рдпрд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡реЗ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред)

рдореАрдбрд┐рдпрд╛ рд╕реЗрд╡рд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг
рдореАрдбрд┐рдпрд╛ рд╕реЗрд╡рд╛ рдПрдкреАрдЖрдИ (рдореАрдбрд┐рдпрд╛ рд╕реНрдЯреНрд░реАрдо) - "рдорд╛рдВрдЧ рдкрд░ рдкреНрд▓реЗрдмреИрдХ" рдФрд░ рд▓рд╛рдЗрд╡ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╡реАрдбрд┐рдпреЛ рдФрд░ рдСрдбрд┐рдпреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдпрд╛ рд▓рд╛рдЗрд╡ рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдХреИрдордХреЙрд░реНрдбрд░ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рд╕реЗ рд╕реНрдЯреНрд░реАрдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдП рдЧрдП рдореАрдбрд┐рдпрд╛ (рд╡реАрдбрд┐рдпреЛ рдпрд╛ рдСрдбрд┐рдпреЛ) рдФрд░ рд▓рд╛рдЗрд╡ рд╕реНрдЯреНрд░реАрдо рдЕрдиреНрдп рдХреНрд▓рд╛рдЗрдВрдЯреНрд╕ рдкрд░ рдЦреЗрд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг: рдореАрдбрд┐рдпрд╛ рд╕реЗрд╡рд╛ рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рд╡реАрдбрд┐рдпреЛ рдпрд╛ рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХрд░рдиреЗ рдФрд░ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЗрд╕ рд╕реНрдЯреНрд░реАрдо рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЖрдк рд╕реЗрд╡рд╛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдореАрдбрд┐рдпрд╛ рд╕рд╛рдордЧреНрд░реА рднреА рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг: рд╡реАрдбрд┐рдпреЛ рдХреЙрдиреНрдлреНрд░реЗрдВрд╕, рд╡реАрдбрд┐рдпреЛ рдЪреИрдЯ, рд▓рд╛рдЗрд╡ рд╡реАрдбрд┐рдпреЛ рдкреНрд░рд╕рд╛рд░рдг рдПрдХ рд╕рд╛рде рдпрд╛ рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ (рдлреЛрди, рдЯреИрдмрд▓реЗрдЯ, рдкреАрд╕реА рдХреИрдорд░рд╛ рд╕реЗ), рд╡реАрдбрд┐рдпреЛ рдпрд╛ рдСрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╕реАрдзреЗ рд╕рд░реНрд╡рд░ рдкрд░, рд▓рд╛рдЗрд╡ рдСрдбрд┐рдпреЛ рдкреНрд░рд╕рд╛рд░рдг (рд░реЗрдбрд┐рдпреЛ, рд╕рдВрдЧреАрдд)

рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдФрд░ IPA рдореАрдбрд┐рдпрд╛ рд╕реЗрд╡рд╛ рдХрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рддреЛ, рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, "Xcode" рдЪрд▓рд╛рдПрдВ

рдлрд╝рд╛рдЗрд▓ рдЬрд╛рдУ-> рдирдИ-> рдкрд░рд┐рдпреЛрдЬрдирд╛
-> "рд╕рд┐рдВрдЧрд▓ рд╡реНрдпреВ рдПрдкреНрд▓реАрдХреЗрд╢рди" рдЪреБрдиреЗрдВ рдФрд░ "рдиреЗрдХреНрд╕реНрдЯ" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
-> ave рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВред "SimpleVideoService"
-> рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ "iPhone" рдЪреБрдиреЗрдВ рдФрд░ "рдЕрдЧрд▓рд╛" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
-> рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдЪреБрдиреЗрдВ

рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдПрдХрд▓ рджреГрд╢реНрдп рд╡рд╛рд▓рд╛ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИред
рдмреИрдХрдПрдВрдбрд▓реЗрд╕ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рдЖрдИрдбреА рдФрд░ рдПрдХ рдЧреБрдкреНрдд рдХреБрдВрдЬреА рд╕реМрдВрдкреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ AppDelegate.m рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

1 #import "AppDelegate.h" 2 #import "Backendless.h" 3 4 // ***         *** 5 6 static NSString *APP_ID = @""; 7 static NSString *SECRET_KEY = @""; 8 static NSString *VERSION_NUM = @"v1"; 9 10 @implementation AppDelegate 11 12 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 13 { 14 [backendless initApp:APP_ID secret:SECRET_KEY version:VERSION_NUM]; 15 return YES; 16 } 17 18 ..... 

APP_ID рдФрд░ SECRET_KEY рдХрд╛ рдорд╛рди рдбреЗрд╡рд▓рдкрд░ рд╡реЗрдм рдХрдВрд╕реЛрд▓ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдВ , "рдмрдирд╛рдПрдВ / рдЪреБрдиреЗрдВ" (рдПрдХ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪреБрдиреЗрдВ рдпрд╛ рдмрдирд╛рдПрдВ) рдФрд░ "рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ" рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЙрдкрдХреБрдВрдЬреА рдРрдк рд╕реЗрдЯрд┐рдВрдЧ рд╣реИ:



рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдЖрдИрдбреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЖрдИрдбреА рдФрд░ рдЧреБрдкреНрдд рдХреБрдВрдЬреА рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП "рдХреЙрдкреА" рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдХреНрд░рдорд╢рдГ тАЬAPP_IDтАЭ рдФрд░ тАЬSECRET_KEYтАЭ рдХреЛ рдХреЙрдкреА рдХрд┐рдП рдЧрдП рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред

рдЕрдкрдиреА рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдореЗрдВ рджреГрд╢реНрдп рдШрдЯрдХ рдХреЛ рдЦреАрдВрдЪреЗрдВ рдФрд░ рдЫреЛрдбрд╝реЗрдВ



рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛ рд░рдВрдЧ рдмрджрд▓реЗрдВред



рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЯрди рдЬреЛрдбрд╝реЗрдВ



IOS рдХреЗ рд▓рд┐рдП SDK рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ http://backendless.com/downloads , unzip рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЕрдкрдиреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЦреАрдВрдЪреЗрдВ:



рд╣рдореЗрдВ рдирд┐рдореНрди рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:



ViewController.m рдЦреЛрд▓реЗрдВ, рдмреИрдХрдПрдВрдбрд▓реЗрд╕ рдЖрдпрд╛рдд рдХрд░реЗрдВ рдФрд░ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЕрдиреБрд╕рд╛рд░ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:

 1 #import "Backendless.h" 2 3 #define VIDEO_TUBE @"videoTube" 4 #define STREAM_NAME @"defaultStreamName" 

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ:

 1 @interface ViewController () 2 { 3 MediaPublisher *_publisher; 4 MediaPlayer *_player; 5 } 

ViewController.h рдЦреЛрд▓реЗрдВ рдФрд░ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдП рдЧрдП рд╡реАрдбрд┐рдпреЛ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрдорд░рд╛ рдФрд░ * рдкреНрд▓реЗрдмреИрдХ рджреГрд╢реНрдп рд╕реЗ рдЪрд┐рддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП * рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╕рдВрдкрддреНрддрд┐ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ:

 1 @property (strong, nonatomic) IBOutlet UIView *preview; 2 @property (strong, nonatomic) IBOutlet UIImageView *playbackView; 

* рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдЧреБрдг "рджреГрд╢реНрдп" рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, "рд╡реНрдпреВ" рдШрдЯрдХ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, "рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХреЗ рд▓рд┐рдП" рдирдИ рд╕рдВрджрд░реНрдн рдЖрдЙрдЯрд▓реЗрдЯ "рдЦреАрдВрдЪреЗрдВ рдФрд░ рдЫреЛрдбрд╝реЗрдВ"ред



рдпрд╣ "рджреГрд╢реНрдп" рдХреИрдорд░реЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ "рджреГрд╢реНрдп" рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ "рдЫрд╡рд┐ рджреГрд╢реНрдп" рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ * рдкреНрд▓реЗрдмреИрдХ рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рд╕рдВрдмрджреНрдз рдХрд░реЗрдВред

рдЕрдм рд╣рдореЗрдВ рдмрдЯрди рдирд┐рдпрдВрддреНрд░рдг рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдиреЗ рдФрд░ ViewController.h рдкрд░ рдЕрдкрдиреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 1 -(IBAction)onStopBtn:(id)sender; 2 -(IBAction)onPlayBtn:(id)sender; 3 -(IBAction)onRecordBtn:(id)sender; 

ViewController.m рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЬреЛрдбрд╝реЗрдВред

рд╡реАрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ

 1 - (void)onRecordBtn:(id)sender 2 { 3 MediaPublishOptions *options = [MediaPublishOptions recordStream:self.preview]; 4 _publisher =[backendless.mediaService publishStream: STREAM_NAME tube:VIDEO_TUBE options:options responder:self]; 5 } 

рдкрдВрдХреНрддрд┐ 3 рдореЗрдВ, MediaPublishOptions рдЖрд╡реГрддреНрддрд┐ рдмрдирд╛рдПрдВ рдФрд░ UI рдШрдЯрдХ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдВ рдЬреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдП рдЧрдП рд╡реАрдбрд┐рдпреЛ рдХреЛ рджрд┐рдЦрд╛рдПрдЧрд╛ред

рдкрдВрдХреНрддрд┐ 4 рдореЗрдВ, рд╣рдо рдкреНрд░рдХрд╛рд╢рдХ рдмрдирд╛рддреЗ рд╣реИрдВред рдкреНрд░рдХрд╛рд╢рдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕реНрдЯреНрд░реАрдо рдирд╛рдо, рдЪреИрдирд▓ рдХрд╛ рдирд╛рдо, рд╡рд┐рдХрд▓реНрдк рдФрд░ рдЙрддреНрддрд░рджрд╛рддрд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рддреЛ рд╣рдо рд╡реАрдбрд┐рдпреЛ рдХреА рдЬрд╛рдВрдЪ рдпрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ (рдкреНрд░рд╕рд╛рд░рдг) рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ рдкреНрд░рдХрд╛рд╢рдХ рдФрд░ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдПрдирдЖрдИрдПрд▓ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред

 1 -(void)onStopBtn:(id)sender 2 { 3 if (_publisher) 4 { 5 [_publisher disconnect]; 6 _publisher = nil; 7 } 8 9 if (_player) 10 { 11 [_player disconnect]; 12 _player = nil; 13 } 14 } 

рд░рд┐рдХреЙрд░реНрдбреЗрдб рд╡реАрдбрд┐рдпреЛ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ

 1 - (void)onPlayBtn:(id)sender 2 { 3 MediaPlaybackOptions *options = [MediaPlaybackOptions recordStream:self.playbackView]; 4 _player = [backendless.mediaService playbackStream:STREAM_NAME tube:VIDEO_TUBE: options:options responder:self]; 5} 

рдкрдВрдХреНрддрд┐ 3 рдореЗрдВ, рд╣рдо MediaPlaybackOptions рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ UI рдШрдЯрдХ рдореЗрдВ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдП рдЧрдП рд╡реАрдбрд┐рдпреЛ рдХреЛ рджрд┐рдЦрд╛рдПрдЧрд╛ред

рдкрдВрдХреНрддрд┐ 4 рдореЗрдВ рд╣рдо рдПрдХ рдореАрдбрд┐рдпрд╛ рдкреНрд▓реЗрдпрд░ рдмрдирд╛рддреЗ рд╣реИрдВред рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕реНрдЯреНрд░реАрдо рдирд╛рдо, рдЪреИрдирд▓ рдирд╛рдо, рд╡рд┐рдХрд▓реНрдк рдФрд░ рдЙрддреНрддрд░рджрд╛рддрд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЙрддреНрддрд░рджрд╛рддрд╛ рдЦреБрдж рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, ViewController рд╡рд░реНрдЧ IMediaStreamerDelegate рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЪреВрдВрдХрд┐ рд╣рдо IMediaStreamerDelegate рд▓рд╛рдЧреВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рдореЗрдВ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:

 1 -(void) streamConnectFailed:(id)sender code:(int)code description:(NSString *)description 2 { 3 NSLog(@"<IMediaStreamerDelegate> streamConnectFailed: %d = %@", (int)code, description); 4 [self onStopBtn:sender]; 5 6 NSString *message = (code == -1) ? 7 @"Unable to connect to the server. Make sure the hostname/IP address and port number are valid\n" : 8 [NSString stringWithFormat:@"connectFailedEvent: %@ \n", description]; 9 UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"Error:" message:message delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 10 [av show]; 11 } 12 13 -(void) streamStateChanged:(id)sender state:(StateMediaStream)state description:(NSString *)description 14 { 15 switch (state) { 16 17 case MEDIASTREAM_DISCONNECTED: { 18 19 [self onStopBtn:sender]; 20 break; 21 } 22 23 case MEDIASTREAM_PAUSED: { 24 25 [self onStopBtn:sender]; 26 break; 27 } 28 29 case MEDIASTREAM_PLAYING: { 30 31 // PUBLISHER 32 if (_publisher) { 33 34 if (![description isEqualToString:@"NetStream.Publish.Start"]) { 35 [self onStopBtn:sender]; 36 break; 37 } 38 } 39 40 // PLAYER 41 if (_player) { 42 43 if (![description isEqualToString:@"NetStream.Play.Start"]) { 44 UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"Error:" message:[NSString stringWithString:description] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 45 [av show]; 46 break; 47 } 48 49 self.playbackView.hidden = NO; 50 } 51 break; 52 } 53 54 default: 55 break; 56 } 57 } 

рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИ, рдпрд╣ рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЗ рд╕рд╛рде рдмрдЯрди рд╕рдВрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред



рд╢реЗрд╖ рдмрдЯрди рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рджреЛрд╣рд░рд╛рдПрдВред

рдпрд╣ рдмрд╛рдд рд╣реИ :)ред рдХреЙрдлреА рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИ, рдЦрд┐рд▓рд╛рдбрд╝реА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣рд╛рдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

Source: https://habr.com/ru/post/In181984/


All Articles