feat: 自定义的插件

This commit is contained in:
zoujing
2023-04-10 18:48:16 +08:00
commit e1795f2de2
621 changed files with 18614 additions and 0 deletions

Binary file not shown.

View File

@@ -0,0 +1,149 @@
//
// DTOpenAPI.h
// DTShareSDK
//
// Created by 青山 on 15/12/3.
// Copyright (c) 2015年 Alibaba(China)Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
@class DTBaseReq;
@class DTBaseResp;
/**
接受并处理来自钉钉的事件消息.
钉钉向第三方APP发送事件期间, 钉钉界面会向切换到第三方APP. DTOpenAPIDelegate 会在 +[DTOpenAPI handleOpenURL:delegate:] 中触发.
*/
@protocol DTOpenAPIDelegate <NSObject>
@optional
/**
收到一个来自钉钉的请求, 第三方APP处理完成后要调用 +[DTOpenAPI sendResp:] 将处理结果返回给钉钉.
@param req 来自钉钉具体的请求.
*/
- (void)onReq:(DTBaseReq *)req;
/**
第三方APP使用 +[DTOpenAPI sendReq:] 向钉钉发送消息后, 钉钉会处理完请求后会回调该接口.
@param resp 来自钉钉具体的响应.
*/
- (void)onResp:(DTBaseResp *)resp;
@end
/**
钉钉SDK接口函数类.
*/
@interface DTOpenAPI : NSObject
/**
第三方APP向钉钉注册申请的appId.
第三方应用程序需要在程序启动时调用. @note 请在主线程中调用此方法.
@param appid 在钉钉开放平台申请的应用ID.
@return YES 注册成功. NO 注册失败.
*/
+ (BOOL)registerApp:(NSString *)appId;
/**
第三方APP向钉钉注册申请的appId.
第三方应用程序需要在程序启动时调用. @note 请在主线程中调用此方法.
@param appid 在钉钉开放平台申请的应用ID.
@param appDescription 第三方描述信息, 长度不超过1K.
@retrun YES 注册成功. NO 注册失败.
*/
+ (BOOL)registerApp:(NSString *)appId appDescription:(NSString *)appDescription;
/**
第三方应用处理钉钉回调的接口.
第三方应用需要在 -[UIApplicationDelegate application:openURL:sourceApplication:annotation:] 或者 -[UIApplicationDelegate application:openURL:options:] 中调用该方法.
@param url 钉钉给第三方回调的URL.
@param delegate 实现DTOpenAPIDelegate的对象, 通过DTOpenAPIDelegate处理钉钉的回调结果.
@return YES 回调处理成功. NO 回调处理失败.
*/
+ (BOOL)handleOpenURL:(NSURL *)URL delegate:(id<DTOpenAPIDelegate>)delegate;
/**
检测设备是否安装了钉钉客户端.
@return YES 设备安装了钉钉客户端. NO 设备没有安装钉钉客户端.
*/
+ (BOOL)isDingTalkInstalled;
/**
检测设备安装的钉钉是否支持钉钉OpenAPI.
@return YES 设备安装的钉钉客户端支持钉钉OpenAPI. NO 设备安装的钉钉客户端不支持钉钉OpenAPI.
*/
+ (BOOL)isDingTalkSupportOpenAPI;
/**
检测设备安装的钉钉是否支持钉钉SSO授权.
@return YES 设备安装的钉钉客户端支持钉钉SSO授权. NO 设备安装的钉钉客户端不支持钉钉SSO授权.
*/
+ (BOOL)isDingTalkSupportSSO;
/**
获取钉钉在AppStore的安装地址.
@return 钉钉在AppStore的安装地址.
*/
+ (NSString *)appStoreURLOfDingTalk;
/**
获取当前OpenSDK的版本号.
@return 当前OpenSDK的版本号.
*/
+ (NSString *)openAPIVersion;
/**
打开钉钉客户端.
@return YES 成功打开钉钉客户端. NO 未能打开钉钉客户端.
*/
+ (BOOL)openDingTalk;
/**
打开支持SSO授权的钉钉客户端
@return YES 成功打开钉钉客户端. NO 未能打开钉钉客户端.
*/
+ (BOOL)openDingTalkForSSO;
/**
发送请求到钉钉, 钉钉处理完请求后会回调第三方APP, 第三方APP需在 -[DTOpenAPIDelegate onReq:] 处理钉钉的响应结果.
@param req 封装请求的对象. 支持的类型: DTSendMessageToDingTalkReq.
@return YES 请求发送成功. NO 请求发送失败.
*/
+ (BOOL)sendReq:(DTBaseReq *)req;
/**
第三方APP需在 -[DTOpenAPIDelegate onResp:] 处理完收到钉钉的请求后, 使用改方法将处理结果返回给钉钉, 界面会切换到钉钉客户端.
@param req 封装响应的对象. 支持的类型:DTSendMessageToDingTalkResp.
@return YES 响应发送成功. NO 响应发送失败.
*/
+ (BOOL)sendResp:(DTBaseResp *)resp;
@end

View File

@@ -0,0 +1,197 @@
//
// DTOpenAPIObject.h
// DTShareSDK
//
// Created by 青山 on 15/12/3.
// Copyright (c) 2015年 Alibaba(China)Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
///-----------------------------------------------------------------------------
/// @name 基础类
///-----------------------------------------------------------------------------
/**
错误码.
@since v1.0.0
*/
typedef NS_ENUM(NSInteger, DTOpenAPIErrorCode)
{
DTOpenAPISuccess = 0, /**< 成功. @since v1.0.0 */
DTOpenAPIErrorCodeCommon = -1, /**< 通用错误. @since v1.0.0 */
DTOpenAPIErrorCodeUserCancel = -2, /**< 用户取消. @since v1.0.0 */
DTOpenAPIErrorCodeSendFail = -3, /**< 发送失败. @since v1.0.0 */
DTOpenAPIErrorCodeAuthDeny = -4, /**< 授权失败. @since v1.0.0 */
DTOpenAPIErrorCodeUnsupport = -5, /**< DingTalk不支持. @since v1.0.0 */
};
/**
分享场景.
@since v1.0.0
*/
typedef NS_ENUM(NSInteger, DTScene)
{
DTSceneSession = 0, /**< 会话. @since v1.0.0 */
};
/**
分享SDK请求类的基类.
*/
@interface DTBaseReq : NSObject
@end
/**
分享SDK响应类的基类.
*/
@interface DTBaseResp : NSObject
/// 错误码.
@property (nonatomic, assign) DTOpenAPIErrorCode errorCode;
/// 错误提示.
@property (nonatomic, copy) NSString *errorMessage;
@end
@interface DTAuthorizeReq : DTBaseReq
/**
钉钉开放平台第三方应用授权回调页地址
@warning 必须保证和在钉钉开放平台应用管理界面配置的“授权回调页”地址一致
*/
@property (nonatomic, copy) NSString *redirectURI;
/**
钉钉开放平台第三方应用bundleId
*/
@property (nonatomic, copy) NSString *bundleId;
/**
当用户没有安装钉钉客户端或钉钉客户端过低无法支持SSO的时候返回给应用处理
默认为YES
*/
@property (nonatomic, copy) void (^shouldShowWebViewForAuthIfCannotSSO)();
@end
/**
钉钉客户端处理完第三方应用的认证申请后向第三方应用回送的处理结果
*/
@interface DTAuthorizeResp : DTBaseResp
/**
临时授权码
*/
@property (nonatomic, copy) NSString *accessCode;
@end
///-----------------------------------------------------------------------------
/// @name 分享
///-----------------------------------------------------------------------------
/**
第三方APP向钉钉发送消息的请求类.
第三方APP需要向+[DTOpenAPI sendReq:]方法传入一个构建好的DTSendMessageToDingTalkReq对象向钉钉发送消息.
*/
@class DTMediaMessage;
@interface DTSendMessageToDingTalkReq : DTBaseReq
/// 向钉钉发送的消息.
@property (nonatomic, strong) DTMediaMessage *message;
/// 向钉钉发送消息的场景.
@property (nonatomic, assign) DTScene scene;
@end
/**
第三方APP向钉钉发送消息的响应类.
第三方APP调用+[DTOpenAPI sendReq:]方法向钉钉发送消息后, 钉钉通过-[DTOpenAPIDelegate onResp:]向第三方应用传递DTSendMessageToDingTalkResp对象告知处理结果.
*/
@interface DTSendMessageToDingTalkResp : DTBaseResp
@end
/**
多媒体消息类.
用于钉钉和第三方程序之间传递消息的多媒体消息内容.
*/
@interface DTMediaMessage : NSObject
/// 标题. @note 长度不超过 512Byte.
@property (nonatomic, copy) NSString *title;
/// 描述内容. @note 长度不超过 1K.
@property (nonatomic, copy) NSString *messageDescription;
/// 缩略图数据. @note 长度不超过 32K.
@property (nonatomic, strong) NSData *thumbData;
/// 缩略图URL. @note 长度不超过 10K.
@property (nonatomic, copy) NSString *thumbURL;
/// 多媒体数据对象. 可以为DTMediaTextObject, DTMediaImageObject, DTMediaWebObject等.
@property (nonatomic, strong) id mediaObject;
@end
/**
多文本消息中的文本对象.
*/
@interface DTMediaTextObject : NSObject
/// 文本内容. @note 长度不超过 1K.
@property (nonatomic, copy) NSString *text;
@end
/**
多文本消息中的图片对象.
*/
@interface DTMediaImageObject : NSObject
/// 图片内容. @note 大小不能超过 10M.
@property (nonatomic, strong) NSData *imageData;
/// 图片URL. @note 长度不能超过 10K.
@property (nonatomic, copy) NSString *imageURL;
@end
/**
多文本消息中的Web页面对象.
*/
@interface DTMediaWebObject : NSObject
/// Web页面的URL. @note 长度不能超过 10K.
@property (nonatomic, copy) NSString *pageURL;
@end
/**
支付宝红包对象(仅支付宝可用).
*/
@interface DTMediaAlipayObject : NSObject
/// 支付宝红包页面URL. @note 长度不能超过 10K.
@property (nonatomic, copy) NSString *pageURL;
@end

View File

@@ -0,0 +1,15 @@
//
// DTShareKit.h
// DTShareKit
//
// Created by 青山 on 15/12/6.
// Copyright (c) 2015年 Alibaba(China)Technology Co.,Ltd. All rights reserved.
//
#ifndef DTOpenKit_h
#define DTOpenKit_h
#import "DTOpenAPI.h"
#import "DTOpenAPIObject.h"
#endif /* DTOpenKit_h */

Binary file not shown.

View File

@@ -0,0 +1,149 @@
//
// DTOpenAPI.h
// DTShareSDK
//
// Created by 青山 on 15/12/3.
// Copyright (c) 2015年 Alibaba(China)Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
@class DTBaseReq;
@class DTBaseResp;
/**
接受并处理来自钉钉的事件消息.
钉钉向第三方APP发送事件期间, 钉钉界面会向切换到第三方APP. DTOpenAPIDelegate 会在 +[DTOpenAPI handleOpenURL:delegate:] 中触发.
*/
@protocol DTOpenAPIDelegate <NSObject>
@optional
/**
收到一个来自钉钉的请求, 第三方APP处理完成后要调用 +[DTOpenAPI sendResp:] 将处理结果返回给钉钉.
@param req 来自钉钉具体的请求.
*/
- (void)onReq:(DTBaseReq *)req;
/**
第三方APP使用 +[DTOpenAPI sendReq:] 向钉钉发送消息后, 钉钉会处理完请求后会回调该接口.
@param resp 来自钉钉具体的响应.
*/
- (void)onResp:(DTBaseResp *)resp;
@end
/**
钉钉SDK接口函数类.
*/
@interface DTOpenAPI : NSObject
/**
第三方APP向钉钉注册申请的appId.
第三方应用程序需要在程序启动时调用. @note 请在主线程中调用此方法.
@param appid 在钉钉开放平台申请的应用ID.
@return YES 注册成功. NO 注册失败.
*/
+ (BOOL)registerApp:(NSString *)appId;
/**
第三方APP向钉钉注册申请的appId.
第三方应用程序需要在程序启动时调用. @note 请在主线程中调用此方法.
@param appid 在钉钉开放平台申请的应用ID.
@param appDescription 第三方描述信息, 长度不超过1K.
@retrun YES 注册成功. NO 注册失败.
*/
+ (BOOL)registerApp:(NSString *)appId appDescription:(NSString *)appDescription;
/**
第三方应用处理钉钉回调的接口.
第三方应用需要在 -[UIApplicationDelegate application:openURL:sourceApplication:annotation:] 或者 -[UIApplicationDelegate application:openURL:options:] 中调用该方法.
@param url 钉钉给第三方回调的URL.
@param delegate 实现DTOpenAPIDelegate的对象, 通过DTOpenAPIDelegate处理钉钉的回调结果.
@return YES 回调处理成功. NO 回调处理失败.
*/
+ (BOOL)handleOpenURL:(NSURL *)URL delegate:(id<DTOpenAPIDelegate>)delegate;
/**
检测设备是否安装了钉钉客户端.
@return YES 设备安装了钉钉客户端. NO 设备没有安装钉钉客户端.
*/
+ (BOOL)isDingTalkInstalled;
/**
检测设备安装的钉钉是否支持钉钉OpenAPI.
@return YES 设备安装的钉钉客户端支持钉钉OpenAPI. NO 设备安装的钉钉客户端不支持钉钉OpenAPI.
*/
+ (BOOL)isDingTalkSupportOpenAPI;
/**
检测设备安装的钉钉是否支持钉钉SSO授权.
@return YES 设备安装的钉钉客户端支持钉钉SSO授权. NO 设备安装的钉钉客户端不支持钉钉SSO授权.
*/
+ (BOOL)isDingTalkSupportSSO;
/**
获取钉钉在AppStore的安装地址.
@return 钉钉在AppStore的安装地址.
*/
+ (NSString *)appStoreURLOfDingTalk;
/**
获取当前OpenSDK的版本号.
@return 当前OpenSDK的版本号.
*/
+ (NSString *)openAPIVersion;
/**
打开钉钉客户端.
@return YES 成功打开钉钉客户端. NO 未能打开钉钉客户端.
*/
+ (BOOL)openDingTalk;
/**
打开支持SSO授权的钉钉客户端
@return YES 成功打开钉钉客户端. NO 未能打开钉钉客户端.
*/
+ (BOOL)openDingTalkForSSO;
/**
发送请求到钉钉, 钉钉处理完请求后会回调第三方APP, 第三方APP需在 -[DTOpenAPIDelegate onReq:] 处理钉钉的响应结果.
@param req 封装请求的对象. 支持的类型: DTSendMessageToDingTalkReq.
@return YES 请求发送成功. NO 请求发送失败.
*/
+ (BOOL)sendReq:(DTBaseReq *)req;
/**
第三方APP需在 -[DTOpenAPIDelegate onResp:] 处理完收到钉钉的请求后, 使用改方法将处理结果返回给钉钉, 界面会切换到钉钉客户端.
@param req 封装响应的对象. 支持的类型:DTSendMessageToDingTalkResp.
@return YES 响应发送成功. NO 响应发送失败.
*/
+ (BOOL)sendResp:(DTBaseResp *)resp;
@end

View File

@@ -0,0 +1,197 @@
//
// DTOpenAPIObject.h
// DTShareSDK
//
// Created by 青山 on 15/12/3.
// Copyright (c) 2015年 Alibaba(China)Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
///-----------------------------------------------------------------------------
/// @name 基础类
///-----------------------------------------------------------------------------
/**
错误码.
@since v1.0.0
*/
typedef NS_ENUM(NSInteger, DTOpenAPIErrorCode)
{
DTOpenAPISuccess = 0, /**< 成功. @since v1.0.0 */
DTOpenAPIErrorCodeCommon = -1, /**< 通用错误. @since v1.0.0 */
DTOpenAPIErrorCodeUserCancel = -2, /**< 用户取消. @since v1.0.0 */
DTOpenAPIErrorCodeSendFail = -3, /**< 发送失败. @since v1.0.0 */
DTOpenAPIErrorCodeAuthDeny = -4, /**< 授权失败. @since v1.0.0 */
DTOpenAPIErrorCodeUnsupport = -5, /**< DingTalk不支持. @since v1.0.0 */
};
/**
分享场景.
@since v1.0.0
*/
typedef NS_ENUM(NSInteger, DTScene)
{
DTSceneSession = 0, /**< 会话. @since v1.0.0 */
};
/**
分享SDK请求类的基类.
*/
@interface DTBaseReq : NSObject
@end
/**
分享SDK响应类的基类.
*/
@interface DTBaseResp : NSObject
/// 错误码.
@property (nonatomic, assign) DTOpenAPIErrorCode errorCode;
/// 错误提示.
@property (nonatomic, copy) NSString *errorMessage;
@end
@interface DTAuthorizeReq : DTBaseReq
/**
钉钉开放平台第三方应用授权回调页地址
@warning 必须保证和在钉钉开放平台应用管理界面配置的“授权回调页”地址一致
*/
@property (nonatomic, copy) NSString *redirectURI;
/**
钉钉开放平台第三方应用bundleId
*/
@property (nonatomic, copy) NSString *bundleId;
/**
当用户没有安装钉钉客户端或钉钉客户端过低无法支持SSO的时候返回给应用处理
默认为YES
*/
@property (nonatomic, copy) void (^shouldShowWebViewForAuthIfCannotSSO)();
@end
/**
钉钉客户端处理完第三方应用的认证申请后向第三方应用回送的处理结果
*/
@interface DTAuthorizeResp : DTBaseResp
/**
临时授权码
*/
@property (nonatomic, copy) NSString *accessCode;
@end
///-----------------------------------------------------------------------------
/// @name 分享
///-----------------------------------------------------------------------------
/**
第三方APP向钉钉发送消息的请求类.
第三方APP需要向+[DTOpenAPI sendReq:]方法传入一个构建好的DTSendMessageToDingTalkReq对象向钉钉发送消息.
*/
@class DTMediaMessage;
@interface DTSendMessageToDingTalkReq : DTBaseReq
/// 向钉钉发送的消息.
@property (nonatomic, strong) DTMediaMessage *message;
/// 向钉钉发送消息的场景.
@property (nonatomic, assign) DTScene scene;
@end
/**
第三方APP向钉钉发送消息的响应类.
第三方APP调用+[DTOpenAPI sendReq:]方法向钉钉发送消息后, 钉钉通过-[DTOpenAPIDelegate onResp:]向第三方应用传递DTSendMessageToDingTalkResp对象告知处理结果.
*/
@interface DTSendMessageToDingTalkResp : DTBaseResp
@end
/**
多媒体消息类.
用于钉钉和第三方程序之间传递消息的多媒体消息内容.
*/
@interface DTMediaMessage : NSObject
/// 标题. @note 长度不超过 512Byte.
@property (nonatomic, copy) NSString *title;
/// 描述内容. @note 长度不超过 1K.
@property (nonatomic, copy) NSString *messageDescription;
/// 缩略图数据. @note 长度不超过 32K.
@property (nonatomic, strong) NSData *thumbData;
/// 缩略图URL. @note 长度不超过 10K.
@property (nonatomic, copy) NSString *thumbURL;
/// 多媒体数据对象. 可以为DTMediaTextObject, DTMediaImageObject, DTMediaWebObject等.
@property (nonatomic, strong) id mediaObject;
@end
/**
多文本消息中的文本对象.
*/
@interface DTMediaTextObject : NSObject
/// 文本内容. @note 长度不超过 1K.
@property (nonatomic, copy) NSString *text;
@end
/**
多文本消息中的图片对象.
*/
@interface DTMediaImageObject : NSObject
/// 图片内容. @note 大小不能超过 10M.
@property (nonatomic, strong) NSData *imageData;
/// 图片URL. @note 长度不能超过 10K.
@property (nonatomic, copy) NSString *imageURL;
@end
/**
多文本消息中的Web页面对象.
*/
@interface DTMediaWebObject : NSObject
/// Web页面的URL. @note 长度不能超过 10K.
@property (nonatomic, copy) NSString *pageURL;
@end
/**
支付宝红包对象(仅支付宝可用).
*/
@interface DTMediaAlipayObject : NSObject
/// 支付宝红包页面URL. @note 长度不能超过 10K.
@property (nonatomic, copy) NSString *pageURL;
@end

View File

@@ -0,0 +1,15 @@
//
// DTShareKit.h
// DTShareKit
//
// Created by 青山 on 15/12/6.
// Copyright (c) 2015年 Alibaba(China)Technology Co.,Ltd. All rights reserved.
//
#ifndef DTOpenKit_h
#define DTOpenKit_h
#import "DTOpenAPI.h"
#import "DTOpenAPIObject.h"
#endif /* DTOpenKit_h */

Binary file not shown.

View File

@@ -0,0 +1,149 @@
//
// DTOpenAPI.h
// DTShareSDK
//
// Created by 青山 on 15/12/3.
// Copyright (c) 2015年 Alibaba(China)Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
@class DTBaseReq;
@class DTBaseResp;
/**
接受并处理来自钉钉的事件消息.
钉钉向第三方APP发送事件期间, 钉钉界面会向切换到第三方APP. DTOpenAPIDelegate 会在 +[DTOpenAPI handleOpenURL:delegate:] 中触发.
*/
@protocol DTOpenAPIDelegate <NSObject>
@optional
/**
收到一个来自钉钉的请求, 第三方APP处理完成后要调用 +[DTOpenAPI sendResp:] 将处理结果返回给钉钉.
@param req 来自钉钉具体的请求.
*/
- (void)onReq:(DTBaseReq *)req;
/**
第三方APP使用 +[DTOpenAPI sendReq:] 向钉钉发送消息后, 钉钉会处理完请求后会回调该接口.
@param resp 来自钉钉具体的响应.
*/
- (void)onResp:(DTBaseResp *)resp;
@end
/**
钉钉SDK接口函数类.
*/
@interface DTOpenAPI : NSObject
/**
第三方APP向钉钉注册申请的appId.
第三方应用程序需要在程序启动时调用. @note 请在主线程中调用此方法.
@param appid 在钉钉开放平台申请的应用ID.
@return YES 注册成功. NO 注册失败.
*/
+ (BOOL)registerApp:(NSString *)appId;
/**
第三方APP向钉钉注册申请的appId.
第三方应用程序需要在程序启动时调用. @note 请在主线程中调用此方法.
@param appid 在钉钉开放平台申请的应用ID.
@param appDescription 第三方描述信息, 长度不超过1K.
@retrun YES 注册成功. NO 注册失败.
*/
+ (BOOL)registerApp:(NSString *)appId appDescription:(NSString *)appDescription;
/**
第三方应用处理钉钉回调的接口.
第三方应用需要在 -[UIApplicationDelegate application:openURL:sourceApplication:annotation:] 或者 -[UIApplicationDelegate application:openURL:options:] 中调用该方法.
@param url 钉钉给第三方回调的URL.
@param delegate 实现DTOpenAPIDelegate的对象, 通过DTOpenAPIDelegate处理钉钉的回调结果.
@return YES 回调处理成功. NO 回调处理失败.
*/
+ (BOOL)handleOpenURL:(NSURL *)URL delegate:(id<DTOpenAPIDelegate>)delegate;
/**
检测设备是否安装了钉钉客户端.
@return YES 设备安装了钉钉客户端. NO 设备没有安装钉钉客户端.
*/
+ (BOOL)isDingTalkInstalled;
/**
检测设备安装的钉钉是否支持钉钉OpenAPI.
@return YES 设备安装的钉钉客户端支持钉钉OpenAPI. NO 设备安装的钉钉客户端不支持钉钉OpenAPI.
*/
+ (BOOL)isDingTalkSupportOpenAPI;
/**
检测设备安装的钉钉是否支持钉钉SSO授权.
@return YES 设备安装的钉钉客户端支持钉钉SSO授权. NO 设备安装的钉钉客户端不支持钉钉SSO授权.
*/
+ (BOOL)isDingTalkSupportSSO;
/**
获取钉钉在AppStore的安装地址.
@return 钉钉在AppStore的安装地址.
*/
+ (NSString *)appStoreURLOfDingTalk;
/**
获取当前OpenSDK的版本号.
@return 当前OpenSDK的版本号.
*/
+ (NSString *)openAPIVersion;
/**
打开钉钉客户端.
@return YES 成功打开钉钉客户端. NO 未能打开钉钉客户端.
*/
+ (BOOL)openDingTalk;
/**
打开支持SSO授权的钉钉客户端
@return YES 成功打开钉钉客户端. NO 未能打开钉钉客户端.
*/
+ (BOOL)openDingTalkForSSO;
/**
发送请求到钉钉, 钉钉处理完请求后会回调第三方APP, 第三方APP需在 -[DTOpenAPIDelegate onReq:] 处理钉钉的响应结果.
@param req 封装请求的对象. 支持的类型: DTSendMessageToDingTalkReq.
@return YES 请求发送成功. NO 请求发送失败.
*/
+ (BOOL)sendReq:(DTBaseReq *)req;
/**
第三方APP需在 -[DTOpenAPIDelegate onResp:] 处理完收到钉钉的请求后, 使用改方法将处理结果返回给钉钉, 界面会切换到钉钉客户端.
@param req 封装响应的对象. 支持的类型:DTSendMessageToDingTalkResp.
@return YES 响应发送成功. NO 响应发送失败.
*/
+ (BOOL)sendResp:(DTBaseResp *)resp;
@end

View File

@@ -0,0 +1,197 @@
//
// DTOpenAPIObject.h
// DTShareSDK
//
// Created by 青山 on 15/12/3.
// Copyright (c) 2015年 Alibaba(China)Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
///-----------------------------------------------------------------------------
/// @name 基础类
///-----------------------------------------------------------------------------
/**
错误码.
@since v1.0.0
*/
typedef NS_ENUM(NSInteger, DTOpenAPIErrorCode)
{
DTOpenAPISuccess = 0, /**< 成功. @since v1.0.0 */
DTOpenAPIErrorCodeCommon = -1, /**< 通用错误. @since v1.0.0 */
DTOpenAPIErrorCodeUserCancel = -2, /**< 用户取消. @since v1.0.0 */
DTOpenAPIErrorCodeSendFail = -3, /**< 发送失败. @since v1.0.0 */
DTOpenAPIErrorCodeAuthDeny = -4, /**< 授权失败. @since v1.0.0 */
DTOpenAPIErrorCodeUnsupport = -5, /**< DingTalk不支持. @since v1.0.0 */
};
/**
分享场景.
@since v1.0.0
*/
typedef NS_ENUM(NSInteger, DTScene)
{
DTSceneSession = 0, /**< 会话. @since v1.0.0 */
};
/**
分享SDK请求类的基类.
*/
@interface DTBaseReq : NSObject
@end
/**
分享SDK响应类的基类.
*/
@interface DTBaseResp : NSObject
/// 错误码.
@property (nonatomic, assign) DTOpenAPIErrorCode errorCode;
/// 错误提示.
@property (nonatomic, copy) NSString *errorMessage;
@end
@interface DTAuthorizeReq : DTBaseReq
/**
钉钉开放平台第三方应用授权回调页地址
@warning 必须保证和在钉钉开放平台应用管理界面配置的“授权回调页”地址一致
*/
@property (nonatomic, copy) NSString *redirectURI;
/**
钉钉开放平台第三方应用bundleId
*/
@property (nonatomic, copy) NSString *bundleId;
/**
当用户没有安装钉钉客户端或钉钉客户端过低无法支持SSO的时候返回给应用处理
默认为YES
*/
@property (nonatomic, copy) void (^shouldShowWebViewForAuthIfCannotSSO)();
@end
/**
钉钉客户端处理完第三方应用的认证申请后向第三方应用回送的处理结果
*/
@interface DTAuthorizeResp : DTBaseResp
/**
临时授权码
*/
@property (nonatomic, copy) NSString *accessCode;
@end
///-----------------------------------------------------------------------------
/// @name 分享
///-----------------------------------------------------------------------------
/**
第三方APP向钉钉发送消息的请求类.
第三方APP需要向+[DTOpenAPI sendReq:]方法传入一个构建好的DTSendMessageToDingTalkReq对象向钉钉发送消息.
*/
@class DTMediaMessage;
@interface DTSendMessageToDingTalkReq : DTBaseReq
/// 向钉钉发送的消息.
@property (nonatomic, strong) DTMediaMessage *message;
/// 向钉钉发送消息的场景.
@property (nonatomic, assign) DTScene scene;
@end
/**
第三方APP向钉钉发送消息的响应类.
第三方APP调用+[DTOpenAPI sendReq:]方法向钉钉发送消息后, 钉钉通过-[DTOpenAPIDelegate onResp:]向第三方应用传递DTSendMessageToDingTalkResp对象告知处理结果.
*/
@interface DTSendMessageToDingTalkResp : DTBaseResp
@end
/**
多媒体消息类.
用于钉钉和第三方程序之间传递消息的多媒体消息内容.
*/
@interface DTMediaMessage : NSObject
/// 标题. @note 长度不超过 512Byte.
@property (nonatomic, copy) NSString *title;
/// 描述内容. @note 长度不超过 1K.
@property (nonatomic, copy) NSString *messageDescription;
/// 缩略图数据. @note 长度不超过 32K.
@property (nonatomic, strong) NSData *thumbData;
/// 缩略图URL. @note 长度不超过 10K.
@property (nonatomic, copy) NSString *thumbURL;
/// 多媒体数据对象. 可以为DTMediaTextObject, DTMediaImageObject, DTMediaWebObject等.
@property (nonatomic, strong) id mediaObject;
@end
/**
多文本消息中的文本对象.
*/
@interface DTMediaTextObject : NSObject
/// 文本内容. @note 长度不超过 1K.
@property (nonatomic, copy) NSString *text;
@end
/**
多文本消息中的图片对象.
*/
@interface DTMediaImageObject : NSObject
/// 图片内容. @note 大小不能超过 10M.
@property (nonatomic, strong) NSData *imageData;
/// 图片URL. @note 长度不能超过 10K.
@property (nonatomic, copy) NSString *imageURL;
@end
/**
多文本消息中的Web页面对象.
*/
@interface DTMediaWebObject : NSObject
/// Web页面的URL. @note 长度不能超过 10K.
@property (nonatomic, copy) NSString *pageURL;
@end
/**
支付宝红包对象(仅支付宝可用).
*/
@interface DTMediaAlipayObject : NSObject
/// 支付宝红包页面URL. @note 长度不能超过 10K.
@property (nonatomic, copy) NSString *pageURL;
@end

View File

@@ -0,0 +1,15 @@
//
// DTShareKit.h
// DTShareKit
//
// Created by 青山 on 15/12/6.
// Copyright (c) 2015年 Alibaba(China)Technology Co.,Ltd. All rights reserved.
//
#ifndef DTOpenKit_h
#define DTOpenKit_h
#import "DTOpenAPI.h"
#import "DTOpenAPIObject.h"
#endif /* DTOpenKit_h */