JMSGCustomContent.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /*
  2. * | | | | \ \ / / | | | | / _______|
  3. * | |____| | \ \/ / | |____| | / /
  4. * | |____| | \ / | |____| | | | _____
  5. * | | | | / \ | | | | | | |____ |
  6. * | | | | / /\ \ | | | | \ \______| |
  7. * | | | | /_/ \_\ | | | | \_________|
  8. *
  9. * Copyright (c) 2011 ~ 2015 Shenzhen HXHG. All rights reserved.
  10. */
  11. #import <Foundation/Foundation.h>
  12. #import <JMessage/JMSGAbstractContent.h>
  13. /*!
  14. * 定制内容类型
  15. *
  16. * 用于自定义消息的内容类型.
  17. *
  18. * 建议只在基本类型 (TextContent, VoiceContent, ImageContent) 不满足使用的情况才使用此类型.
  19. *
  20. * 所有的内容类型都带有 extras 可附加字段信息, 从而都具备一定的定制能力.
  21. * 比如如果需要基于图片做简单定制, 建议基于 ImageContent 再附加 extra 的方式.
  22. *
  23. */
  24. @interface JMSGCustomContent : JMSGAbstractContent <NSCopying>
  25. JMSG_ASSUME_NONNULL_BEGIN
  26. @property(nonatomic, strong, readonly) NSDictionary * JMSG_NULLABLE customDictionary;
  27. // 不支持使用的初始化方法
  28. - (instancetype)init NS_UNAVAILABLE;
  29. /*!
  30. * @abstract 预期使用的初始化方法
  31. *
  32. * @param customDict 初始化时指定的字典
  33. */
  34. - (instancetype)initWithCustomDictionary:(NSDictionary * JMSG_NULLABLE)customDict;
  35. /*!
  36. * @abstract 添加一个键值对.
  37. *
  38. * @param value 值. 必须满足 JSON Value 的要求, 基本规则是: NSNumber, NSString, NSArray, NSDictionary
  39. * @param key 键
  40. *
  41. * @return 如果无效的 value, 返回 false, 添加失败
  42. *
  43. * @discussion value的有效性校验, 参考 Apple 官方文档: https://developer.apple.com/library//ios/documentation/Foundation/Reference/NSJSONSerialization_Class/index.html#//apple_ref/occ/clm/NSJSONSerialization/isValidJSONObject:
  44. */
  45. - (BOOL)addObjectValue:(NSObject *)value forKey:(NSString *)key;
  46. /*!
  47. * @abstract 快捷添加 String 类型 value 的方法
  48. *
  49. * @param value 键值对里的值. String 类型.
  50. * @param key 键值对里的键
  51. *
  52. * @return 如果无效的 value, 返回 false, 添加失败
  53. */
  54. - (BOOL)addStringValue:(NSString *)value forKey:(NSString *)key;
  55. /*!
  56. * @abstract 快捷添加 Number 类型 value 的方法
  57. *
  58. * @param value 键值对里的值. Number 类型.
  59. * @param key 键值对里的键
  60. *
  61. * @return 如果无效的 value, 返回 false, 添加失败
  62. */
  63. - (BOOL)addNumberValue:(NSNumber *)value forKey:(NSString *)key;
  64. /*!
  65. * @abstract 设置该自定义消息内容的文本描述
  66. *
  67. * @param contentText 内容文本描述
  68. *
  69. * @discussion 用于展示在会话列表, 文本地简要描述这条消息.
  70. * 如果未设置, 则默认值为 "[自定义消息]"
  71. */
  72. - (void)setContentText:(NSString *)contentText;
  73. JMSG_ASSUME_NONNULL_END
  74. @end