测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | MIT |
发布日期最新的发布 | 2015年6月 |
Maintained by Alex Gordiyenko.
此存储库包含两个用于将字符串拆分为接近国际短信格式的短消息序列(部分)的Objective-C类。`GDSMSSplitter`类负责实际拆分。`GDSMSCounterLabel`是一个`UILabel`子类,它实现了向用户显示可能发送给收件人的短信消息数量以及剩余符号数量的基本模式。
您可以通过查看`GDSMSSplitterDemo`项目来了解如何使用它(它非常简单)。
`GDSMSSplitter`支持**GSM 03.38**标准(包括**基本字符集扩展表**,但不包括**国家语言转换表**)。它还支持**UTF-16**(UCS-2)编码标准。
欢迎您的评论和智能的pull请求。
一个用于表示剩余信息和符号数量的`UILabel`子类。此类底层数据使用`GDSMSSplitter`类。此类的`setText:`设置器被覆盖并执行操作。
为了在您的调试输出中查看每个文本处理操作所需的时间,请将以下行添加到您的预编译头文件中
#define GD_SMS_COUNTER_SHOW_DEBUGTIME 1
最低平台版本:iOS 6。
##方法
- (void)countForText:(NSString *)text;
描述
处理输入字符串并更改标签的`text`属性以表示剩余的消息和符号数量。
在调用此方法后,标签的文本将显示X/Y格式的计数信息,其中X是要发送的可能短信消息的数量,Y是在序列中最后一条消息中剩余的符号数量。
参数
text
- 要处理的字符串。
## GDSMSSplitter 类用于将字符串拆分为接近国际短信标准的短消息序列(部分)。
您可以使用此类的构造函数创建一个新的实例,或者使用单例访问方法`sharedSplitter`。
最低平台版本:iOS 6,MacOS X 10.6。
##方法
- (NSDictionary *)split:(NSString *)messageString includeContents:(BOOL)includeContents;
描述
将字符串拆分为接近国际短信标准的短消息序列(部分)。
原始消息字符串根据以下规则拆分为部分。
如果字符串包含至少一个不在GSM 03.38基本和扩展字符集中的符号,则消息将自动被视为UTF16编码的。这意味着每条消息现在最多可以容纳70个符号(140字节)。
如果否则,则使用GSM 03.38标准对生成的消息部分进行编码,其中每个消息可以包含多达160个符号(基本字符集中的符号占1个字节,扩展字符集中的符号占2个字节)。
参数
messageString
- 要拆分的字符串。
includeContents
- 一个布尔标志,告知拆分器消息部分数组中的对象是否应包含部分字符串(kGDSMSSplitterPartKeyContent
键的值)。如果设置为NO
,则这些值为空字符串。
返回值
返回值是一个包含以下键和值的字典
键:kGDSMSSplitterResultKeyTotalLength
。值:一个包含表示输入字符串的总符号数的NSNumber
对象。
键:kGDSMSSplitterResultKeyTotalBytes
。值:一个包含输入字符串所占字节总数的NSNumber
对象。
键:kGDSMSSplitterResultKeyMessageMode
。值:一个包含GDSMSSplitterMessageMode
枚举类型预定义值的NSNumber
对象。
键:kGDSMSSplitterResultKeyLeftoverLength
。值:一个包含parts数组中最后一个消息中可用的符号数的NSNumber
对象。
键:kGDSMSSplitterResultKeyParts
。值:一个包含将原始输入字符串拆分成的部分的NSArray
数组。
字典值中kGDSMSSplitterResultKeyParts
键的每个元素本身也是一个NSDictionary
对象。此字典包含以下键和值
键:kGDSMSSplitterPartKeyLength
。值:一个包含表示部分字符串的符号数的NSNumber
对象。
键:kGDSMSSplitterPartKeyBytes
。值:一个包含部分字符串所占字节的NSNumber
对象。
键:kGDSMSSplitterPartKeyContent
。值:一个包含原始输入字符串当前部分内容的NSString
对象。
注意
一旦输入消息字符串所占的字节数超过单个SMS消息可用的字节数(根据推断的编码),每个消息部分将使用额外的字节来表示每个SMS的序列号。因此,消息部分可用的字节数减少。对于GSM 03.38编码的消息,它将降至每个消息153个符号(从160个符号);对于UTF-16编码的消息,它将降至每个消息67个符号(从70个符号)。
+ (instancetype)sharedSplitter;
描述
返回一个单例拆分器对象。在第一次调用中,此方法创建一个新的已分配和实例化的拆分器对象。在任何后续调用中,它返回以前创建的对象。
typedef NS_ENUM(NSUInteger, GDSMSSplitterMessageMode) {
GDSMSSplitterMessageModeGSM0338,
GDSMSSplitterMessageModeUTF16
}
消息组编码模式。
GDSMSSplitterMessageModeGSM0338
- 使用GSM 03.38标准进行消息编码。
GDSMSSplitterMessageModeUTF16
- 使用UTF16(USC-2)标准进行消息编码。
版权所有 (c) 2015 Alex Gordiyenko
MIT许可证。请阅读LICENSE
文件以获取更多详细信息。