IjkplayerPlugin.m 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #import "IjkplayerPlugin.h"
  2. #import "FlutterIjkManager.h"
  3. #import "FlutterIJK.h"
  4. @interface FlutterMethodCall (Ijk)
  5. - (int64_t)getId;
  6. - (int64_t)getIdParamFromDict;
  7. - (NSString *)getStringParam:(NSString *)key;
  8. @end
  9. @implementation IjkplayerPlugin {
  10. FlutterIjkManager *manager;
  11. }
  12. - (instancetype)initWithRegistrar:(NSObject <FlutterPluginRegistrar> *)registrar {
  13. self = [super init];
  14. if (self) {
  15. self.registrar = registrar;
  16. manager = [FlutterIjkManager managerWithRegistrar:registrar];
  17. }
  18. return self;
  19. }
  20. + (instancetype)pluginWithRegistrar:(NSObject <FlutterPluginRegistrar> *)registrar {
  21. return [[self alloc] initWithRegistrar:registrar];
  22. }
  23. + (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar>*)registrar {
  24. FlutterMethodChannel* channel = [FlutterMethodChannel
  25. methodChannelWithName:@"top.kikt/ijkplayer"
  26. binaryMessenger:[registrar messenger]];
  27. IjkplayerPlugin *instance = [IjkplayerPlugin pluginWithRegistrar:registrar];
  28. [registrar addMethodCallDelegate:instance channel:channel];
  29. }
  30. - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
  31. if ([@"create" isEqualToString:call.method]) {
  32. @try {
  33. int64_t id = [manager create];
  34. result(@(id));
  35. }
  36. @catch (NSException *exception) {
  37. result([FlutterError errorWithCode:@"1" message:@"创建失败" details:exception]);
  38. }
  39. } else if ([@"dispose" isEqualToString:call.method]) {
  40. int64_t id = [call getId];
  41. [manager disposeWithId:id];
  42. } else if ([@"play" isEqualToString:call.method]) {
  43. FlutterIJK *ijk = [manager findIJKWithId:call.getId];
  44. if (ijk) {
  45. [ijk play];
  46. result(@(1));
  47. }
  48. } else if ([@"pause" isEqualToString:call.method]) {
  49. FlutterIJK *ijk = [manager findIJKWithId:[call getId]];
  50. if (ijk) {
  51. [ijk pause];
  52. }
  53. } else if ([@"stop" isEqualToString:call.method]) {
  54. FlutterIJK *ijk = [manager findIJKWithId:[call getId]];
  55. if (ijk) {
  56. [ijk stop];
  57. }
  58. } else if ([@"setDataSource" isEqualToString:call.method]) {
  59. FlutterIJK *ijk = [manager findIJKWithId:[call getIdParamFromDict]];
  60. if (ijk) {
  61. NSString *uri = [call getStringParam:@"uri"];
  62. [ijk setDateSourceWithUri:uri];
  63. result(nil);
  64. } else {
  65. result([FlutterError errorWithCode:@"1" message:@"设置失败" details:nil]);
  66. }
  67. } else {
  68. result(FlutterMethodNotImplemented);
  69. }
  70. }
  71. @end
  72. @implementation FlutterMethodCall (Ijk)
  73. - (int64_t)getId {
  74. return [[self arguments] intValue];
  75. }
  76. - (int64_t)getIdParamFromDict {
  77. return [[self arguments][@"id"] intValue];
  78. }
  79. - (NSString *)getStringParam:(NSString *)key {
  80. return [self arguments][key];
  81. }
  82. @end