酷店

ALPBasePlugin.h 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. //
  2. // ALPBasePlugin.h
  3. // ALPLinkPartnerSDK
  4. //
  5. // Created by czp on 16/9/26.
  6. // Copyright © 2016年 czp. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "ALPBasePluginParam.h"
  10. @protocol ALPBasePluginProtocol <NSObject>
  11. @required
  12. /**
  13. * 定义对应的匹配规则,与跳入或跳出的URL进行匹配,判断插件是否执行
  14. *
  15. * @return 匹配规则
  16. */
  17. - (NSArray<NSString*> *)pluginRules;
  18. /**
  19. * 插件通用协议
  20. *
  21. * @param param 通用参数
  22. * @param block 插件处理完回调
  23. */
  24. - (void)pluginService:(ALPBasePluginParam *)param;
  25. @end
  26. typedef NS_ENUM(NSInteger, ALPLinkPartnerPrior) {
  27. ALPLinkPartnerPriorLow = -2,
  28. ALPLinkPartnerPriorDefault = 0,
  29. ALPLinkPartnerPriorHigh = 2,
  30. };
  31. typedef NS_ENUM(NSInteger, ALPPluginEvent) {
  32. //触发FC中页面分发插件
  33. ALPPluginNav,
  34. //触发FC中授权登录插件
  35. ALPPluginAuth
  36. };
  37. //基础插件,即非自定义插件
  38. //根据这个key可以从插件容器取出Auth 插件
  39. FOUNDATION_EXTERN NSString *const kAuthPluginKey;
  40. @interface ALPBasePlugin : NSObject<ALPBasePluginProtocol>
  41. /**
  42. * 是否是打断型插件(该插件执行,后面的插件不执行)
  43. */
  44. @property (nonatomic, assign) BOOL isBreak;
  45. /**
  46. * 插件调用优先级,自定义插件可设置,非自定义(Auth 插件)插件已设置,无需再设置
  47. */
  48. @property (nonatomic, assign) ALPLinkPartnerPrior prior;
  49. /**
  50. * 用于指定触发FC中页面分发还是授权登录时机的对应插件,非自定义(Auth 插件)插件已设置,无需再设置
  51. */
  52. @property (nonatomic, assign) ALPPluginEvent event;
  53. /**
  54. * 插件对应的key,自定义插件可设置,非自定义(Auth 插件)插件已设置,无需再设置
  55. */
  56. @property (nonatomic, copy) NSString *pluginKey;
  57. /**
  58. * 创建插件对象
  59. *
  60. * @param pluginKey 插件对应的key
  61. *
  62. * @return 插件对象
  63. */
  64. + (instancetype)initPluginWitKey:(NSString *)key;
  65. /**
  66. * 初始化插件,供提供的非自定义(Auth 插件)插件调用,key已经设定
  67. *
  68. * @return 插件
  69. */
  70. + (instancetype)initPlugin;
  71. /**
  72. * 根据APP被唤起的URL,判断是否匹配到插件来执行
  73. *
  74. * @param url APP被唤起的URL
  75. *
  76. * @return 是否匹配
  77. */
  78. - (BOOL)isMatchInPluginWithURL:(NSURL *)url;
  79. @end