smssdk更新

This commit is contained in:
kai60
2021-07-03 20:49:02 +08:00
parent 14ab3bf6ab
commit 3f5ee249b5
52 changed files with 1309 additions and 446 deletions
+1 -1
View File
@@ -17,7 +17,7 @@
#import <SMS_SDK/SMSSDK.h> #import <SMS_SDK/SMSSDK.h>
#define SMSSDK_APPKey @"18c4fdbfbdbbf" #define SMSSDK_APPKey @"18c4fdbfbdbbf"
#define SMSSDK_APPSec @"2cf5da5abdba9dfbde6952f049f01ae6" #define SMSSDK_APPSec @"2cf5da5abdba9dfbde6952f049f01ae6"
#import <SMS_SDK/Extend/SMSSDK+AddressBookMethods.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate> @interface AppDelegate : UIResponder <UIApplicationDelegate>
+3 -2
View File
@@ -49,6 +49,8 @@
#import <UMCommunitySDK/UMComSession.h> #import <UMCommunitySDK/UMComSession.h>
#import <UMSocialCore/UMSocialCore.h> #import <UMSocialCore/UMSocialCore.h>
#import "AppDelegate+AliPushConfig.h" #import "AppDelegate+AliPushConfig.h"
#import <SMS_SDK/SMSSDK+ContactFriends.h>
#define UMCommunity_APPKEY @"569f530fe0f55a3e9a002502" #define UMCommunity_APPKEY @"569f530fe0f55a3e9a002502"
#define UMCommunity_SECRET @"462384e695d18d287ee46c423c5dce34" #define UMCommunity_SECRET @"462384e695d18d287ee46c423c5dce34"
@@ -175,8 +177,7 @@
#ifdef __OPTIMIZE__ #ifdef __OPTIMIZE__
[AvoidCrash becomeEffective]; [AvoidCrash becomeEffective];
#endif #endif
//短信验证
[SMSSDK registerApp:SMSSDK_APPKey withSecret:SMSSDK_APPSec];
[SMSSDK enableAppContactFriends:NO]; [SMSSDK enableAppContactFriends:NO];
/** /**
* 注册APNS * 注册APNS
+8
View File
@@ -8,6 +8,8 @@
<string>爱鱼奇</string> <string>爱鱼奇</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string> <string>$(EXECUTABLE_NAME)</string>
<key>CFBundleGetInfoString</key>
<string></string>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key> <key>CFBundleInfoDictionaryVersion</key>
@@ -127,6 +129,12 @@
</array> </array>
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>
<true/> <true/>
<key>MOBAppKey</key>
<string>18c4fdbfbdbbf</string>
<key>MOBAppSecret</key>
<string>2cf5da5abdba9dfbde6952f049f01ae6</string>
<key>MOBNetLater</key>
<integer>2</integer>
<key>NSAppTransportSecurity</key> <key>NSAppTransportSecurity</key>
<dict> <dict>
<key>NS Exception Domains</key> <key>NS Exception Domains</key>
Binary file not shown.
@@ -0,0 +1,38 @@
//
// IMOBBaseUser.h
// MOBFoundation
//
// Created by 冯鸿杰 on 2017/9/5.
// Copyright © 2017年 MOB. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "IMOBFDataModel.h"
/**
基础用户信息
*/
@protocol IMOBBaseUser <IMOBFDataModel>
/**
获取用户ID
@return 用户ID
*/
- (NSString *)uid;
/**
获取用户头像
@return 头像
*/
- (NSString *)avatar;
/**
获取用户昵称
@return 昵称
*/
- (NSString *)nickname;
@end
@@ -0,0 +1,88 @@
//
// IJIMDataModel.h
// Jimu
//
// Created by 冯鸿杰 on 17/2/10.
// Copyright © 2017年 Mob. All rights reserved.
//
#import <Foundation/Foundation.h>
/**
数据模型协议
*/
@protocol IMOBFDataModel <NSObject>
@required
/**
初始化数据模型
@param dict 初始化数据
@return 数据模型
*/
- (instancetype)initWithDict:(NSDictionary *)dict;
/**
设置数据
@param data 数据
@param key 名称
*/
- (void)set:(id)data key:(NSString *)key;
/**
获取数据
@param key 名称
*/
- (id)get:(NSString *)key;
/**
返回一个字典结构
@return 字段数据对象
*/
- (NSDictionary *)dictionaryValue;
/**
返回字段映射字典
说明:类如果实现此方法,并返回映射字典,在使用initWithDict初始化时,则会按照映射查找属性;key 为真正想要设定的、存在的属性 ,value为需要映射的字段
@return 字段映射字典
*/
+ (NSDictionary <NSString *, NSString *> *)propertyMappingDictionary;
/**
当类中有属性为数组,且数组元素同为MOBFDataModel时,应该置制定该属性属性及其元素类型
例如有 @property NSArray <OtherDataModel *> *array;
应主动实现本方法,并返回 @{@"array" : @"OtherDataModel"}
@return 映射配置
*/
+ (NSDictionary <NSString *, NSString *> *)elementTypeOfCollectionPropertyDictionary;
/**
当属性定义类型不支持从原始数据直接转换时触发此方法,该方法默认返回nil,表示不进行转换
@param rawData 原始数据
@param targetType 目标类型
@param propertyName 属性名称
@return 目标类型对象
*/
+ (id)unsupportTypeWithRawData:(id)rawData
targetType:(Class)targetType
propertyName:(NSString *)propertyName;
/**
当设置属性对象不支持转化为原始数据时触发此方法,默认返回nil,表示不进行转换
@param object 对象
@param propertyName 属性名称
@return 原始数据,仅包含NSDictionary、NSArray、NSString、NSNumber类型的返回。
*/
+ (id)rawDataWithUnsupportTypeObject:(id)object
propertyName:(NSString *)propertyName;
@end
@@ -15,6 +15,14 @@
*/ */
@interface MOBFData : NSObject @interface MOBFData : NSObject
/**
将一个NSData对象转换为NSString对象,处理由于结束符导致json解析错误问题
@param data 原始data
@return 处理后字符串
*/
+ (NSString *)stringByData:(NSData *)data;
/** /**
* 使用HMAC-SHA1进行加密 * 使用HMAC-SHA1进行加密
* *
@@ -25,6 +33,15 @@
*/ */
+ (NSData *)hmacSha1Data:(NSData *)data forKey:(NSData *)key; + (NSData *)hmacSha1Data:(NSData *)data forKey:(NSData *)key;
/**
使用HMAC-MD5进行签名
@param data 原始数据
@param key 密钥
@return 加密后数据
*/
+ (NSData *)hmacMd5Data:(NSData *)data forKey:(NSData *)key;
/** /**
* 对数据进行MD5签名 * 对数据进行MD5签名
* *
@@ -0,0 +1,18 @@
//
// MOBFDataModel.h
// MOBFoundation
//
// Created by 冯鸿杰 on 17/2/15.
// Copyright © 2017年 MOB. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "IMOBFDataModel.h"
/**
数据模型
*/
@interface MOBFDataModel : NSObject <IMOBFDataModel,
NSCoding>
@end
@@ -121,4 +121,13 @@
minute:(NSInteger)minute minute:(NSInteger)minute
second:(NSInteger)second; second:(NSInteger)second;
/**
* 0点毫秒数
*
* @return 0点毫秒数
*/
+ (NSTimeInterval)zeroTimeInterval;
@end @end
@@ -8,6 +8,9 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
extern NSString *kMOBFReachabilityChangedNotification;
/** /**
* 网络类型 * 网络类型
@@ -58,6 +61,14 @@ typedef NS_ENUM(NSUInteger, MOBFIPVersion)
*/ */
@interface MOBFDevice : NSObject @interface MOBFDevice : NSObject
/**
* 获取单例的 CTTelephonyNetworkInfo
*
* @return CTTelephonyNetworkInfo
*/
+ (CTTelephonyNetworkInfo *)networkInfo;
/** /**
* 获取网卡物理地址 * 获取网卡物理地址
* *
@@ -79,6 +90,13 @@ typedef NS_ENUM(NSUInteger, MOBFIPVersion)
*/ */
+ (MOBFNetworkType)currentNetworkType; + (MOBFNetworkType)currentNetworkType;
/**
* 获取当前网络类型字符串
*
* @return 网络类型
*/
+ (NSString *)currentNetworkTypeStr;
/** /**
* 获取手机运营商代码 * 获取手机运营商代码
* *
@@ -165,13 +183,6 @@ typedef NS_ENUM(NSUInteger, MOBFIPVersion)
*/ */
+ (NSString *)bssid; + (NSString *)bssid;
/**
* 获取广告商ID
*
* @return 广告商ID
*/
+ (NSString *)idfa;
/** /**
* 获取当前语言 * 获取当前语言
* *
@@ -193,4 +204,39 @@ typedef NS_ENUM(NSUInteger, MOBFIPVersion)
*/ */
+ (NSString *)idfv; + (NSString *)idfv;
/**
* 获取物理内存
@return 物理内存
*/
+ (double)physicalMemory;
/**
* 获取存储大小
@return 存储大小
*/
+ (long long)diskSpace;
/**
* cpu 类型
*
* @return cpu 类型
*/
+ (NSString *)cpuType;
/**
* 获取无线局域网的强度
*
* @return 强度 3: 强 2:中, 1:弱 ,无
*/
+ (int)wifiLevel;
/**
* 获取原始当前网络类型
*
* @return 网络类型
*/
+ (NSString *)currentDataNetworkType;
@end @end
@@ -53,6 +53,14 @@ typedef void(^MOBFHttpFaultEvent) (NSError *error);
*/ */
typedef void(^MOBFHttpUploadProgressEvent) (int64_t totalBytes, int64_t loadedBytes); typedef void(^MOBFHttpUploadProgressEvent) (int64_t totalBytes, int64_t loadedBytes);
/**
* HTTP下载数据事件
*
* @param totalBytes 总字节数
* @param loadedBytes 上传字节数据
*/
typedef void(^MOBFHttpDownloadProgressEvent) (int64_t totalBytes, int64_t loadedBytes);
/** /**
* HTTP服务类 * HTTP服务类
*/ */
@@ -168,6 +176,20 @@ typedef void(^MOBFHttpUploadProgressEvent) (int64_t totalBytes, int64_t loadedBy
onFault:(MOBFHttpFaultEvent)faultHandler onFault:(MOBFHttpFaultEvent)faultHandler
onUploadProgress:(MOBFHttpUploadProgressEvent)uploadProgressHandler; onUploadProgress:(MOBFHttpUploadProgressEvent)uploadProgressHandler;
/**
发送请求
@param resultHandler 返回回调
@param faultHandler 错误回调
@param uploadProgressHandler 上传数据进度回调
@param downloadProgressHandler 下载数据进度回调
*/
- (void)sendRequestOnResult:(MOBFHttpResultEvent)resultHandler
onFault:(MOBFHttpFaultEvent)faultHandler
onUploadProgress:(MOBFHttpUploadProgressEvent)uploadProgressHandler
onDownloadProgress:(MOBFHttpDownloadProgressEvent)downloadProgressHandler;
/** /**
* 取消请求 * 取消请求
*/ */
@@ -218,5 +240,30 @@ typedef void(^MOBFHttpUploadProgressEvent) (int64_t totalBytes, int64_t loadedBy
onFault:(MOBFHttpFaultEvent)faultHandler onFault:(MOBFHttpFaultEvent)faultHandler
onUploadProgress:(MOBFHttpUploadProgressEvent)uploadProgressHandler; onUploadProgress:(MOBFHttpUploadProgressEvent)uploadProgressHandler;
/**
* 发送HTTP请求
*
* @param urlString 请求地址
* @param method 请求方式
* @param parameters 请求参数
* @param headers 请求头集合
* @param timeout 请求超时
* @param resultHandler 返回回调
* @param faultHandler 错误回调
* @param uploadProgressHandler 上传数据进度回调
* @param downloadProgressHandler 下载数据进度回调
*
* @return HTTP服务对象
*/
+ (MOBFHttpService *)sendHttpRequestByURLString:(NSString *)urlString
method:(NSString *)method
parameters:(NSDictionary *)parameters
headers:(NSDictionary *)headers
timeout:(NSTimeInterval)timeout
onResult:(MOBFHttpResultEvent)resultHandler
onFault:(MOBFHttpFaultEvent)faultHandler
onUploadProgress:(MOBFHttpUploadProgressEvent)uploadProgressHandler
onDownloadProgress:(MOBFHttpDownloadProgressEvent)downloadProgressHandler;
@end @end
@@ -0,0 +1,31 @@
//
// MOBFImageCachePolicy.h
// MOBFoundation
//
// Created by 冯鸿杰 on 2017/4/12.
// Copyright © 2017年 MOB. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "MOBFImageServiceTypeDef.h"
@interface MOBFImageCachePolicy : NSObject
/**
缓存名称,用于对不同的图片缓存划分到不同的缓存路径中,如果名称相同则缓存位置相同。
*/
@property (nonatomic, copy) NSString *cacheName;
/**
缓存处理回调,当有图片需要进行缓存时会先调用该方法
*/
@property (nonatomic, strong) MOBFImageGetterCacheHandler cacheHandler;
/**
获取默认的缓存策略
@return 缓存策略
*/
+ (instancetype)defaultCachePolicy;
@end
@@ -10,6 +10,8 @@
#import "MOBFImageServiceTypeDef.h" #import "MOBFImageServiceTypeDef.h"
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
@class MOBFImageCachePolicy;
/** /**
* 图片获取器 * 图片获取器
*/ */
@@ -20,7 +22,15 @@
* *
* @return 图片服务实例 * @return 图片服务实例
*/ */
+ (instancetype)sharedInstance; + (instancetype _Nullable )sharedInstance;
/**
初始化图片服务实例
@param cachePolicy 缓存策略
@return 图片服务实例
*/
- (instancetype _Nullable )initWithCachePolicy:(MOBFImageCachePolicy *_Nullable)cachePolicy;
/** /**
* 是否存在图片缓存 * 是否存在图片缓存
@@ -29,7 +39,7 @@
* *
* @return YES 表示图片已缓存,NO 图片未缓存 * @return YES 表示图片已缓存,NO 图片未缓存
*/ */
- (BOOL)existsImageCacheWithURL:(NSURL *)url; - (BOOL)existsImageCacheWithURL:(NSURL *_Nullable)url;
/** /**
* 获取图片 * 获取图片
@@ -39,10 +49,23 @@
* *
* @return 服务观察者 * @return 服务观察者
*/ */
- (MOBFImageObserver *)getImageWithURL:(NSURL *)url - (MOBFImageObserver *_Nonnull)getImageWithURL:(NSURL *_Nullable)url
result:(MOBFImageGetterResultHandler)resultHandler; result:(MOBFImageGetterResultHandler _Nullable )resultHandler;
/**
* 获取图片
*
* @param url 图片路径
* @param allowReadCache 是否允许读取缓存
* @param resultHandler 返回事件
*
* @return 服务观察者
*/
- (MOBFImageObserver *_Nullable)getImageWithURL:(NSURL * _Nullable)url
allowReadCache:(BOOL)allowReadCache
result:(MOBFImageGetterResultHandler _Nullable )resultHandler;
/** /**
获取图片数据 获取图片数据
@@ -51,14 +74,40 @@
@return 服务观察者 @return 服务观察者
*/ */
- (MOBFImageObserver *)getImageDataWithURL:(NSURL *)url - (MOBFImageObserver *_Nullable)getImageDataWithURL:(NSURL * _Nullable)url
result:(MOBFImageDataGetterResultHandler)resultHandler; result:(MOBFImageDataGetterResultHandler _Nullable)resultHandler;
/**
获取图片数据
@param url 图片路径
@param allowReadCache 是否允许读取缓存
@param resultHandler 返回事件
@return 服务观察者
*/
- (MOBFImageObserver *_Nullable)getImageDataWithURL:(NSURL * _Nullable)url
allowReadCache:(BOOL)allowReadCache
result:(MOBFImageDataGetterResultHandler _Nullable)resultHandler;
/** /**
* 移除图片观察者 * 移除图片观察者
* *
* @param imageObserver 图片观察者 * @param imageObserver 图片观察者
*/ */
- (void)removeImageObserver:(MOBFImageObserver *)imageObserver; - (void)removeImageObserver:(MOBFImageObserver * _Nullable)imageObserver;
/**
* 删除磁盘中缓存中图片
*
* @param url 图片地址
*/
- (void)removeImageForURL:(nullable NSURL *)url;
/**
* 删除当前缓存策略下磁盘目录中所有图片
*
*/
- (void)clearDisk;
@end @end
@@ -9,7 +9,15 @@
#ifndef MOBFoundation_MOBFImageServiceTypeDef_h #ifndef MOBFoundation_MOBFImageServiceTypeDef_h
#define MOBFoundation_MOBFImageServiceTypeDef_h #define MOBFoundation_MOBFImageServiceTypeDef_h
@class UIImage; #import <UIKit/UIKit.h>
/**
图片缓存处理
@param imageData 图片的数据
*/
typedef NSData* (^MOBFImageGetterCacheHandler)(NSData *imageData);
/** /**
* 图片加载返回 * 图片加载返回
@@ -9,6 +9,8 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import "MOBFJSTypeDefine.h" #import "MOBFJSTypeDefine.h"
@class JSContext;
/** /**
* JavaScript上下文环境 * JavaScript上下文环境
*/ */
@@ -21,6 +23,15 @@
*/ */
+ (instancetype)defaultContext; + (instancetype)defaultContext;
/**
初始化
@param context JS上下文
@return JS上下文
*/
- (instancetype)initWithContext:(JSContext *)context;
/** /**
* 注册方法 * 注册方法
* *
@@ -0,0 +1,37 @@
//
// MOBFJSMethod.h
// MOBFoundation
//
// Created by 冯 鸿杰 on 15/2/27.
// Copyright (c) 2015年 MOB. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "MOBFJSTypeDefine.h"
/**
* JS方法
*/
@interface MOBFJSMethod : NSObject
/**
* 方法名称
*/
@property (nonatomic, copy, readonly) NSString *name;
/**
* 方法实现
*/
@property (nonatomic, strong, readonly) MOBFJSMethodIMP imp;
/**
* 初始化方法
*
* @param name 方法名称
* @param imp 方法实现
*
* @return 方法对象
*/
- (id)initWithName:(NSString *)name imp:(MOBFJSMethodIMP)imp;
@end
@@ -12,7 +12,7 @@
/** /**
* JS方法实现 * JS方法实现
* *
* @param params 传入参数 * @param arguments 传入参数
*/ */
typedef void(^MOBFJSMethodIMP) (NSArray *arguments); typedef void(^MOBFJSMethodIMP) (NSArray *arguments);
@@ -0,0 +1,110 @@
//
// MOBFLogService.h
// MOBFoundation
//
// Created by 冯鸿杰 on 17/2/16.
// Copyright © 2017年 MOB. All rights reserved.
//
#import <Foundation/Foundation.h>
@class MOBFLogService;
/**
日志服务协议
*/
@protocol MOBFLogServiceDelegate <NSObject>
/**
是否需要发送日志
@param logService 日志服务
@param logs 已有日志信息集合
@return YES 表示需要发送日志,NO 表示不需要发送日志
*/
- (BOOL)logService:(MOBFLogService *)logService
needsSendLogs:(NSArray *)logs;
/**
发送日志
@param logService 日志服务
@param logs 需要发送的日志信息集合
@param result 发送完成回调,成功时传入YES,否则传入NO
*/
- (void)logService:(MOBFLogService *)logService
didSendLogs:(NSArray *)logs
result:(void (^)(BOOL succeed, NSArray *sentLogs))result;
@end
/**
日志服务
*/
@interface MOBFLogService : NSObject
/**
委托对象
*/
@property (nonatomic, weak) id<MOBFLogServiceDelegate> delegate;
/**
失败最大重试次数
*/
@property (nonatomic) NSInteger failRetryMaxCount;
/**
初始化
@param name 日志服务名称
@return 日志服务对象
*/
- (instancetype)initWithName:(NSString *)name;
/**
初始化
@param name 日志服务名称
@param secretKey 密钥(AES
@return 日志服务对象
*/
- (instancetype)initWithName:(NSString *)name
secretKey:(NSString *)secretKey;
/**
写入数据
@param data 日志数据
*/
- (void)writeData:(id<NSCoding>)data;
/**
写入数据数组
@param data 日志数据
*/
- (void)writeDatas:(NSArray *)data;
/**
同步写入数据
@param data 日志数据
*/
- (void)syncWriteData:(id<NSCoding>)data;
/**
需要发送日志,服务会对当前日志进行检测,如果发现存在日志会跟委托进行确认是否需要发送,然后再进行后续操作
*/
- (void)needsSendLog;
/**
需要发送日志,服务会对当前日志进行检测,如果发现存在日志会跟委托进行确认是否需要发送,然后再进行后续操作
@param time 延时检测时间
*/
- (void)needsSendLogAfterTime:(NSTimeInterval)time;
@end
@@ -1,63 +0,0 @@
//
// MOBFNetworkFlowInfo.h
// MOBFoundation
//
// Created by fenghj on 15/12/17.
// Copyright © 2015年 MOB. All rights reserved.
//
#import <Foundation/Foundation.h>
/**
* 网络流量信息
*/
@interface MOBFNetworkFlowInfo : NSObject
/**
* 接收到的字节数
*/
@property (nonatomic, readonly) NSUInteger receivedBytes;
/**
* 发送字节数
*/
@property (nonatomic, readonly) NSUInteger sentBytes;
/**
* 最后的更新时间
*/
@property (nonatomic, strong, readonly) NSDate *lastChangeTime;
/**
* WIFI下的接收字节数
*/
@property (nonatomic, readonly) NSUInteger WIFIReceivedBytes;
/**
* WIFI下的发送字节数
*/
@property (nonatomic, readonly) NSUInteger WIFISentBytes;
/**
* 蜂窝网络下的接收字节数
*/
@property (nonatomic, readonly) NSUInteger WWANReceivedBytes;
/**
* 蜂窝网络下的发送字节数
*/
@property (nonatomic, readonly) NSUInteger WWANSentBytes;
/**
* 获取网络流量信息共享实例
*
* @return 网络流量信息对象
*/
+ (MOBFNetworkFlowInfo *)sharedInstance;
/**
* 更新信息
*/
- (void)update;
@end
@@ -21,33 +21,27 @@
typedef NSString *(^MOBFReplacingOccurrencesHandler) (NSInteger captureCount, NSString *const capturedStrings[captureCount], const NSRange capturedRanges[captureCount], volatile BOOL * const stop); typedef NSString *(^MOBFReplacingOccurrencesHandler) (NSInteger captureCount, NSString *const capturedStrings[captureCount], const NSRange capturedRanges[captureCount], volatile BOOL * const stop);
/** /**
* 正则表达式选项 正则表达式选项
*/
typedef NS_ENUM(NSUInteger, MOBFRegexOptions){ - MOBFRegexOptionsNoOptions: 无匹配
/** - MOBFRegexOptionsCaseless: 不区分字母大小写的模式
* 无设置 - MOBFRegexOptionsComments: 忽略掉正则表达式中的空格和#号之后的字符
- MOBFRegexOptionsIgnoreMetacharacters: 将正则表达式整体作为字符串处理
- MOBFRegexOptionsDotAll: 允许.匹配任何字符,包括换行符
- MOBFRegexOptionsMultiline: 允许^和$符号匹配整段文本的开头和结尾
- MOBFRegexOptionsUseUnixLineSeparators: 设置\n为唯一的行分隔符,否则所有的都有效。
- MOBFRegexOptionsUnicodeWordBoundaries: 使用Unicode TR#29标准作为词的边界,否则所有传统正则表达式的词边界都有效
*/ */
typedef NS_ENUM(NSUInteger, MOBFRegexOptions)
{
MOBFRegexOptionsNoOptions = 0, MOBFRegexOptionsNoOptions = 0,
/** MOBFRegexOptionsCaseless = 1 << 0,
* 不区分大小写 MOBFRegexOptionsComments = 1 << 1,
*/ MOBFRegexOptionsIgnoreMetacharacters = 1 << 2,
MOBFRegexOptionsCaseless = 2, MOBFRegexOptionsDotAll = 1 << 3,
/** MOBFRegexOptionsMultiline = 1 << 4,
* 注释 MOBFRegexOptionsUseUnixLineSeparators = 1 << 5,
*/ MOBFRegexOptionsUnicodeWordBoundaries = 1 << 6,
MOBFRegexOptionsComments = 4,
/**
* 匹配点
*/
MOBFRegexOptionsDotAll = 32,
/**
* 多行模式
*/
MOBFRegexOptionsMultiline = 8,
/**
* Unicode字符
*/
MOBFRegexOptionsUnicodeWordBoundaries = 256
}; };
/** /**
@@ -68,6 +68,15 @@
*/ */
+ (NSData *)dataByHMACSha1String:(NSString *)string forKey:(NSString *)key; + (NSData *)dataByHMACSha1String:(NSString *)string forKey:(NSString *)key;
/**
使用HMAC-MD5进行签名
@param string 原始字符串
@param key 密钥
@return 签名后的数据
*/
+ (NSData *)dataByHMACMd5String:(NSString *)string forKey:(NSString *)key;
/** /**
* 使用BASE64进行解码 * 使用BASE64进行解码
* *
@@ -77,6 +86,15 @@
*/ */
+ (NSData *)dataByBase64DecodeString:(NSString *)string; + (NSData *)dataByBase64DecodeString:(NSString *)string;
/**
* 使用BASE64进行解码
*
* @param string 原始字符串
*
* @return 解码后数据string
*/
+ (NSString *)stringByBase64DecodeString:(NSString *)string;
/** /**
* 判断字符串中是否包含链接 * 判断字符串中是否包含链接
* *
@@ -104,4 +122,13 @@
*/ */
+ (NSData *)dataByHexString:(NSString *)string; + (NSData *)dataByHexString:(NSString *)string;
/**
* @brief 转换版本号
* @param ver 版本号
* @return 转换为5位整数表示。
*/
+ (NSInteger)convertVersion:(NSString *)ver;
@end @end
@@ -0,0 +1,67 @@
//
// MOBFTagService.h
// MOBFoundation
//
// Created by liyc on 2017/10/27.
// Copyright © 2017年 MOB. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
/**
* 错误消息类型
*/
typedef NS_ENUM(NSUInteger, MOBFErrorTagMsgType){
/*
* 标签为空
*/
MOBFErrorTagMsgTypeGetTagEmpty = 109996,
/*
* 获取标签失败
*/
MOBFErrorTagMsgTypeGetTagFailed = 109997,
/**
* 上传标签超出字符限制
*/
MOBFErrorTagMsgTypeCharacterLimitError = 109998,
/**
* 上传无效参数
*/
MOBFErrorTagMsgTypeInvalidParamError = 109999,
};
@interface MOBFTagService : NSObject
/**
上传标记我的用户
@param tags 用户信息
@param result 回调信息
*/
+ (void)tagUserUpload:(NSDictionary *)tags
result:(void (^)(NSError *error))result;
/**
获取标签
@param handler 回调
*/
+ (void)userTags:(void (^) (NSDictionary *userTags, NSError *error))handler;
/**
上传位置信息
@param accuracy 精度
@param latitude 纬度
@param longitude 经度
@param tag 完整地理信息JSON数据
@param handler 回调信息
*/
+ (void)uploadLocation:(CGFloat)accuracy
latitude:(CGFloat)latitude
longitude:(CGFloat)longitude
tag:(NSDictionary *)tag
result:(void (^)(NSError *error))result;
@end
+90
View File
@@ -0,0 +1,90 @@
//
// MOBFUser.h
// MOBFoundation
//
// Created by 冯鸿杰 on 17/3/17.
// Copyright © 2017年 MOB. All rights reserved.
//
#import <MOBFoundation/MOBFoundation.h>
#import "IMOBBaseUser.h"
#import "MOBFDataModel.h"
/**
用户信息
*/
@interface MOBFUser : MOBFDataModel <IMOBBaseUser>
/**
用户标识
*/
@property (nonatomic, copy, readonly, nullable) NSString * uid;
/**
应用的用户标识
*/
@property (nonatomic, copy, readonly, nullable) NSString * appUid;
/**
用户头像
*/
@property (nonatomic, copy, nullable) NSString * avatar;
/**
用户昵称
*/
@property (nonatomic, copy, nullable) NSString * nickname;
/**
签名信息
*/
@property (nonatomic, copy, nullable) NSString * sign;
/**
用户自定义数据
*/
@property (nonatomic, strong, nullable) NSDictionary * userdata;
/**
创建第三方用户信息
@param uid 用户标识,能够表示你的用户唯一性的标识
@param avatar 用户头像地址
@param nickname 用户名称
@return 用户信息
*/
+ (MOBFUser* _Nullable)userWithUid:(NSString * _Nonnull)uid
avatar:(NSString * _Nullable)avatar
nickname:(NSString * _Nullable)nickname __deprecated_msg("use userWithAppUid:avatar:nickname:userData: method instead.");
/**
创建第三方用户信息
@param appUid 用户标识,能够表示你的用户唯一性的标识
@param avatar 用户头像地址
@param nickname 用户名称
@param userdata 用户自定义数据
@return 用户信息
*/
+ (MOBFUser* _Nullable)userWithAppUid:(NSString * _Nonnull )appUid
avatar:(NSString * _Nullable)avatar
nickname:(NSString * _Nullable)nickname
userdata:(NSDictionary * _Nullable)userdata;
/**
创建第三方用户信息
@param appUid 用户标识,能够表示你的用户唯一性的标识
@param avatar 用户头像地址
@param nickname 用户名称
@param userdata 用户自定义数据
@return 用户信息
*/
+ (MOBFUser* _Nullable)userWithAppUid:(NSString * _Nonnull )appUid
avatar:(NSString * _Nullable)avatar
nickname:(NSString * _Nullable)nickname
sign:(NSString * _Nullable)sign
userdata:(NSDictionary * _Nullable)userdata;
@end
@@ -0,0 +1,101 @@
//
// MOBFWKWebViewContext.h
// MOBFoundation
//
// Created by 崔林豪 on 2018/11/6.
// Copyright © 2018年 MOB. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "MOBFJSTypeDefine.h"
#import <WebKit/WebKit.h>
#include <JavaScriptCore/JavaScript.h>
NS_ASSUME_NONNULL_BEGIN
@interface MOBFWKWebViewContext : NSObject
@property (nonatomic, strong) WKWebView *webView;
/**
* 初始化
*
* @return 单例对象
*/
+ (instancetype)defaultContext;
/**
初始化
@param webview Web视图,如果传入视图带有委托处理,请在传入该参数前将委托设置,否则会奔溃。
@return 类实例
*/
- (instancetype)initWithWKWebView:(WKWebView *)webview;
/**
* 注册方法
*
* @param name 方法名称
* @param block 方法执行
*/
- (void)registerJSMethod:(NSString *)name block:(MOBFJSMethodIMP)block;
/**
* 调用方法
*
* @param name 方法名称
* @param arguments 参数
*
* @return 返回值
*/
- (NSString *)callJSMethod:(NSString *)name arguments:(NSArray *)arguments;
/**
* 创建新版本JS解析器
*/
- (void)setupWKWebViewNewJSParser;
- (void)initWKWebViewDelegate:(WKWebView *)wkWebView;
/**
* 加载插件
*
* @param path 插件脚本文件路径
* @param name 插件名称
*/
- (void)loadPluginWithPath:(NSString *)path forName:(NSString *)name;
/**
* 加载插件
*
* @param content 插件脚本内容
* @param name 插件名称
*/
- (void)loadPlugin:(NSString *)content forName:(NSString *)name;
/**
* 执行脚本
*
* @param script 脚本
*/
- (void)runScript:(NSString *)script;
/**
* 回调JS
*
* @param callback 回调方法名称
* @param resultData 回调数据
*/
- (void)callback:(NSString *)callback resultData:(NSDictionary *)resultData;
@end
NS_ASSUME_NONNULL_END
@@ -26,11 +26,10 @@
#import <MOBFoundation/MOBFDataService.h> #import <MOBFoundation/MOBFDataService.h>
#import <MOBFoundation/MOBFHttpService.h> #import <MOBFoundation/MOBFHttpService.h>
#import <MOBFoundation/MOBFImageGetter.h> #import <MOBFoundation/MOBFImageGetter.h>
#import <MOBFoundation/MOBFJSContext.h> #import <MOBFoundation/MOBFImageCachePolicy.h>
#import <MOBFoundation/IMOBFPlugin.h>
#import <MOBFoundation/MOBFPluginManager.h>
#import <MOBFoundation/MOBFNotificationCenter.h> #import <MOBFoundation/MOBFNotificationCenter.h>
#import <MOBFoundation/MobSDK.h>
#endif #endif
+30
View File
@@ -0,0 +1,30 @@
//
// MOBSDKDef.h
// MOBFoundation
//
// Created by liyc on 2018/8/22.
// Copyright © 2018年 MOB. All rights reserved.
//
#ifndef MOBSDKDef_h
#define MOBSDKDef_h
/**
* 国际域名类型
*/
typedef NS_ENUM(NSUInteger, MOBFSDKDomainType){
/**
* 默认(大陆域名)
*/
MOBFSDKDomainTypeDefault = 0,
/**
* 美国
*/
MOBFSDKDomainTypeUS = 1,
/**
* 日本
*/
MOBFSDKDomainTypeJapan = 2,
};
#endif /* MOBSDKDef_h */
@@ -0,0 +1,64 @@
//
// MobSDK+Privacy.h
// MOBFoundation
//
// Created by liyc on 2020/1/21.
// Copyright © 2020 MOB. All rights reserved.
//
#import <MOBFoundation/MobSDK.h>
#import <UIKit/UIKit.h>
#ifndef MobSDK_Privacy_h
#define MobSDK_Privacy_h
@interface MobSDK (Privacy)
/**
获取MobTech用户隐私协议
@param type 协议类型 (1= url类型, 2= 富文本类型)
@param completion 返回回调(data:字典类型 title=标题,content=内容(type=1,返回url,type = 2时返回富文本) error:详细错误信息)
*/
+ (void)getPrivacyPolicy:(NSString * _Nullable)type
compeletion:(void (^ _Nullable)(NSDictionary * _Nullable data,NSError * _Nullable error))result DEPRECATED_MSG_ATTRIBUTE("use -[getPrivacyPolicy:language:compeletion:] method instead.");
/**
获取MobTech用户隐私协议
@param type 协议类型 (1= url类型, 2= 富文本类型)
@param language 隐私协议支持语言()
@param completion 返回回调(data:字典类型 title=标题,content=内容(type=1,返回url,type = 2时返回富文本) error:详细错误信息)
*/
+ (void)getPrivacyPolicy:(NSString * _Nullable)type
language:(NSString * _Nullable)language
compeletion:(void (^ _Nullable)(NSDictionary * _Nullable data,NSError * _Nullable error))result;
/**
上传隐私协议授权状态
@param isAgree 是否同意(用户授权后的结果)
*/
+ (void)uploadPrivacyPermissionStatus:(BOOL)isAgree
onResult:(void (^_Nullable)(BOOL success))handler;
/**
设置是否允许弹窗
@param show 是否允许展示隐私协议二次弹窗(最好设置为YES,否则可能会导致MobTech部分功能无法使用,默认为YES)
*/
+ (void)setAllowShowPrivacyWindow:(BOOL)show DEPRECATED_MSG_ATTRIBUTE("deprecated");
/**
设置隐私协议弹窗色调
@param backColorb 弹窗背景色调
@param colors 弹窗按钮色调数组(首个元素为拒绝按钮色调,第二个元素为同意按钮色调)
*/
+ (void)setPrivacyBackgroundColor:(UIColor *_Nullable)backColor
operationButtonColor:(NSArray <UIColor *>*_Nullable)colors DEPRECATED_MSG_ATTRIBUTE("deprecated");
@end
#endif /* MobSDK_Privacy_h */
+104
View File
@@ -0,0 +1,104 @@
//
// MobSDK.h
// MOBFoundation
//
// Created by liyc on 17/2/23.
// Copyright © 2017年 MOB. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "MOBSDKDef.h"
/**
MobSDK
*/
@interface MobSDK : NSObject
/**
获取版本号
@return 版本号
*/
+ (NSString * _Nonnull)version;
/**
获取应用标识
@return 应用标识
*/
+ (NSString * _Nullable)appKey;
/**
获取应用密钥
@return 应用密钥
*/
+ (NSString * _Nullable)appSecret;
/**
获取当前国际域名
@return 域名
*/
+ (NSString *_Nullable)getInternationalDomain;
/**
设置国际域名
@param domainType 域名类型
*/
+ (void)setInternationalDomain:(MOBFSDKDomainType)domainType;
/**
变更应用密钥,针对服务器刷新应用密钥后,可以通过该方法进行修改
@param appSecret 应用密钥
*/
+ (void)changeAppSecret:(NSString * _Nonnull)appSecret;
/**
注册appKey、appSecret
@param appKey appKey
@param appSecret appSecret
*/
+ (void)registerAppKey:(NSString * _Nonnull)appKey
appSecret:(NSString * _Nonnull)appSecret;
#pragma mark - User
/**
设置用户
@param uid 用户标识,对应应用自身用户系统的用户唯一标志,不一定是实际的用户ID,可以通过数据变换的方式(如:MD5(userID))来生成该ID,但一定要能够唯一标识用户。设置nil表示注销用户,解除绑定
@param nickname 昵称
@param avatar 头像
@param userData 用户自定义数据
*/
+ (void)setUserWithUid:(NSString * _Nullable)uid
nickName:(NSString * _Nullable)nickname
avatar:(NSString * _Nullable)avatar
userData:(NSDictionary * _Nullable)userData;
/**
设置用户
@param uid 用户标识,对应应用自身用户系统的用户唯一标志,不一定是实际的用户ID,可以通过数据变换的方式(如:MD5(userID))来生成该ID,但一定要能够唯一标识用户。设置nil表示注销用户,解除绑定
@param nickname 昵称
@param avatar 头像
@param userData 用户自定义数据
*/
+ (void)setUserWithUid:(NSString * _Nullable)uid
nickName:(NSString * _Nullable)nickname
avatar:(NSString * _Nullable)avatar
sign:(NSString * _Nullable)sign
userData:(NSDictionary * _Nullable)userData;
/**
清空用户
*/
+ (void)clearUser;
@end
@@ -0,0 +1,18 @@
//
// UIImageView+MOBFWebCache.h
// MOBFoundation
//
// Created by wukx on 2018/6/6.
// Copyright © 2018年 MOB. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIImageView (MOBFWebCache)
- (void)mobf_setImageWithURL:(nullable NSURL *)url;
- (void)mobf_setImageWithURL:(nullable NSURL *)url
placeholderImage:(nullable UIImage *)placeholder;
@end
@@ -0,0 +1,18 @@
//
// UIView+MOBFWebCache.h
// MOBFoundation
//
// Created by wukx on 2018/6/6.
// Copyright © 2018年 MOB. All rights reserved.
//
#import <UIKit/UIKit.h>
typedef void(^MOBFSetImageBlock)(UIImage * _Nullable image, NSError * _Nullable error);
@interface UIView (MOBFWebCache)
- (void)mobf_internalSetImageWithURL:(nullable NSURL *)url
setImageBlock:(nullable MOBFSetImageBlock)setImageBlock;
@end
Binary file not shown.
Binary file not shown.
+4 -2
View File
@@ -3,6 +3,8 @@ MOBFoundation.framework
========================================= =========================================
1、引用此库需要添加下面依赖库: 1、引用此库需要添加下面依赖库:
libz.dylib libz.tdb
libicucore.dylib libstdc++.tdb
2、版本
3.2.26
Binary file not shown.
Binary file not shown.
@@ -1,54 +0,0 @@
//
// SMSSDK+AddressBookMethods.h
// SMS_SDK
//
// Created by 李愿生 on 15/8/25.
// Copyright (c) 2015年 掌淘科技. All rights reserved.
//
#import <SMS_SDK/SMSSDK.h>
@interface SMSSDK (AddressBookMethods)
#pragma mark - 是否启用通讯录好友功能、提交用户资料、请求通讯好友信息
/**
* @brief 获取通讯录数据(Get the addressBook list data)
* @return 通讯录数据数组,数据元素类型是SMS_AddressBook(The array of addressBook list data, the type of array's element is SMS_AddressBook)
*/
+ (NSMutableArray*) addressBook;
/**
* @brief 是否允许访问通讯录好友(is Allowed to access to address book)
* @param state YES 代表启用 NO 代表不启用 默认为启用(YES,by default,means allow to access to address book)
*/
+ (void) enableAppContactFriends:(BOOL)state;
/**
* @from v2.0.5
* @brief 向服务端请求获取通讯录好友信息(Get the data of address book which save in the server)
*
* @param result 请求结果回调(Results of the request)
*/
+ (void) getAllContactFriends:(SMSGetAllContactFriendsResultHandler)result;
#pragma mark - 设置最新好友条数、显示最新好友条数
/**
* @brief 设置新增好友条数(The new added friends)
*
* @param count 好友条数(The number of friends)
*/
+ (void) setLatelyFriendsCount:(int)count;
/**
* @brief 显示新增好友条数回调(Display recently new friends number callback)
*
* @param result 结果回调(Results of the request )
*/
+ (void) showFriendsBadge:(SMSShowNewFriendsCountBlock)result;
@end
@@ -1,31 +0,0 @@
//
// SMSSDK+ExtexdMethods.h
// SMS_SDK
//
// Created by 李愿生 on 15/8/25.
// Copyright (c) 2015年 掌淘科技. All rights reserved.
//
#import <SMS_SDK/SMSSDK.h>
@interface SMSSDK (ExtexdMethods)
/**
* @from v1.1.1
* @brief 获取区号(Get the Area code of the country)
*
* @param result 请求结果回调(Results of the request)
*/
+ (void) getCountryZone:(SMSGetZoneResultHandler)result;
/**
* @from v1.1.1
* @brief 提交用户资料(Submit the user information data)
*
* @param user 用户信息(User information)
* @param result 请求结果回调(Results of the request)
*/
+ (void) submitUserInfoHandler:(SMSSDKUserInfo *)userInfo
result:(SMSSubmitUserInfoResultHandler)result;
@end
@@ -1,31 +0,0 @@
//
// CountryAndAreaCode.h
// SMS_SDKDemo
//
// Created by 掌淘科技 on 14-6-6.
// Copyright (c) 2014年 掌淘科技. All rights reserved.
//
#import <Foundation/Foundation.h>
/**
* @brief 国家名称和国家码类
*/
@interface SMSSDKCountryAndAreaCode : NSObject
/**
* @brief 国家中文名称
*/
@property (nonatomic, copy) NSString *countryName;
/**
* @brief 国家码
*/
@property (nonatomic, copy) NSString *areaCode;
/**
* @brief 国家拼音名字
*/
@property (nonatomic, copy) NSString *pinyinName;
@end
@@ -1,192 +0,0 @@
//
// SMS_SDKResultHanderDef.h
// SMS_SDKDemo
//
// Created by 掌淘科技 on 14-7-11.
// Copyright (c) 2014年 掌淘科技. All rights reserved.
//
#import <Foundation/Foundation.h>
@class SMSSDKUserInfo;
///#begin zh-cn
/**
* @brief 错误代码,如果为调用API出错则应该参考API错误码对照表。错误码对照表如下:
错误码 错误描述 备注
252 发送短信条数超过限制 发送短信条数超过规则限制
253 无权限进行此操作 无权限进行此操作
254 无权限发送验证码 无权限发送验证码
255 无权限发送国内验证码 无权限发送国内验证码
256 无权限发送港澳台验证码 无权限发送港澳台验证码
257 无权限发送国外验证码 无权限发送国外验证码
258 操作过于频繁 操作过于频繁
259 未知错误 未知错误
260 未知错误 未知错误
261 数据错误 数据未知错误
262 请检查网络授权 请检查网络授权设置
263 数据错误 数据未知错误
264 数据错误 duid获取错误
400 无效请求 客户端请求不能被识别。
406 AppKey错误 请求的AppKey不存在。
408 无效参数 无效的请求参数
456 手机号码为空 提交的手机号或者区号为空
457 手机号码格式错误 提交的手机号格式不正确(包括手机的区号)
458 appkey在黑名单中 appkey在发送很名单中
459 无appKey的控制数据 获取appKey控制发送短信的数据失败
460 无权限发送短信 没有打开客户端发送短信的开关
461 不支持该地区发送短信 没有开通当前地区发送短信的功能
462 每分钟发送次数超限 每分钟发送短息的次数超出限制
463 手机号码每天发送次数超限 手机号码每天发送短信的次数超出限制
464 每台手机每天发送次数超限 每台手机每天发送短信的次数超限
465 号码在App中每天发送短信的次数超限 手机号码在App中每天发送短信的数量超限
466 校验的验证码为空 提交的校验验证码为空
467 校验验证码请求频繁 5分钟内校验错误超过3次,验证码失效
468 需要校验的验证码错误 用户提交的验证码错误
470 账号余额不足 账号短信余额不足
472 客户端请求发送短信验证过于频繁 客户端请求发送短信验证过于频繁
475 appKey的应用信息不存在 appKey的应用信息不存在
476 当前appkey发送短信的数量超过限额 如果当前appkey对应的包名没有通过审核,每天次appkey+包名最多可以发送20条短信
477 当前手机号发送短信的数量超过当天限额 当前手机号码在SMSSDK平台内每天最多可发送短信10条,包括客户端发送和WebApi发送
478 当前手机号在当前应用内发送超过限额 当前手机号码在当前应用下12小时内最多可发送文本验证码5条
479 SDK使用的公共库版本错误 当前SDK使用的公共库版本为非IDFA版本,需要更换为IDFA版本
480 SDK没有提交AES-KEY 客户端在获取令牌的接口中没有传递aesKey。
500 服务器内部错误 服务器程序报错
*/
///#end
///#begin en
/**
* @brief Error codeIf it is you call the API, you should see the error code table, if it is an HTTP error, this attribute indicates the HTTP error code.
ErrorCode Error description Remarks
252 Sending messages more than limit Sending messages more than limit
253 No permission to do this No permission to do this
254 No permission to get verificationcode No permission to get verificationcode
255 No permission to send domestic verificationcode No permission to send domestic verificationcode
256 No permission to send verificationcode from Hong Kong, Macao and Taiwan No permission to send verificationcode from Hong Kong, Macao and Taiwan
257 No permission verification code sent abroad No permission verification code sent abroad
258 Action is too frequent Action is too frequent
259 Unknown error Unknown error
260 Unknown error Unknown error
261 Data is error Data is error of the unknown reason
262 Internet is error The Internet connection appears to be offline
263 Data is error Data is error of the unknown reason";
264 Data is error Data is error of the unknown reason";
400 Invalid request The request could not be identified
406 AppKey is error The AppKey is not exist
408 Invalid parameter The parameters are invalid in the request
456 Phone number is empty The submitted phone number or country code is empty
457 Phone number is illegal The submitted phone number or country code is incorrect
458 AppKey in the blacklist AppKey in the blacklist
459 Unable to obtain data Unable to obtain data related to the appkey
460 Permission denied Please turn on the switch to sending text messages by clients
461 Do not support the region to send text messages Do not support the region to send text messages
462 Sending messages limited per minute   Sending text message already hit its time limit
463 Sending messages limited everyday Sending text message to the phone number already hit its limit
464 Sending text message hits limit Sending text message to the device already hit its limit
465 Sending text message hits limit Sending text message to the device already hit the app's limit
466 The verification code is empty The submitted verification code is empty
467 Too frequently Check validation code too frequently
468 Invalid validation code Invalid validation code
470 Insufficient balance Insufficient balance
472 Unable to obtain data Obtaining client platform information failed
475 No application information of appkey exists No application information of appkey exists
476 The current appkey send text messages over limit
477 The current phone number send messages over the limit
478 The current phone number in the current application sends messages over the limit
479 The MOBFoundation.framework's version is wrong, please use it with idfa
480 SDK not submit aeskey in the interface of the access token
500 Server Error Server Error
*/
///#end
/**
* @brief 返回状态。
*/
enum SMSResponseState
{
SMSResponseStateSuccess = 0,
SMSResponseStateFail = 1,
SMSResponseStateCancel = 2
};
typedef enum SMSGetCodeMethod
{
SMSGetCodeMethodSMS = 0, //文本短信方式
SMSGetCodeMethodVoice = 1 //语音方式
} SMSGetCodeMethod;
/**
* @brief 验证码获取回调
* @param error 当error为空时表示成功
*/
typedef void (^SMSGetCodeResultHandler) (NSError *error);
/**
* @from v2.0.7
* @brief 验证码验证回调
* @param userInfo 用来设置用户个人资料
* @param error 当error为空时表示成功
*/
typedef void (^SMSCommitCodeResultHandler) (SMSSDKUserInfo *userInfo,NSError *error);
/**
* @brief 验证码验证回调
* @param 0:代表验证成功 1:代表验证失败
*/
typedef void (^SMSCommitVerifyCodeBlock)(enum SMSResponseState state);
/**
* @from v1.1.1
* @brief 国家区号获取回调
* @param error 当error为空时表示成功
* @param 返回的区号数组
*/
typedef void (^SMSGetZoneResultHandler)(NSError *error,NSArray* zonesArray);
/**
* @brief 国家区号获取回调
* @param 0:代表获取成功 1:代表获取失败
* @param 返回的区号数组
*/
typedef void (^SMSGetZoneBlock)(enum SMSResponseState state,NSArray* zonesArray);
/**
* @from v1.1.1
* @brief 通讯录好友获取回调
*
* @param error 当error为空时表示成功
* @param 返回的好友信息数组
*/
typedef void (^SMSGetAllContactFriendsResultHandler)(NSError *error,NSArray* friendsArray);
/**
* @brief 通讯录好友获取回调
* @param 0:代表获取成功 1:代表获取失败
* @param 返回的好友信息数组
*/
typedef void (^SMSGetAppContactFriendsBlock)(enum SMSResponseState state,NSArray* friendsArray);
/**
* @brief 提交用户信息回调
* @from v1.1.1
* @param error 当error为空时表示成功
*/
typedef void (^SMSSubmitUserInfoResultHandler) (NSError *error);
/**
* @brief 提交用户信息回调
* @param 0:代表获取成功 1:代表获取失败
*/
typedef void (^SMSSubmitUserInfoBlock) (enum SMSResponseState state);
/**
* @brief 设置最近新好友回调
* @param 0:代表成功 1:代表失败
* @param 代表最近新好友条数
*/
typedef void (^SMSShowNewFriendsCountBlock)(enum SMSResponseState state,int latelyFriendsCount);
@@ -0,0 +1,38 @@
//
// SMSSDK+ContactFriends.h
// SMS_SDK
//
// Created by 李愿生 on 15/8/25.
// Copyright (c) 2015年 掌淘科技. All rights reserved.
//
#import <SMS_SDK/SMSSDK.h>
@interface SMSSDK (ContactFriends)
#pragma mark - 是否启用通讯录好友功能、提交用户资料、请求通讯好友信息
/**
* @brief 是否允许访问通讯录好友(is Allowed to access to address book)
* @param state YES 代表启用 NO 代表不启用 默认为启用(YES,by default,means allow to access to address book)
*/
+ (void) enableAppContactFriends:(BOOL)state;
/**
提交用户资料(Submit the user information data)
@param userInfo 用户信息(User information)
@param result 请求结果回调(Results of the request)
*/
+ (void) submitUserInfo:(SMSSDKUserInfo *)userInfo
result:(SMSSubmitUserInfoResultHandler)result;
/**
向服务端请求获取通讯录好友信息(Get the data of address book which save in the server)
@param result 请求结果回调(Results of the request)
*/
+ (void) getAllContactFriends:(SMSGetContactsFriendsResultHandler)result;
@end
@@ -8,25 +8,32 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <SMS_SDK/Extend/SMSSDKResultHanderDef.h> #import <SMS_SDK/SMSSDKResultHandlerDef.h>
#import <SMS_SDK/Extend/SMSSDKUserInfo.h> #import <SMS_SDK/SMSSDKUserInfo.h>
/** /**
* @brief 核心类(Core classv2.1.5 * @brief 核心类(Core classv2.1.5
*/ */
@interface SMSSDK : NSObject @interface SMSSDK : NSObject
#pragma mark - 支持获取手机号码认证 Token (get the token to verify the phone number)
/** /**
* @brief 请求手机号码认证Token
* *
***** 请注意:测试短信条数限制发送数量:20条/天,APP开发完成后请到Mob官网(http://mob.com/ )后台提交审核,获得不限制条数的免费短信权限。 * @param handler 请求结果回调(Results of the request)
*
* 初始化应用,此方法在应用启动时在主线程中调用。(This method is called in the main thread in application:didFinishLaunchingWithOptions: method)
*
* @param appKey 在Mob官网(http://mob.com/ )中注册的应用Key。(The appKey of mob Application. Log in to http://mob.com/ to register to be a Mob developer and create a application if you don't have one)
* @param appSecret 在Mob官网(http://mob.com/ )中注册的应用秘钥。(The appSecret of mob Application. Log in to http://mob.com/ to register to be a Mob developer and create a application if you don't have one)
*/ */
+ (void) registerApp:(NSString*)appKey withSecret:(NSString*)appSecret; + (void) getMobileAuthTokenWith:(SMSSDKMobileAuthTokenResultHandler)handler;
/**
* @brief 验证手机号
*
* @param phoneNum 电话号码(The phone number)
* @param tokenInfo SDK返回的SMSSDKAuthToken Model
* @param completion 请求结果回调(Results of the request)
*/
+ (void) verifyMobileWithPhone:(NSString *)phoneNum
token:(SMSSDKAuthToken *)tokenInfo
completion:(SMSSDKMobileVerifyResultHandler)completion;
#pragma mark - 支持获取验证码和提交验证码 (get the verification code and commit verifacation code) #pragma mark - 支持获取验证码和提交验证码 (get the verification code and commit verifacation code)
/** /**
@@ -36,13 +43,27 @@
* @param method 获取验证码的方法(The method of getting verificationCode) * @param method 获取验证码的方法(The method of getting verificationCode)
* @param phoneNumber 电话号码(The phone number) * @param phoneNumber 电话号码(The phone number)
* @param zone 区域号,不要加"+"号(Area code) * @param zone 区域号,不要加"+"号(Area code)
* @param customIdentifier 自定义短信模板标识 该标识需从官网http://www.mob.com上申请,审核通过后获得。(Custom model of SMS. The identifier can get it from http://www.mob.com when the application had approved)
* @param result 请求结果回调(Results of the request) * @param result 请求结果回调(Results of the request)
*/ */
+ (void) getVerificationCodeByMethod:(SMSGetCodeMethod)method + (void) getVerificationCodeByMethod:(SMSGetCodeMethod)method
phoneNumber:(NSString *)phoneNumber phoneNumber:(NSString *)phoneNumber
zone:(NSString *)zone zone:(NSString *)zone
customIdentifier:(NSString *)customIdentifier result:(SMSGetCodeResultHandler)result __deprecated_msg("deprecated from v3.1.0");
/**
* @from v3.1.0
* @brief 获取验证码(Get verification code)
*
* @param method 获取验证码的方法(The method of getting verificationCode)
* @param phoneNumber 电话号码(The phone number)
* @param zone 区域号,不要加"+"号(Area code)
* @param tmpCode 模板id(template id)
* @param result 请求结果回调(Results of the request)
*/
+ (void) getVerificationCodeByMethod:(SMSGetCodeMethod)method
phoneNumber:(NSString *)phoneNumber
zone:(NSString *)zone
template:(NSString *)tmpCode
result:(SMSGetCodeResultHandler)result; result:(SMSGetCodeResultHandler)result;
@@ -63,6 +84,14 @@
* @from v2.0.1 * @from v2.0.1
* @return 返回SDK版本号(Return the version number of this SDK) * @return 返回SDK版本号(Return the version number of this SDK)
*/ */
+ (NSString *) SMSSDKVersion; + (NSString *) sdkVersion;
/**
* @from v1.1.1
* @brief 获取区号(Get the Area code of the country)
*
* @param result 请求结果回调(Results of the request)
*/
+ (void) getCountryZone:(SMSGetZoneResultHandler)result;
@end @end
+28
View File
@@ -0,0 +1,28 @@
//
// SMSSDKAuthToken.h
// SMS_SDK
//
// Created by Junjie Pang on 2020/10/28.
// Copyright © 2020 掌淘科技. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface SMSSDKAuthToken : NSObject
/**
* @brief 运营商返回的Token
*/
@property (nonatomic, copy) NSString *opToken;
/**
* @brief MobToken
*/
@property (nonatomic, copy) NSString *token;
/**
* @brief 运营商类型 CMCC:中国移动通信, CUCC:中国联通通讯, CTCC:中国电信
*/
@property (nonatomic, copy) NSString *operatorType;
@end
@@ -0,0 +1,98 @@
//
// SMS_SDKResultHanderDef.h
// SMS_SDKDemo
//
// Created by 掌淘科技 on 14-7-11.
// Copyright (c) 2014年 掌淘科技. All rights reserved.
//
#import <Foundation/Foundation.h>
@class SMSSDKUserInfo;
@class SMSSDKAuthToken;
@class SMSSDKCallingResult;
typedef NS_ENUM(NSUInteger, SMSGetCodeMethod)
{
SMSGetCodeMethodSMS = 0, //文本短信方式
SMSGetCodeMethodVoice = 1 //语音方式
};
/**
* @brief 验证码获取回调
* @param error 当error为空时表示成功
*/
typedef void (^SMSGetCodeResultHandler) (NSError *error);
/**
* @from v2.0.7
* @brief 验证码验证回调
* @param error 当error为空时表示成功
*/
typedef void (^SMSCommitCodeResultHandler) (NSError *error);
/**
国家区号获取回调
@param error error 当error为空时表示成功
@param zonesArray 返回的区号数组
*/
typedef void (^SMSGetZoneResultHandler)(NSError *error,NSArray *zonesArray);
/**
通讯录好友获取回调
@param error 当error为空时表示成功
@param friendsArray 好友信息数组
*/
typedef void (^SMSGetContactsFriendsResultHandler)(NSError *error,NSArray *friendsArray);
/**
* @brief 提交用户信息回调
* @from v1.1.1
* @param error 当error为空时表示成功
*/
typedef void (^SMSSubmitUserInfoResultHandler) (NSError *error);
/**
联系人授权接受与拒绝回调
@param noMoreInquiries 不需要再显示
*/
typedef void(^SMSSDKDialogViewHandler)(BOOL noMoreInquiries);
/**
联系人授权是否能显示
@param canShow 能显示
*/
typedef void(^SMSSDKDialogViewShowHandler)(BOOL canShow);
/**
* @brief 请求手机号码认证Token结果回调
* @param model 包含token的具体信息
* @param error 为空时表示请求成功
*/
typedef void(^SMSSDKMobileAuthTokenResultHandler)(SMSSDKAuthToken *model, NSError *error);
/**
* @brief 请求手机号码认证Token回调
* @param dict 包含token的具体信息
* @param error 为空时表示请求成功
*/
typedef void(^SMSSDKMobileAuthTokenHandler)(NSDictionary *dict, NSError *error);
/**
* @brief 手机号码验证结果回调
* @param isValid 是否验证成功 YES成功 NO失败
* @param error 为空时表示请求成功
*/
typedef void(^SMSSDKMobileVerifyResultHandler)(BOOL isValid, NSError *error);
/**
* @brief 请求手机号码认证Token回调
* @param result SMSSDKCallingResult
*/
typedef void(^SMSSDKResultHandler)(SMSSDKCallingResult *result);
Binary file not shown.
Binary file not shown.
@@ -325,8 +325,7 @@
NSString *title = isTextCode ? @"短信验证码" : @"语音验证码"; NSString *title = isTextCode ? @"短信验证码" : @"语音验证码";
[self timerFireWithTimerButton:timeBtn addPhoneNumber:phoneNumber timeBtnFinalTitle:title]; [self timerFireWithTimerButton:timeBtn addPhoneNumber:phoneNumber timeBtnFinalTitle:title];
[SMSSDK getVerificationCodeByMethod:isTextCode ? SMSGetCodeMethodSMS : SMSGetCodeMethodVoice phoneNumber:phoneNumber zone:areaCode template:nil result:^(NSError *error) {
[SMSSDK getVerificationCodeByMethod:isTextCode ? SMSGetCodeMethodSMS : SMSGetCodeMethodVoice phoneNumber:phoneNumber zone:areaCode customIdentifier:nil result:^(NSError *error) {
if (!error) { if (!error) {
NSLog(@"获取验证码成功"); NSLog(@"获取验证码成功");
@@ -347,6 +346,7 @@
} }
}]; }];
;
} }
-(void)getverifyWithTimerButton:(UIButton*)timeBtn addphoneNumber:(NSString*)phoneNumber zone: -(void)getverifyWithTimerButton:(UIButton*)timeBtn addphoneNumber:(NSString*)phoneNumber zone:
@@ -356,7 +356,7 @@
[self timerFireWithTimerButton:timeBtn addPhoneNumber:phoneNumber timeBtnFinalTitle:@"语音验证码"]; [self timerFireWithTimerButton:timeBtn addPhoneNumber:phoneNumber timeBtnFinalTitle:@"语音验证码"];
[SMSSDK getVerificationCodeByMethod:SMSGetCodeMethodVoice phoneNumber:phoneNumber zone:areaCode customIdentifier:nil result:^(NSError *error) { [SMSSDK getVerificationCodeByMethod:SMSGetCodeMethodVoice phoneNumber:phoneNumber zone:areaCode template:nil result:^(NSError *error) {
if (!error) { if (!error) {
NSLog(@"获取验证码成功"); NSLog(@"获取验证码成功");
@@ -186,7 +186,7 @@ UserModel*model=[[DataCenter defaultDtacenter]valueForKey:@"UserLogIn"];
return; return;
} }
[SMSSDK commitVerificationCode:self.sureTextFiled.text phoneNumber:model.phoneNumber zone:self.areaCode result:^(SMSSDKUserInfo *userInfo, NSError *error) { [SMSSDK commitVerificationCode:self.sureTextFiled.text phoneNumber:model.phoneNumber zone:self.areaCode result:^(NSError *error) {
{ {
if (!error) if (!error)
@@ -216,7 +216,7 @@ extern BOOL firstLogIn;
// return; // return;
// } // }
[SMSSDK commitVerificationCode:self.yanzhengfeild.text phoneNumber:self.xinModelNumber.text zone:self.areaCode result:^(SMSSDKUserInfo *userInfo, NSError *error) { [SMSSDK commitVerificationCode:self.yanzhengfeild.text phoneNumber:self.xinModelNumber.text zone:self.areaCode result:^(NSError *error) {
{ {
if (!error) if (!error)
@@ -10,6 +10,7 @@
#import "ResetViewController.h" #import "ResetViewController.h"
#import "AFNetworking.h" #import "AFNetworking.h"
#import "XWCountryCodeController.h" #import "XWCountryCodeController.h"
#import <MOBFoundation/MobSDK+Privacy.h>
@interface ForgetViewController () @interface ForgetViewController ()
@property (weak, nonatomic) IBOutlet UIButton *timerButton; @property (weak, nonatomic) IBOutlet UIButton *timerButton;
@property (weak, nonatomic) IBOutlet UIButton *nextTepBtn; @property (weak, nonatomic) IBOutlet UIButton *nextTepBtn;
@@ -24,7 +25,8 @@
- (void)viewDidLoad { - (void)viewDidLoad {
[super viewDidLoad]; [super viewDidLoad];
[MobSDK uploadPrivacyPermissionStatus:YES onResult:^(BOOL success) {
}];
[self addTitleViewWithTitle:@"忘记密码"]; [self addTitleViewWithTitle:@"忘记密码"];
self.view.backgroundColor= [UIColor colorWithPatternImage:[UIImage imageNamed:@"enter_background"]]; self.view.backgroundColor= [UIColor colorWithPatternImage:[UIImage imageNamed:@"enter_background"]];
[self setTextkeyboadType]; [self setTextkeyboadType];
@@ -200,7 +202,7 @@
return; return;
} }
__weak typeof(self)weakSelf=self; __weak typeof(self)weakSelf=self;
[SMSSDK commitVerificationCode:weakSelf.verifyTextFiled.text phoneNumber:weakSelf.phoneNumberFiled.text zone:weakSelf.areaCode result:^(SMSSDKUserInfo *userInfo, NSError *error) { [SMSSDK commitVerificationCode:weakSelf.verifyTextFiled.text phoneNumber:weakSelf.phoneNumberFiled.text zone:weakSelf.areaCode result:^(NSError *error) {
{ {
if (!error) if (!error)
@@ -34,7 +34,7 @@
#import "IfishNewsModel.h" #import "IfishNewsModel.h"
#import <SMS_SDK/SMSSDK.h> #import <SMS_SDK/SMSSDK.h>
#import <SMS_SDK/Extend/SMSSDK+ExtexdMethods.h> #import <MOBFoundation/MobSDK+Privacy.h>
#import "XWCountryCodeController.h" #import "XWCountryCodeController.h"
#import <CoreLocation/CoreLocation.h> #import <CoreLocation/CoreLocation.h>
@interface RegistViewController ()<UITextFieldDelegate,UIAlertViewDelegate,MBProgressHUDDelegate,CLLocationManagerDelegate,WXApiManagerDelegate> @interface RegistViewController ()<UITextFieldDelegate,UIAlertViewDelegate,MBProgressHUDDelegate,CLLocationManagerDelegate,WXApiManagerDelegate>
@@ -85,6 +85,9 @@ extern BOOL formLogIn;
} }
- (void)viewDidLoad { - (void)viewDidLoad {
[super viewDidLoad]; [super viewDidLoad];
[MobSDK uploadPrivacyPermissionStatus:YES onResult:^(BOOL success) {
}];
_deviceArry=[[NSMutableArray alloc]init]; _deviceArry=[[NSMutableArray alloc]init];
//默认中国大陆 //默认中国大陆
self.areaCode = @"86"; self.areaCode = @"86";
@@ -444,7 +447,7 @@ extern BOOL formLogIn;
btn.userInteractionEnabled=NO; btn.userInteractionEnabled=NO;
btn.backgroundColor=[UIColor lightGrayColor]; btn.backgroundColor=[UIColor lightGrayColor];
[SMSSDK commitVerificationCode:self.verifyTextField.text phoneNumber:self.phoneNumberTextField.text zone:self.areaCode result:^(SMSSDKUserInfo *userInfo, NSError *error) { [SMSSDK commitVerificationCode:self.verifyTextField.text phoneNumber:self.phoneNumberTextField.text zone:self.areaCode result:^(NSError *error) {
{ {
if (!error) if (!error)
@@ -625,11 +628,15 @@ extern BOOL formLogIn;
_registBtn.userInteractionEnabled=YES; _registBtn.userInteractionEnabled=YES;
_registBtn.backgroundColor=COLOR_LABEL_TITLE; _registBtn.backgroundColor=COLOR_LABEL_TITLE;
gouxuan=NO; gouxuan=NO;
[MobSDK uploadPrivacyPermissionStatus:NO onResult:^(BOOL success) {
}];
}else{ }else{
[xuanBtn setBackgroundImage:[UIImage imageNamed:@"registered_icon_tick_selected"] forState:UIControlStateNormal]; [xuanBtn setBackgroundImage:[UIImage imageNamed:@"registered_icon_tick_selected"] forState:UIControlStateNormal];
_registBtn.userInteractionEnabled=NO; _registBtn.userInteractionEnabled=NO;
_registBtn.backgroundColor=[UIColor lightGrayColor]; _registBtn.backgroundColor=[UIColor lightGrayColor];
gouxuan=YES; gouxuan=YES;
[MobSDK uploadPrivacyPermissionStatus:YES onResult:^(BOOL success) {
}];
} }