UMessage.h
11.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
//
// UMessage.h
// UMessage
//
// Created by shile on 2017/4/1.
// Copyright © 2017年 umeng.com. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <UserNotifications/UserNotifications.h>
/** String type for alias
*/
//新浪微博
UIKIT_EXTERN NSString * __nonnull const kUMessageAliasTypeSina;
//腾讯微博
UIKIT_EXTERN NSString * __nonnull const kUMessageAliasTypeTencent;
//QQ
UIKIT_EXTERN NSString * __nonnull const kUMessageAliasTypeQQ;
//微信
UIKIT_EXTERN NSString * __nonnull const kUMessageAliasTypeWeiXin;
//百度
UIKIT_EXTERN NSString * __nonnull const kUMessageAliasTypeBaidu;
//人人网
UIKIT_EXTERN NSString * __nonnull const kUMessageAliasTypeRenRen;
//开心网
UIKIT_EXTERN NSString * __nonnull const kUMessageAliasTypeKaixin;
//豆瓣
UIKIT_EXTERN NSString * __nonnull const kUMessageAliasTypeDouban;
//facebook
UIKIT_EXTERN NSString * __nonnull const kUMessageAliasTypeFacebook;
//twitter
UIKIT_EXTERN NSString * __nonnull const kUMessageAliasTypeTwitter;
//error for handle
extern NSString * __nonnull const kUMessageErrorDomain;
typedef NS_ENUM(NSInteger, kUMessageError) {
/**未知错误*/
kUMessageErrorUnknown = 0,
/**响应出错*/
kUMessageErrorResponseErr = 1,
/**操作失败*/
kUMessageErrorOperateErr = 2,
/**参数非法*/
kUMessageErrorParamErr = 3,
/**条件不足(如:还未获取device_token,添加tag是不成功的)*/
kUMessageErrorDependsErr = 4,
/**服务器限定操作*/
kUMessageErrorServerSetErr = 5,
};
typedef NS_OPTIONS(NSUInteger, UMessageAuthorizationOptions) {
UMessageAuthorizationOptionNone = 0,
UMessageAuthorizationOptionBadge = (1 << 0),
UMessageAuthorizationOptionSound = (1 << 1),
UMessageAuthorizationOptionAlert = (1 << 2),
};
typedef void (^UMPlaunchFinishBlock)();
@interface UMessageRegisterEntity : NSObject
//需要注册的类型
@property (nonatomic, assign) NSInteger types;
@property (nonatomic, strong) NSSet * __nullable categories;
@end
/** UMessage:开发者使用主类(API)
*/
@interface UMessage : NSObject
///---------------------------------------------------------------------------------------
/// @name settings(most required)
///---------------------------------------------------------------------------------------
//--required
/**
友盟推送的注册接口
@param launchOptions 系统的launchOptions启动消息参数用于处理用户通过消息打开应用相关信息。
@param entity 友盟推送的注册类如果使用默认的注册,Entity设置为nil即可。如需其他的可选择其他参数,具体的参考demo或者文档。
@param completionHandler iOS10授权后的回调。
*/
+ (void)registerForRemoteNotificationsWithLaunchOptions:(NSDictionary * __nullable)launchOptions Entity:(UMessageRegisterEntity * __nullable)entity completionHandler:(void (^ __nullable)(BOOL granted, NSError *_Nullable error))completionHandler;
/** 解除RemoteNotification的注册(关闭消息推送,实际调用:[[UIApplication sharedApplication] unregisterForRemoteNotifications])
iOS10.0,iOS10.1两个版本存在系统bug,调用此方法后可能会导致无法再次打开推送
*/
+ (void)unregisterForRemoteNotifications;
/** 向友盟注册该设备的deviceToken,便于发送Push消息
@param deviceToken APNs返回的deviceToken
*/
+ (void)registerDeviceToken:( NSData * __nullable)deviceToken;
/** 应用处于运行时(前台、后台)的消息处理,回传点击数据
@param userInfo 消息参数
*/
+ (void)didReceiveRemoteNotification:( NSDictionary * __nullable)userInfo;
/** 设置是否允许SDK自动清空角标(默认开启)
@param value 是否开启角标清空
*/
+ (void)setBadgeClear:(BOOL)value;
/** 设置是否允许SDK当应用在前台运行收到Push时弹出Alert框(默认开启)
@param value 是否开启弹出框
*/
+ (void)setAutoAlert:(BOOL)value;
/** 为某个消息发送点击事件
*/
+ (void)sendClickReportForRemoteNotification:(NSDictionary * __nullable)userInfo;
///---------------------------------------------------------------------------------------
/// @name tag (optional)
///---------------------------------------------------------------------------------------
/** 获取当前绑定设备上的所有tag(每台设备最多绑定1024个tag)
@warning 获取列表的先决条件是已经成功获取到device_token,否则失败(kUMessageErrorDependsErr)
@param handle responseTags为绑定的tag
集合,remain剩余可用的tag数,为-1时表示异常,error为获取失败时的信息(ErrCode:kUMessageError)
*/
+ (void)getTags:(void (^__nonnull)(NSSet * __nonnull responseTags,NSInteger remain,NSError * __nullable error))handle;
/** 绑定一个或多个tag至设备,每台设备最多绑定1024个tag,超过1024个,绑定tag不再成功,可`removeTag`来精简空间
@warning 添加tag的先决条件是已经成功获取到device_token,否则直接添加失败(kUMessageErrorDependsErr)
@param tag tag标记,可以为单个tag(NSString)也可以为tag集合(NSArray、NSSet),单个tag最大允许长度128字节,编码UTF-8,超过长度绑定失败
@param handle responseTags为绑定的tag集合,remain剩余可用的tag数,为-1时表示异常,error为获取失败时的信息(ErrCode:kUMessageError)
*/
+ (void)addTags:(__nonnull id)tag response:( void (^ __nonnull)(id __nullable responseObject ,NSInteger remain,NSError * __nullable error))handle;
/** 删除设备中绑定的一个或多个tag
@warning 添加tag的先决条件是已经成功获取到device_token,否则失败(kUMessageErrorDependsErr)
@param tag tag标记,可以为单个tag(NSString)也可以为tag集合(NSArray、NSSet),单个tag最大允许长度128字节,编码UTF-8,超过长度删除失败
@param handle responseTags为绑定的tag集合,remain剩余可用的tag数,为-1时表示异常,error为获取失败时的信息(ErrCode:kUMessageError)
*/
+ (void)deleteTags:(__nonnull id)tag response:(void (^__nonnull)(id __nullable responseObject,NSInteger remain,NSError * __nullable error))handle;
///---------------------------------------------------------------------------------------
/// @name WeightedTag (optional)
///---------------------------------------------------------------------------------------
/**
绑定一个或多个weightedtag以及权值至设备
@warning 添加tag的先决条件是已经成功获取到device_token,否则直接添加失败(kUMessageErrorDependsErr)
@param weightedTag tag标记,为NSDictionary类型,key为weightedtag名称,value为权值。
@param handle responseTags为绑定的tag集合,remain剩余可用的tag数,为-1时表示异常,error为获取失败时的信息(ErrCode:kUMessageError)
*/
+ (void)addWeightedTags:(NSDictionary * __nonnull)weightedTag response:(void (^__nonnull)(id __nullable responseObject ,NSInteger remain,NSError * __nullable error))handle;
/** 获取当前绑定设备上的所有Weightedtag
@warning 获取列表的先决条件是已经成功获取到device_token,否则失败(kUMessageErrorDependsErr)
@param handle responseWeightedTags为绑定的WeightedTags字典,key为weightedtag名称,value为权值,remain剩余可用的weightedtag数,为-1时表示异常,error为获取失败时的信息(ErrCode:kUMessageError)
*/
+ (void)getWeightedTags:(void (^__nonnull)(NSDictionary * __nullable responseWeightedTags,NSInteger remain,NSError * __nullable error))handle;
/**
删除一个设备中绑定的一个或多个weightedtag
@warning 添加tag的先决条件是已经成功获取到device_token,否则直接添加失败(kUMessageErrorDependsErr)
@param weightedTags tag标记,为NSDictionary类型,key为tag名称,value为权值。
@param handle responseTags为绑定的tag集合,remain剩余可用的tag数,为-1时表示异常,error为获取失败时的信息(ErrCode:kUMessageError)
*/
+ (void)deleteWeightedTags:(id __nonnull)weightedTags response:(void (^__nonnull)(id __nullable responseObject,NSInteger remain,NSError * __nullable error))handle;
/// @name alias (optional)
///---------------------------------------------------------------------------------------
/** 绑定一个别名至设备(含账户,和平台类型)
@warning 添加Alias的先决条件是已经成功获取到device_token,否则失败(kUMessageErrorDependsErr)
@param name 账户,例如email
@param type 平台类型,参见本文件头部的`kUMessageAliasType...`,例如:kUMessageAliasTypeSina
@param handle block返回数据,error为获取失败时的信息,responseObject为成功返回的数据
*/
+ (void)addAlias:(NSString * __nonnull)name type:(NSString * __nonnull)type response:(void (^__nonnull)(id __nullable responseObject,NSError * __nullable error))handle;
/** 绑定一个别名至设备(含账户,和平台类型),并解绑这个别名曾今绑定过的设备。
@warning 添加Alias的先决条件是已经成功获取到device_token,否则失败(kUMessageErrorDependsErr)
@param name 账户,例如email
@param type 平台类型,参见本文件头部的`kUMessageAliasType...`,例如:kUMessageAliasTypeSina
@param handle block返回数据,error为获取失败时的信息,responseObject为成功返回的数据
*/
+ (void)setAlias:(NSString * __nonnull )name type:(NSString * __nonnull)type response:(void (^__nonnull)(id __nullable responseObject,NSError * __nullable error))handle;
/** 删除一个设备的别名绑定
@warning 删除Alias的先决条件是已经成功获取到device_token,否则失败(kUMessageErrorDependsErr)
@param name 账户,例如email
@param type 平台类型,参见本文件头部的`kUMessageAliasType...`,例如:kUMessageAliasTypeSina
@param handle block返回数据,error为获取失败时的信息,responseObject为成功返回的数据
*/
+ (void)removeAlias:(NSString * __nonnull)name type:(NSString * __nonnull)type response:(void (^__nonnull)(id __nullable responseObject, NSError * __nullable error))handle;
/** 添加一个启动页的开屏消息
*/
+(void)addLaunchMessage;
/** 添加一个插屏消息
@warning 需先在触发一次才可以在后台配置中找到该标识
@param label 当前位置的标识
*/
+(void)addCardMessageWithLabel:(NSString* __nonnull)label;
/**
@warning 需先在触发一次才可以在后台配置中找到该标识
添加一个自定义插屏消息
@param portraitsize portrait时显示的size
@param landscapesize landscape时显示的大小
@param button button 可以自定义的button
@param label 标识
*/
+(void)addCustomCardMessageWithPortraitSize:(CGSize )portraitsize LandscapeSize:(CGSize )landscapesize CloseBtn:(UIButton * __nullable )button Label:(NSString * __nonnull)label umCustomCloseButtonDisplayMode:(BOOL )displaymode;
/**
@warning 需先在触发一次才可以在后台配置中找到该标识
增加一个文本插屏消息
@param label 当前位置的标识
*/
+(void)addPlainTextCardMessageWithTitleFont:(UIFont * __nullable)titlefont ContentFont:(UIFont * __nullable)contentfont buttonFont:(UIFont * __nullable)buttonfont Label:(NSString * __nonnull)label;;
/**
设置应用内通知的模式
@param debugmode 是否是debug模式
*/
+(void)openDebugMode:(BOOL)debugmode;
/**
@warning 注意此方法使用场景必须有Navigation
设置webViewController在.h文件中声明一个叫url的参数,SDK内部会去调用
@param webViewClassString webViewController的Class String
*/
+(void)setWebViewClassString:(NSString * __nonnull)webViewClassString;
@end