Guide de l’API iOS
Version applicable
La version du SDK MTPush iOS correspondant à cet article est : v3.0.0 et versions ultérieures.
Configurer le centre de données
Description de la fonction
Cette fonctionnalité est utilisée pour correspondre au centre de données que vous avez sélectionné dans le portail EngageLab. Veuillez vous assurer que le centre de données que vous définissez est cohérent avec celui sélectionné sur le portail. S’il n’est pas défini, le SDK utilisera le nœud du centre de données de Singapour par défaut.
Dans la version 4.3.5 et les versions ultérieures, cette interface n'est pas valide. Les développeurs n'ont pas besoin d'appeler manuellement cette interface pour configurer le centre de données. Le SDK correspondra automatiquement au centre de données correspondant en fonction de la clé d'application.
Versions prises en charge
Version de départ prise en charge : v4.3.0
Version invalide
Version commençant à expirer : v4.3.5
Définition de l'interface
- (void)setSiteName:(NSString *)siteName;
Description du paramètre
*nom du site
- Nom du centre de données
Instructions d'appel
Veuillez appeler cette interface avant d'appeler l'interface d'initialisation (setupWithOption:channel:apsForProduction:advertisingIdentifier).
API de balises et d'alias (iOS)
Description de la fonction
Rappel chaleureux, veuillez faire attention au résultat du rappel lors de la définition de l'alias de l'étiquette.
peut être poussé vers la cible uniquement si la valeur de retour de rappel est 0 et que le paramètre est réussi. Sinon, l'API du serveur renverra une erreur 1011. Toutes les fonctions de rappel s'exécutent sur le thread principal.
Fournit plusieurs API associées pour exploiter les alias et les balises.
Ces API peuvent être appelées n'importe où dans l'application.
Alias alias
Donnez un alias pour identifier l'utilisateur qui a installé l'application. Lorsque vous enverrez des messages à cet utilisateur à l'avenir, vous pourrez utiliser cet alias pour le spécifier. Un seul alias peut être spécifié par utilisateur.
Au sein d’une même application, il est recommandé d’utiliser différents alias pour différents utilisateurs. De cette façon, l’utilisateur est identifié de manière unique sur la base de l’alias, autant que possible.
Le système limite le fait qu'un alias ne puisse spécifier qu'un seul utilisateur.
Par exemple : dans un jeu dans lequel un utilisateur souhaite se connecter, l'alias peut être défini sur userid. Pendant le fonctionnement du jeu, s'il s'avère que l'utilisateur n'a pas joué au jeu depuis 3 jours, l'API côté serveur est appelée en fonction de l'ID utilisateur et une notification est envoyée au client pour le rappeler à l'utilisateur.
balise balise
Étiquetez les utilisateurs qui ont installé l’application. Son objectif principal est de permettre aux développeurs d'envoyer des messages Push par lots en fonction de balises.
Plusieurs balises peuvent être attribuées à chaque utilisateur.
Exemple : jeu, old_page, femmes
Ajouter une nouvelle balise
Appelez cette API pour ajouter des étiquettes et renvoyer les résultats en bloc
Remarque : Cette interface ajoute de la logique et ne l'écrase pas.
Versions prises en charge
Version de départ prise en charge : v3.5.0.
Définition de l'interface
+ (void)addTags:(NSSet<NSString *> *)tags
completion:(MTPushTagsOperationCompletion)completion
seq:(NSInteger)seq;
Description du paramètre
balises
- 不能设置 nil 或者空集合([NSSet set])
- 集合成员类型要求为 NSString 类型
- 每次调用至少设置一个 tag
- 有效的标签组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|
- 限制:每个 tag 命名长度限制为 40 字节,最多支持设置 1000 个 tag,但总长度不得超过 5 K 字节。(判断长度需采用 UTF-8 编码)
- 单个设备最多支持设置 1000 个 tag。App 全局 tag 数量无限制
achèvement
- 用于回调返回对应的参数 tags。并返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号
*suite
* 请求时传入的序列号,会在回调时原样返回
Balise de couverture
Appelez cette API pour définir l'étiquette et renvoyer le résultat dans le bloc
Remarque : Cette interface couvre la logique plutôt que d'ajouter de la logique. L’appel de cette interface écrasera toutes les balises précédemment définies.
Versions prises en charge
Version de départ prise en charge : v3.5.0.
Définition de l'interface
+ (void)setTags:(NSSet<NSString *> *)tags
completion:(MTPushTagsOperationCompletion)completion
seq:(NSInteger)seq;
Description du paramètre
balises
- 不能设置 nil 或者空集合([NSSet set])
- 集合成员类型要求为 NSString 类型
- 每次调用至少设置一个 tag
- 有效的标签组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|
- 限制:每个 tag 命名长度限制为 40 字节,最多支持设置 1000 个 tag,但总长度不得超过 5 K 字节。(判断长度需采用 UTF-8 编码)
- 单个设备最多支持设置 1000 个 tag。App 全局 tag 数量无限制
achèvement
- 用于回调返回对应的参数 tags。并返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号
*suite
* 请求时传入的序列号,会在回调时原样返回
Supprimer la balise
Appelez cette API pour supprimer le label et renvoyer le résultat en bloc
Versions prises en charge
Version de départ prise en charge : v3.5.0.
Définition de l'interface
+ (void)deleteTags:(NSSet<NSString *> *)tags
completion:(MTPushTagsOperationCompletion)completion
seq:(NSInteger)seq;
Description du paramètre
balises
- 不能设置 nil 或者空集合([NSSet set])
- 集合成员类型要求为 NSString 类型
- 每次调用至少删除一个 tag
- 有效的标签组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|
- 限制:每个 tag 命名长度限制为 40 字节,最多支持删除 1000 个 tag,但总长度不得超过 5 K 字节。(判断长度需采用 UTF-8 编码)
achèvement
- 回调返回对应的参数 tags。并返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号
*suite
* 请求时传入的序列号,会在回调时原样返回
Effacer la balise
Appelez cette API pour effacer toutes les balises et renvoyer les résultats en bloc
Versions prises en charge
Version de départ prise en charge : v3.5.0.
Définition de l'interface
+ (void)cleanTags:(MTPushTagsOperationCompletion)completion
seq:(NSInteger)seq;
Description du paramètre
achèvement
- 回调返回的 tags 为 nil。返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号
*suite
* 请求时传入的序列号,会在回调时原样返回
Balise de requête
Appelez cette API pour obtenir toutes les balises et renvoyer les résultats en bloc
Versions prises en charge
Version de départ prise en charge : v3.5.0.
Définition de l'interface
+ (void)getAllTags:(MTPushTagsOperationCompletion)completion
seq:(NSInteger)seq;
Description du paramètre
achèvement
- 回调返回的 tags 为查询结果。返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号
*suite
* 请求时传入的序列号,会在回调时原样返回
Balise de vérification
Appelez cette API pour vérifier si la balise cible a été définie
Versions prises en charge
Version de départ prise en charge : v3.5.0.
Définition de l'interface
+ (void)validTag:(NSString *)tag
completion:(MTPushTagValidOperationCompletion)completion
seq:(NSInteger)seq;
Description du paramètre
*étiqueter
* 不能设置 nil 或者空字符串
* 有效的标签组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|
* 限制:每个 tag 命名长度限制为 40 字节(判断长度需采用 UTF-8 编码)
achèvement
- 回调返回对应的参数 tag。并返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号
- 在回调中查看 isBind 属性查看是否已经设置,YES 为已经设置
*suite
* 请求时传入的序列号,会在回调时原样返回
Bloc de balises
typedef void (^MTPushTagsOperationCompletion)(NSInteger iResCode, NSSet *iTags, NSInteger seq);
typedef void (^MTPushTagValidOperationCompletion)(NSInteger iResCode, NSSet *iTags, NSInteger seq, BOOL isBind);
Définir un alias
Appelez cette API pour définir l'alias
Versions prises en charge
Version de départ prise en charge : v3.5.0.
Définition de l'interface
+ (void)setAlias:(NSString *)alias
completion:(MTPushAliasOperationCompletion)completion
seq:(NSInteger)seq;
Description du paramètre
- pseudonyme
Achèvement - 不能设置 nil 或者空字符串 @""
- 每次调用设置有效的别名,覆盖之前的设置
- 有效的别名组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|
- 限制:alias 命名长度限制为 40 字节。(判断长度需采用 UTF-8 编码)
* 回调返回对应的参数 alias。并返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号
*suite
* 请求时传入的序列号,会在回调时原样返回
Supprimer l'alias
Appelez cette API pour supprimer l'alias et renvoyer le résultat en bloc
Versions prises en charge
Version de départ prise en charge : v3.5.0.
Définition de l'interface
+ (void)deleteAlias:(MTPushAliasOperationCompletion)completion
seq:(NSInteger)seq;
Description du paramètre
achèvement
- 回调返回的 tags 为 nil。返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号
*suite
* 请求时传入的序列号,会在回调时原样返回
Alias de requête
Appelez cette API pour interroger l'alias actuel et renvoyer le résultat dans le bloc
Versions prises en charge
Version de départ prise en charge : v3.5.0.
Définition de l'interface
+ (void)getAlias:(MTPushAliasOperationCompletion)completion
seq:(NSInteger)seq;
Description du paramètre
achèvement
- 回调返回的 tags 为查询结果。返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号
*suite
* 请求时传入的序列号,会在回调时原样返回
Bloc d'alias
typedef void (^MTPushAliasOperationCompletion)(NSInteger iResCode, NSString *iAlias, NSInteger seq);
Messages dans l'application
Versions prises en charge
Version de départ prise en charge : v4.5.0.
Description de la fonction
Pour utiliser la fonctionnalité de messagerie intégrée à l'application, vous devez configurer cette interface. Les messages intégrés à l'application déclencheront la logique d'affichage lorsque la page est changée, et les messages intégrés à l'application peuvent être affichés sur une page spécifiée. Cette interface synchronise les actions d'entrée et de sortie de la page avec le SDK, et le SDK effectuera le traitement logique d'affichage des messages dans l'application en fonction de cette logique.
Définition de l'interface
+ (void)pageEnterTo:(NSString *)pageName
+ (void)pageLeave:(NSString *)pageName;
Exemple d'appel
Instructions d'appel
Veuillez utiliser les interfaces pageEnterTo: et pageLeave: ensemble, appelez pageEnterTo: lorsque vous entrez dans la page et appelez pageLeave: lorsque vous quittez la page.
Exemple d'appel
Objectif-C
// 例如可以在 ViewController 的 viewDidAppear: 和 viewDidDisappear: 方法中配套调用
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[MTPushService pageEnterTo:@"AViewController"];
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[MTPushService pageLeave:@"AViewController"];
}
Rapide
// 例如可以在 ViewController 的 viewDidAppear 和 viewDidDisappear 方法中配套调用
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
MTPushService.pageEnter(to: "AViewController")
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
MTPushService.pageLeave("AViewController")
}
Obtenir le contenu push des APN (notification)
Versions prises en charge
Version de départ prise en charge : v3.0.0.
Description de la fonction
Lorsqu'un appareil iOS reçoit une notification push (APN) et que l'utilisateur clique sur la notification push pour ouvrir l'application, l'application la traite selon différents statuts et doit ajouter du code aux deux méthodes suivantes dans AppDelegate pour obtenir le contenu apn.
- Si l'état de l'application n'est pas en cours d'exécution, cette fonction sera appelée. Si launchOptions contient UIApplicationLaunchOptionsRemoteNotificationKey, cela signifie que l'utilisateur a cliqué sur la notification apn, provoquant le démarrage et l'exécution de l'application ; si elle ne contient pas la valeur de clé correspondante, cela signifie que l'application n'a pas été lancée en cliquant sur l'apn, mais elle peut être démarrée en cliquant directement sur l'icône ou autre chose.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
// apn 内容获取:
NSDictionary *remoteNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey]
- Sur la base des versions système d'iOS 6 et inférieures, si l'état de l'application est au premier plan ou si vous cliquez sur le message de notification dans la barre de notification, cette fonction sera appelée et si le programme s'exécute au premier plan peut être déterminé en fonction du fait que l'état d'application de AppDelegate est UIApplicationStateActive. Cette situation est gérée dans cette fonction :
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;
- Sur la base des versions système d'iOS 7 et supérieures, si vous utilisez la fonctionnalité de notification à distance d'iOS 7, la fonction de traitement doit utiliser :
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler;
- Sur la base des versions système d'iOS 10 et supérieures, l'[application : didReceiveRemoteNotification:] d'origine sera abandonnée par le système. En ajoutant [UNUserNotificationCenterDelegate willPresentNotification:withCompletionHandler:] dans UserNotifications Framework Ou la méthode [UNUserNotificationCenterDelegate didReceiveNotificationResponse:withCompletionHandler:] à la place. Dans la version actuelle et supérieure, la méthode de protocole MTPushRegisterDelegate encapsulée par le SDK peut être implémentée pour s'adapter à la nouvelle méthode de protocole délégué dans iOS10. Autrement dit, les deux méthodes suivantes :
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler;
// NSDictionary * userInfo = notification.request.content.userInfo;
// APNs 内容为 userInfo
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler;
// NSDictionary * userInfo = response.notification.request.content.userInfo;
// APNs 内容为 userInfo
Exemple de code
Objectif-C
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
// 取得 APNs 标准信息内容
NSDictionary *aps = [userInfo valueForKey:@"aps"];
NSString *content = [aps valueForKey:@"alert"]; //推送显示的内容
NSInteger badge = [[aps valueForKey:@"badge"] integerValue]; //badge 数量
NSString *sound = [aps valueForKey:@"sound"]; //播放的声音
// 取得 Extras 字段内容
NSString *customizeField1 = [userInfo valueForKey:@"customizeExtras"]; //服务端中 Extras 字段,key 是自己定义的
NSLog(@"content =[%@], badge=[%d], sound=[%@], customize field =[%@]",content,badge,sound,customizeField1);
// iOS 10 以下 Required
[MTPushService handleRemoteNotification:userInfo];
}
//iOS 7 Remote Notification
- (void)application:(UIApplication *)application didReceiveRemoteNotification: (NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
NSLog(@"this is iOS7 Remote Notification");
// iOS 10 以下 Required
[MTPushService handleRemoteNotification:userInfo];
completionHandler(UIBackgroundFetchResultNewData);
}
#pragma mark- MTPushRegisterDelegate // 2.1.9 版新增MTPushRegisterDelegate,需实现以下两个方法
// iOS 10 Support
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {
// Required
NSDictionary * userInfo = notification.request.content.userInfo;
if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
[MTPushService handleRemoteNotification:userInfo];
}
else {
// 本地通知
}
completionHandler(UNNotificationPresentationOptionAlert); // 需要执行这个方法,选择是否提醒用户,有 Badge、Sound、Alert、List、Banner几种类型可以选择设置
}
// iOS 10 Support
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler: (void (^)())completionHandler {
// Required
NSDictionary * userInfo = response.notification.request.content.userInfo;
if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
[MTPushService handleRemoteNotification:userInfo];
}
else {
// 本地通知
}
completionHandler(); // 系统要求执行这个方法
}
Rapide
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
// 取得 APNs 标准信息内容
let aps = userInfo["aps"] as? [String: Any]
let content = aps?["alert"] as? String // 推送显示的内容
let badge = (aps?["badge"] as? NSNumber)?.intValue ?? 0 // badge 数量
let sound = aps?["sound"] as? String // 播放的声音
// 取得 Extras 字段内容
let customizeField1 = userInfo["customizeExtras"] as? String // 服务端中 Extras 字段,key 是自己定义的
print("content =[\(content ?? "")], badge=[\(badge)], sound=[\(sound ?? "")], customize field =[\(customizeField1 ?? "")]")
// iOS 10 以下 Required
MTPushService.handleRemoteNotification(userInfo)
}
// iOS 7 Remote Notification
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
print("this is iOS7 Remote Notification")
// iOS 10 以下 Required
MTPushService.handleRemoteNotification(userInfo)
completionHandler(.newData)
}
// MARK: - MTPushRegisterDelegate // 2.1.9 版新增MTPushRegisterDelegate,需实现以下两个方法
// iOS 10 Support
func mtpNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (Int) -> Void) {
// Required
let userInfo = notification.request.content.userInfo
if notification.request.trigger is UNPushNotificationTrigger {
MTPushService.handleRemoteNotification(userInfo)
} else {
// 本地通知
}
completionHandler(NSInteger(UNNotificationPresentationOptions.alert.rawValue) | NSInteger(UNNotificationPresentationOptions.sound.rawValue) | NSInteger(UNNotificationPresentationOptions.badge.rawValue) ) // 需要执行这个方法,选择是否提醒用户,有 Badge、Sound、Alert、List、Banner几种类型可以选择设置
}
// iOS 10 Support
func mtpNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
// Required
let userInfo = response.notification.request.content.userInfo
if response.notification.request.trigger is UNPushNotificationTrigger {
MTPushService.handleRemoteNotification(userInfo)
} else {
// 本地通知
}
completionHandler() // 系统要求执行这个方法
}
- Basé sur iOS 12 et supérieur, UserNotifications Framework a ajouté une nouvelle méthode de rappel [userNotificationCenter:openSettingsForNotification:], et MTPushRegisterDelegate a également ajouté une méthode de rappel correspondante dans les versions 3.1.1 et supérieures. Cette méthode sera appelée lors de la saisie de l'application depuis l'interface de notification externe ou l'interface des paramètres de notification.
Objectif-C
// iOS 12 Support
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(UNNotification *)notification{
if (notification) {
//从通知界面直接进入应用
}else{
//从通知设置界面进入应用
}
}
Rapide
// iOS 12 Support
func mtpNotificationCenter(_ center: UNUserNotificationCenter, openSettingsFor notification: UNNotification?) {
if let notification = notification {
// 从通知界面直接进入应用
} else {
// 从通知设置界面进入应用
}
}
Document de référence : Gestion des notifications locales et distantes
Obtenez du contenu push de message personnalisé
Versions prises en charge
Version de départ prise en charge : v3.0.0.
Description de la fonction
- Les messages personnalisés ne peuvent être reçus que lorsque le frontal est en cours d'exécution.
- Obtenez le contenu et le titre du message personnalisé poussé par l'utilisateur ainsi que des champs supplémentaires, etc. à partir du serveur MTPush.
Méthode de mise en œuvre
L'obtention du contenu push iOS nécessite l'enregistrement des notifications dans la classe déléguée et la mise en œuvre de méthodes de rappel.
Dans la méthode - (BOOL)application:(UIApplication _)application didFinishLaunchingWithOptions:(NSDictionary _) launchOptions ajoutez le code suivant :
Objectif-C
NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
[defaultCenter addObserver:self selector:@selector(networkDidReceiveMessage:) name:kMTCNetworkDidReceiveMessageNotification object:nil];
Rapide
let defaultCenter = NotificationCenter.default
defaultCenter.addObserver(self, selector: #selector(networkDidReceiveMessage(_:)), name: Notification.Name.mtcNetworkDidReceiveMessage, object: nil)
Implémenter la méthode de rappel networkDidReceiveMessage
Objectif-C
- (void)networkDidReceiveMessage:(NSNotification *)notification {
NSDictionary * userInfo = [notification userInfo];
NSString *content = [userInfo valueForKey:@"content"];
NSString *messageID = [userInfo valueForKey:@"_j_msgid"];
NSDictionary *extras = [userInfo valueForKey:@"extras"];
NSString *customizeField1 = [extras valueForKey:@"customizeField1"]; //服务端传递的 Extras 附加字段,key 是自己定义的
}
Rapide
@objc func networkDidReceiveMessage(_ notification: Notification) {
let userInfo = notification.userInfo
let content = userInfo?["content"] as? String
let messageID = userInfo?["_j_msgid"] as? String
let extras = userInfo?["extras"] as? [String: Any]
let customizeField1 = extras?["customizeField1"] as? String // 服务端传递的 Extras 附加字段,key 是自己定义的
}
Description du paramètre
- contenu : obtenez le contenu poussé
- messageID : récupère l'ID de message poussé (la clé est @"_j_msgid")
- extras : obtenez des paramètres définis par l'utilisateur -customiseField1 : obtenez une valeur personnalisée basée sur une clé personnalisée
Pour plus d’implémentation, veuillez vous référer à la démo dans le package compressé de téléchargement du SDK.
Signaler l'affichage des messages personnalisés et les clics
Description de la fonction
- Après avoir terminé l'affichage visuel du message personnalisé, appelez
reportCustomDisplay:. Le message arrive ≠ affichage. Seuls les appels actifs seront comptabilisés dans le nombre d'impressions. reportCustomClick:est appelé après que l'utilisateur clique sur le message personnalisé. L'ouverture de l'application ≠ clic doit être une interaction utilisateur déclenchée par le message.messageIdest obtenu à partir deuserInfo[@"_j_msgid"]dans le rappel de message personnalisé.
Définition de l'interface
Objectif-C
/*!
* @abstract 上报自定义消息展示
*
* @param messageId 消息ID,从自定义消息回调 userInfo[@"_j_msgid"] 中取,不为空(NSNumber 类型,需调用 stringValue 转换为 NSString)
*
* @discussion 客户在完成自定义消息可视化展示后调用。消息到达 ≠ 展示,只有主动调用后才计入展示数。
*/
+ (void)reportCustomDisplay:(NSString *)messageId;
/*!
* @abstract 上报自定义消息点击
*
* @param messageId 消息ID,从自定义消息回调 userInfo[@"_j_msgid"] 中取,不为空(NSNumber 类型,需调用 stringValue 转换为 NSString)
*
* @discussion 客户在用户点击自定义消息后调用。打开 App ≠ 点击,必须是由该消息触发的用户交互。
*/
+ (void)reportCustomClick:(NSString *)messageId;
Exemple de code
Objectif-C
// 完成自定义消息展示后调用
[MTPushService reportCustomDisplay:[userInfo[@"_j_msgid"] stringValue]];
// 用户点击自定义消息后调用
[MTPushService reportCustomClick:[userInfo[@"_j_msgid"] stringValue]];
Rapide
// 完成自定义消息展示后调用
MTPushService.reportCustomDisplay((userInfo["_j_msgid"] as? NSNumber)?.stringValue)
// 用户点击自定义消息后调用
MTPushService.reportCustomClick((userInfo["_j_msgid"] as? NSNumber)?.stringValue)
Obtenez le contenu push des messages dans l'application
Versions prises en charge
v4.5.0 et versions ultérieures
Description de la fonction
Messages intégrés à l'application : L'APP ne peut recevoir des messages intégrés à l'application que lorsqu'elle s'exécute au premier plan. Il existe désormais trois types de messages dans l'application : bannière, interstitiel et plein écran.
En définissant le proxy pour la fonction de messagerie dans l'application et en implémentant la méthode de proxy correspondante, vous pouvez obtenir le contenu du message dans l'application.
Méthode de mise en œuvre
Ajouter un délégué
Objectif-C
@interface AppDelegate ()<MTPushInAppMessageDelegate>
@end
Rapide
extension AppDelegate: MTPushInAppMessageDelegate {
}
Définir un proxy
Veuillez ajouter le code suivant à -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Objectif-C
[MTPushService setInAppMessageDelegate:self];
Rapide
MTPushService.setInAppMessageDelegate(self)
Ajouter une méthode proxy pour les rappels de messages dans l'application
Objectif-C
#pragma mark - MTPushInAppMessageDelegate
- (void)mtPushInAppMessageDidShow:(MTPushInAppMessage *)inAppMessage {
NSString *mesageId = inAppMessage.mesageId; // 消息id
NSString *title = inAppMessage.title; // 标题
NSString *content = inAppMessage.content; // 内容
NSArray *target = inAppMessage.target; // 目标页面
NSString *clickAction = inAppMessage.clickAction; // 跳转地址
NSDictionary *extras = inAppMessage.extras; // 附加字段
NSLog(@"InAppMessageDidShow:\n mesageId: %@ \n title:%@ \n content:%@ \n target:%@ \n clickAction:%@ \n extras:%@", mesageId,title,content,target,clickAction,extras);
}
- (void)mtPushInAppMessageDidClick:(MTPushInAppMessage *)inAppMessage {
NSString *mesageId = inAppMessage.mesageId; // 消息id
NSString *title = inAppMessage.title; // 标题
NSString *content = inAppMessage.content; // 内容
NSArray *target = inAppMessage.target; // 目标页面
NSString *clickAction = inAppMessage.clickAction; // 跳转地址
NSDictionary *extras = inAppMessage.extras; // 附加字段
NSLog(@"mtPushInAppMessageDidClick:\n mesageId: %@ \n title:%@ \n content:%@ \n target:%@ \n clickAction:%@ \n extras:%@", mesageId,title,content,target,clickAction,extras);
}
Rapide
// MARK: - MTPushInAppMessageDelegate
func mtPush(inAppMessageDidShow inAppMessage: MTPushInAppMessage) {
let mesageId = inAppMessage.mesageId // 消息id
let title = inAppMessage.title // 标题
let content = inAppMessage.content // 内容
let target = inAppMessage.target // 目标页面
let clickAction = inAppMessage.clickAction // 跳转地址
let extras = inAppMessage.extras // 附加字段
print("InAppMessageDidShow:\n mesageId: \(mesageId ?? "")\n title:\(title ?? "")\n content:\(content ?? "")\n target:\(target ?? [])\n clickAction:\(clickAction ?? "")\n extras:\(extras ?? [:])")
}
func mtPush(inAppMessageDidClick inAppMessage: MTPushInAppMessage) {
let mesageId = inAppMessage.mesageId // 消息id
let title = inAppMessage.title // 标题
let content = inAppMessage.content // 内容
let target = inAppMessage.target // 目标页面
let clickAction = inAppMessage.clickAction // 跳转地址
let extras = inAppMessage.extras // 附加字段
print("mtPushInAppMessageDidClick:\n mesageId: \(mesageId ?? "")\n title:\(title ?? "")\n content:\(content ?? "")\n target:\(target ?? [])\n clickAction:\(clickAction ?? "")\n extras:\(extras ?? [:])")
}
Recevoir le contenu push du message de rappel amélioré par notification
Versions prises en charge
v4.5.1 et versions ultérieures
Description de la fonction
Message de rappel amélioré par notification : lors de l'envoi d'une notification, une notification locale sera utilisée au lieu d'un push pour rappeler aux utilisateurs cibles qui ont désactivé les autorisations de notification.
Les messages de rappel améliorés intégrés à l'application ne peuvent être reçus que lorsque l'application s'exécute au premier plan. Pour utiliser cette fonction, vous devez activer le commutateur « Notification Enhanced Reminder » dans les paramètres avancés des notifications push sur la plateforme push.
En définissant le proxy du message de rappel amélioré de notification et en implémentant la méthode de proxy correspondante, vous pouvez obtenir le titre du contenu et des champs supplémentaires du message de rappel amélioré de notification.
Méthode de mise en œuvre
Ajouter un délégué
Objectif-C
@interface AppDelegate ()<MTPushNotiInMessageDelegate>
@end
Rapide
extension AppDelegate: MTPushNotiInMessageDelegate {
}
Définir un proxy
Veuillez ajouter le code suivant à -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Objectif-C
[MTPushService setNotiInMessageDelegate:self];
Rapide
MTPushService.setNotiInMessageDelegate(self)
Ajouter une méthode proxy pour le rappel amélioré des messages de rappel
Objectif-C
#pragma mark - MTPushNotiInMessageDelegate
- (void)mtPushNotiInMessageDidShowWithContent:(NSDictionary *)content {
NSString *messageID = [content valueForKey:@"_j_msgid"];
NSDictionary *aps = [content valueForKey:@"aps"];
id customizeField1 = [content valueForKey:@"customizeField1"]; // 推送平台高级设置里的附加字段的 key
}
- (void)mtPushNotiInMessageDidClickWithContent:(NSDictionary *)content {
NSString *messageID = [content valueForKey:@"_j_msgid"];
NSDictionary *aps = [content valueForKey:@"aps"];
id customizeField1 = [content valueForKey:@"customizeField1"]; // 推送平台高级设置里的附加字段的 key
}
Rapide
// MARK: - MTPushNotiInMessageDelegate
func mtPushNotiInMessageDidShow(withContent content: [AnyHashable : Any]) {
let messageID = content["_j_msgid"] as? String
let aps = content["aps"] as? [String: Any]
let customizeField1 = content["customizeField1"] // 推送平台高级设置里的附加字段的 key
}
func mtPushNotiInMessageDidClick(withContent content: [AnyHashable : Any]) {
let messageID = content["_j_msgid"] as? String
let aps = content["aps"] as? [String: Any]
let customizeField1 = content["customizeField1"] // 推送平台高级设置里的附加字段的 key
}
Obtenir l'ID d'enregistrement
Versions prises en charge
Version de départ prise en charge : v3.0.0.
Définition de l'ID d'enregistrement
Lorsqu'une application intégrée au SDK MTPush s'enregistre avec succès auprès du serveur MTPush pour la première fois, le serveur MTPush renvoie au client une identification unique de l'appareil - RegistrationID. MTPush SDK enverra RegistrationID à l'application sous forme de diffusion.
L'application peut enregistrer cet ID d'enregistrement sur son propre serveur d'applications, puis envoyer des messages ou des notifications à l'appareil en fonction de l'ID d'enregistrement.
Obtenir l'ID d'enregistrement (avec bloc)
Définition de l'interface
+ (void)registrationIDCompletionHandler:(void(^)(int resCode,NSString *registrationID))completionHandler;
Description du paramètre
- (void(^)(int resCode,NSString *registrationID))completionHandler
-completeHandler est utilisé pour gérer la définition des résultats de retour
- Le code d'état du résultat renvoyé par resCode
- l'ID d'enregistrement renvoie l'ID d'enregistrement
Objectif-C
[MTPushService registrationIDCompletionHandler:^(int resCode, NSString *registrationID) {
NSLog(@"resCode : %d,registrationID: %@",resCode,registrationID);
}];
Rapide
MTPushService.registrationIDCompletionHandler { (resCode, registrationID) in
print("resCode : \(resCode), registrationID: \(registrationID ?? "")")
}
Rappel chaleureux :
Il est recommandé d'utiliser cette interface pour obtenir l'ID d'enregistrement. Lors de l'appel de cette interface dans le simulateur, resCode renvoie 1011 et RegistrationID renvoie nul.
Obtenir l'ID d'enregistrement
Appelez cette API pour obtenir le RegistrationID correspondant à l’application. La valeur correspondante est renvoyée uniquement lorsque l'application s'enregistre avec succès auprès du serveur MTPush, sinon une chaîne vide est renvoyée.
Définition de l'interface
+(NSString *)registrationID
Rappel chaleureux :
Sur le système iOS 9, lorsque l'application est désinstallée et réinstallée, le jeton d'appareil renvoyé par les APN changera. Les développeurs doivent obtenir le dernier identifiant d'enregistrement de l'appareil. Veuillez appeler l'interface « RegistrationID » dans la méthode d'implémentation de kMTCNetworkDidLoginNotification pour obtenir le RegistrationID.
Instructions supplémentaires
Messages push et notifications via RegistrationID
Les messages et les notifications peuvent être envoyés via RegistrationID. Lorsque le paramètre d'audience est RegistrationID, ils peuvent être poussés en fonction de RegistrationID.
Définir le badge
Versions prises en charge
Version de départ prise en charge : v3.0.0.
Description de la fonction
Un badge est un numéro utilisé par iOS pour marquer l'état d'une application et apparaît dans le coin supérieur droit de l'icône de l'application. MTPush encapsule la fonction de badge, permettant aux applications de télécharger les valeurs de badge sur le serveur MTPush. Le fond MTPush permet de gérer les valeurs des badges push correspondant à chaque utilisateur, simplifiant ainsi l'opération de paramétrage des badges push.
Dans les applications réelles, les développeurs peuvent directement augmenter ou diminuer les valeurs des badges sans avoir à maintenir la relation correspondante entre les utilisateurs et les valeurs des badges. Lorsque vous envoyez un message, il vous suffit de définir le badge +1 sur la console, et EngageLab attribuera automatiquement +1 à la valeur du badge de chaque utilisateur stockée sur le serveur, puis l'enverra à l'utilisateur.
Définir la marque de coin
API setBadge Définir la valeur du badge stockée dans le serveur MTPush
Définition de l'interface
+ (BOOL)setBadge:(int)value
Description du paramètre
- plage de valeurs : [0,99999]
La fonction UIApplication:setApplicationIconBadgeNumber doit toujours être appelée localement pour définir la valeur du badge affichée sur l'icône.
- valeur de retour
- Renvoie VRAI dans la plage de valeurs, sinon renvoie FAUX
Définir la marque de coin (avec rappel du résultat)
Début de la version prise en charge : v5.2.0
Définition de l'interface
+ (void)setBadge:(NSInteger)value completion:(void (^)(NSError *error))completion
Description du paramètre
- plage de valeurs : [0,99999]
- rappel du résultat d'achèvement, en cas de succès, l'erreur est vide.
La fonction UIApplication:setApplicationIconBadgeNumber doit toujours être appelée localement pour définir la valeur du badge affichée sur l'icône.
Effacer la marque de coin
Effacez la valeur du badge stockée sur le serveur MTPush, c'est-à-dire [setBadge:0]
Définition de l'interface
+ (void)resetBadge
Notification locale
Versions prises en charge
Version de départ prise en charge : v3.0.0.
Description de la fonction
L'appareil iOS reçoit une notification locale. Lorsque l'utilisateur clique sur la notification pour ouvrir l'application, l'application la traite selon différents états. Vous devez ajouter du code dans les deux méthodes suivantes dans AppDelegate pour obtenir le contenu de la notification locale :
- Si l'état de l'application n'est pas en cours d'exécution, cette fonction sera appelée. Si launchOptions contient UIApplicationLaunchOptionsLocalNotificationKey, cela signifie que l'utilisateur a cliqué sur la notification locale, ce qui a provoqué le démarrage et l'exécution de l'application ; si elle ne contient pas la valeur clé correspondante, cela signifie que l'application n'a pas été lancée en cliquant sur la notification locale. Il peut être démarré en cliquant directement sur l'icône ou autre chose.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
// 本地通知内容获取:NSDictionary *localNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsLocalNotificationKey]
- Si l'état de l'application s'exécute au premier plan ou en arrière-plan, alors cette fonction sera appelée et si le programme s'exécute au premier plan peut être déterminé selon que l'état application de AppDelegate est UIApplicationStateActive. Cette situation est gérée dans cette fonction :
// NS_DEPRECATED_IOS(4_0, 10_0, "Use UserNotifications Framework's -[UNUserNotificationCenterDelegate willPresentNotification:withCompletionHandler:] or -[UNUserNotificationCenterDelegate didReceiveNotificationResponse:withCompletionHandler:]")
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;
// 本地通知为 notification
- Sur iOS 10 et supérieur, la méthode ci-dessus sera abandonnée par le système et remplacée par la méthode
-[UNUserNotificationCenterDelegate willPresentNotification:withCompletionHandler:]ou-[UNUserNotificationCenterDelegate didReceiveNotificationResponse:withCompletionHandler:]dans le nouveau framework UserNotifications. À cette fin, le SDK encapsule le protocole MTPushRegisterDelegate. Il vous suffit d'implémenter la méthode de protocole correspondante pour vous adapter à la nouvelle méthode déléguée dans iOS 10, qui est cohérente avec la nouvelle méthode de rappel push à distance mentionnée ci-dessus, c'est-à-dire la méthode suivante :
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^) (NSInteger))completionHandler;
// if (![notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
// 本地通知为 notification
// }
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler: (void (^)())completionHandler;
// if (![response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
// 本地通知为 response.notification
// }
Enregistrez/mettez à jour les notifications locales
Versions prises en charge
Version de départ prise en charge : v3.0.0.
Description de la fonction
API pour l'enregistrement ou la mise à jour push (prend en charge iOS 10 et compatible avec les versions inférieures à iOS 10).
Définition de l'interface
+ (void)addNotification:(MTPushNotificationRequest *)request;
Description du paramètre
- demande de type d'entité [MTPushNotificationRequest], qui peut transmettre les attributs poussés.
Instructions d'appel
Passer le request.requestIdentifier d'une requête push in existante mettra à jour le push existant, sinon il enregistrera un nouveau push.
Exemple de code
Objectif-C
- (void)testAddNotification {
MTPushNotificationContent *content = [[MTPushNotificationContent alloc] init];
content.title = @"Test Notifications";
content.subtitle = @"2016";
content.body = @"This is a test code";
content.badge = @1;
content.categoryIdentifier = @"Custom Category Name";
// 5s 后提醒 iOS 10 以上支持
MTPushNotificationTrigger *trigger1 = [[MTPushNotificationTrigger alloc] init];
trigger1.timeInterval = 5;
//每小时重复 1 次 iOS 10 以上支持
MTPushNotificationTrigger *trigger2 = [[MTPushNotificationTrigger alloc] init];
trigger2.timeInterval = 3600;
trigger2.repeat = YES;
//每周一早上 8:00 提醒,iOS 10 以上支持
NSDateComponents *components = [[NSDateComponents alloc] init];
components.weekday = 2;
components.hour = 8;
MTPushNotificationTrigger *trigger3 = [[MTPushNotificationTrigger alloc] init];
trigger3.dateComponents = components;
trigger3.repeat = YES;
//#import <CoreLocation/CoreLocation.h>
//一到某地点提醒,iOS 8 以上支持
CLLocationCoordinate2D cen = CLLocationCoordinate2DMake(37.335400, -122.009201);
CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:cen
radius:2000.0
identifier:@"engagelab"];
MTPushNotificationTrigger *trigger4 = [[MTPushNotificationTrigger alloc] init];
trigger4.region = region;
//5s 后提醒,iOS 10 以下支持
MTPushNotificationTrigger *trigger5 = [[MTPushNotificationTrigger alloc] init];
trigger5.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];
MTPushNotificationRequest *request = [[MTPushNotificationRequest alloc] init];
request.requestIdentifier = @"sampleRequest";
request.content = content;
request.trigger = trigger1;//trigger2;//trigger3;//trigger4;//trigger5;
request.completionHandler = ^(id result) {
NSLog(@"结果返回:%@", result);
};
[MTPushService addNotification:request];
}
Rapide
func testAddNotification() {
let content = MTPushNotificationContent()
content.title = "Test Notifications"
content.subtitle = "2016"
content.body = "This is a test code"
content.badge = NSNumber(value: 1)
content.categoryIdentifier = "Custom Category Name"
// 5s 后提醒 iOS 10 以上支持
let trigger1 = MTPushNotificationTrigger()
trigger1.timeInterval = 5
// 每小时重复 1 次 iOS 10 以上支持
let trigger2 = MTPushNotificationTrigger()
trigger2.timeInterval = 3600
trigger2.repeat = true
// 每周一早上 8:00 提醒,iOS 10 以上支持
var components = DateComponents()
components.weekday = 2
components.hour = 8
let trigger3 = MTPushNotificationTrigger()
trigger3.dateComponents = components
trigger3.repeat = true
// import CoreLocation
// 一到某地点提醒,iOS 8 以上支持
let cen = CLLocationCoordinate2D(latitude: 37.335400, longitude: -122.009201)
let region = CLCircularRegion(center: cen, radius: 2000.0, identifier: "engagelab")
let trigger4 = MTPushNotificationTrigger()
trigger4.region = region
// 5s 后提醒,iOS 10 以下支持
let trigger5 = MTPushNotificationTrigger()
trigger5.fireDate = Date(timeIntervalSinceNow: 5)
let request = MTPushNotificationRequest()
request.requestIdentifier = "sampleRequest"
request.content = content
request.trigger = trigger1 // trigger2 // trigger3 // trigger4 // trigger5
request.completionHandler = { (result) in
print("结果返回:\(result ?? "")")
}
MTPushService.addNotification(request)
}
Supprimer la notification locale
Versions prises en charge
Version de départ prise en charge : v3.0.0.
Description de la fonction
L'API est utilisée pour supprimer les notifications push en attente ou qui ont été affichées dans le centre de notification (prend en charge iOS 10 et est compatible avec les versions inférieures à iOS 10).
Définition de l'interface
+ (void)removeNotification:(MTPushNotificationIdentifier *)identifier;
Description du paramètre
- identifiant du type d'entité [MTPushNotificationIdentifier].
Instructions d'appel
- Pour iOS 10 et supérieur, si l'identifiant est défini sur zéro, toutes les demandes push et en attente seront supprimées du centre de notification. Vous pouvez également supprimer les demandes push correspondantes ou en attente du centre de notification en définissant identifier.delivered et identifier.identifiers. Si identifier.identifiers est défini sur nil ou sur un tableau vide, toutes les demandes push ou en attente du centre de notification seront supprimées sous l'indicateur correspondant.
- Si l'identifiant est défini sur zéro sous iOS 10, tous les push seront supprimés et l'attribut identifier.delivered sera invalide. De plus, vous pouvez transmettre un objet push spécifique via identifier.notificationObj pour supprimer ce push.
Exemple de code
Objectif-C
- (void)testRemoveNotification {
MTPushNotificationIdentifier *identifier = [[MTPushNotificationIdentifier alloc] init];
identifier.identifiers = @[@"sampleRequest"];
identifier.delivered = YES; //iOS 10 以上有效,等于 YES 则在通知中心显示的里面移除,等于 NO 则为在待推送的里面移除;iOS 10 以下无效
[MTPushService removeNotification:identifier];
}
- (void)testRemoveAllNotification {
[MTPushService removeNotification:nil]; // iOS 10 以下移除所有推送;iOS 10 以上移除所有在通知中心显示推送和待推送请求
// //iOS 10 以上支持
// MTPushNotificationIdentifier *identifier = [[MTPushNotificationIdentifier alloc] init];
// identifier.identifiers = nil;
// identifier.delivered = YES; //等于 YES 则移除所有在通知中心显示的,等于 NO 则为移除所有待推送的
// [MTPushService removeNotification:identifier];
}
Rapide
func testRemoveNotification() {
let identifier = MTPushNotificationIdentifier()
identifier.identifiers = ["sampleRequest"]
identifier.delivered = true // iOS 10 以上有效,等于 true 则在通知中心显示的里面移除,等于 false 则为在待推送的里面移除;iOS 10 以下无效
MTPushService.removeNotification(identifier)
}
func testRemoveAllNotification() {
MTPushService.removeNotification(nil) // iOS 10 以下移除所有推送;iOS 10 以上移除所有在通知中心显示推送和待推送请求
// iOS 10 以上支持
// let identifier = MTPushNotificationIdentifier()
// identifier.identifiers = nil
// identifier.delivered = true // 等于 true 则移除所有在通知中心显示的,等于 false 则为移除所有待推送的
// MTPushService.removeNotification(identifier)
}
Rechercher des notifications locales
Versions prises en charge
Version de départ prise en charge : v3.0.0.
Description de la fonction
API de recherche de push (prend en charge iOS 10 et compatible avec les versions inférieures à iOS 10).
Définition de l'interface
+ (void)findNotification:(MTPushNotificationIdentifier *)identifier;
Description du paramètre
- type d'entité identifiant [MTPushNotificationIdentifier]
Instructions d'appel
- Pour iOS 10 et versions ultérieures, vous pouvez définir identifier.delivered et identifier.identifiers pour rechercher la demande push correspondante ou la demande push en attente dans le centre de notification. Si identifier.identifiers est défini sur nil ou sur un tableau vide, il renverra toutes les demandes push ou en attente dans le centre de notification sous l'indicateur correspondant ; sous iOS 10, l'attribut identifier.delivered n'est pas valide. Si identifier.identifiers est défini sur nil ou sur un tableau vide, tous les push non déclenchés seront renvoyés.
- Vous devez définir le rappel identifier.findCompletionHandler pour obtenir les résultats de la recherche et renvoyer le tableau d'objets correspondant via (NSArray *results).
Exemple de code
Objectif-C
- (void)testFindNotification {
MTPushNotificationIdentifier *identifier = [[MTPushNotificationIdentifier alloc] init];
identifier.identifiers = @[@"sampleRequest"];
identifier.delivered = YES; //iOS 10 以上有效,等于 YES 则在通知中心显示的里面查找,等于 NO 则在待推送的里面查找;iOS10 以下无效
identifier.findCompletionHandler = ^(NSArray *results) {
NSLog(@"返回结果为:%@", results); // iOS 10 以下返回 UILocalNotification 对象数组,iOS10 以上根据 delivered 传入值返回 UNNotification 或 UNNotificationRequest 对象数组
};
[MTPushService findNotification:identifier];
}
- (void)testFindAllNotification {
MTPushNotificationIdentifier *identifier = [[MTPushNotificationIdentifier alloc] init];
identifier.identifiers = nil;
identifier.delivered = YES; //iOS 10 以上有效,等于 YES 则查找所有在通知中心显示的,等于 NO 则为查找所有待推送的;iOS 10 以下无效
identifier.findCompletionHandler = ^(NSArray *results) {
NSLog(@"返回结果为:%@", results); // iOS 10 以下返回 UILocalNotification 对象数组,iOS 10 以上根据 delivered 传入值返回 UNNotification 或 UNNotificationRequest 对象数组
};
[MTPushService findNotification:identifier];
}
Rapide
func testFindNotification() {
let identifier = MTPushNotificationIdentifier()
identifier.identifiers = ["sampleRequest"]
identifier.delivered = true // iOS 10 以上有效,等于 true 则在通知中心显示的里面查找,等于 false 则在待推送的里面查找;iOS 10 以下无效
identifier.findCompletionHandler = { (results) in
print("返回结果为:\(results ?? [])") // iOS 10 以下返回 UILocalNotification 对象数组,iOS 10 以上根据 delivered 传入值返回 UNNotification 或 UNNotificationRequest 对象数组
}
MTPushService.findNotification(identifier)
}
func testFindAllNotification() {
let identifier = MTPushNotificationIdentifier()
identifier.identifiers = nil
identifier.delivered = true // iOS 10 以上有效,等于 true 则查找所有在通知中心显示的,等于 false 则为查找所有待推送的;iOS 10 以下无效
identifier.findCompletionHandler = { (results) in
print("返回结果为:\(results ?? [])") // iOS 10 以下返回 UILocalNotification 对象数组,iOS 10 以上根据 delivered 传入值返回 UNNotification 或 UNNotificationRequest 对象数组
}
MTPushService.findNotification(identifier)
}
Paramètres du niveau de journalisation
Versions prises en charge
Version de départ prise en charge : v3.0.0.
Activer le mode débogage
Description de la fonction
L'API est utilisée pour activer le mode débogage et afficher plus d'informations de journal.
Définition de l'interface
+ (void)setDebugMode;
Instructions d'appel
Lorsque vous avez besoin de plus d'informations sur le débogage, appelez l'API pour activer le mode débogage.
Exemple de code
Objectif-C
[MTPushService setDebugMode];
Rapide
MTPushService.setDebugMode()
Fermer les informations du journal
Versions prises en charge
Version de départ prise en charge : v3.0.0.
Description de la fonction
L'API est utilisée pour désactiver les messages de journalisation (sauf les messages d'erreur nécessaires).
Définition de l'interface
+ (void)setLogOFF;
Instructions d'appel
Lorsqu'aucune information de débogage n'est nécessaire, appelez cette API (il est recommandé d'appeler cette API lors de la publication pour protéger les informations de journal et économiser la consommation de performances).
Exemple de code
Objectif-C
[MTPushService setLogOFF];
Rapide
MTPushService.setLogOFF()
Définir le numéro de téléphone mobile
Versions prises en charge
Version de départ prise en charge : v3.0.0.
Description de la fonction
Utilisé pour définir le numéro de téléphone mobile.
Définition de l'interface
+ (void)setMobileNumber:(NSString *)mobileNumber completion:(void (^)(NSError *error))completion
Description du paramètre
- mobileNumber Numéro de téléphone mobile. Il ne peut commencer que par "+" ou un nombre, et le contenu suivant ne peut contenir que "-" et des nombres, et la longueur ne peut pas dépasser 20. Si une chaîne nulle ou vide est passée, il s'agit d'une opération de dissociation.
- rappel de réponse d'achèvement. En cas de succès, l'erreur sera vide. En cas d'échec, l'erreur contiendra le code d'erreur et les informations sur l'erreur. Pour les codes d'erreur spécifiques, veuillez consulter la définition du code d'erreur.
Instructions d'appel
Il y a une limite à la fréquence d'appel de cette interface, jusqu'à 3 fois en 10 secondes. Il est recommandé d'appeler cette interface après une connexion réussie. Les informations de résultat sont renvoyées de manière asynchrone jusqu'à la fin, ou la complétion peut être définie sur nil pour ne pas traiter les informations de résultat.
Exemple de code
Objectif-C
[MTPushService setMobileNumber:@"xxx" completion:^(NSError *error) {
if (error) {
NSLog(@"error:%@", error);
}
else {
// success
}
}];
Rapide
MTPushService.setMobileNumber("xxx") { (error) in
if let error = error {
print("error:\(error)")
} else {
// success
}
}
Informations sur la langue du rapport
Versions prises en charge
Version de départ prise en charge : v3.0.0.
Description de la fonction
L'API est utilisée pour rapporter des informations sur la langue de l'utilisateur
Définition de l'interface
+ (void)setUserLanguage:(NSString *)language completionHandler:(void(^)(int resCode, NSError *error))handler;
Description du paramètre
- langue : informations sur la langue
- gestionnaire : rappel de rapport
Instructions d'appel
Il est recommandé d'appeler cette interface après une connexion réussie.
Exemple de code
Objectif-C
[MTPushService setUserLanguage:@"zh_Hans" completionHandler:^(int resCode, NSError *error) {
NSLog(@"language report: %d, %@", resCode, error);
}];
Rapide
MTPushService.setUserLanguage("zh_Hans") { (resCode, error) in
print("language report: \(resCode), \(error?.localizedDescription ?? "")")
}
Définir le mode de cryptage TCP
Versions prises en charge
Version de départ prise en charge : v3.3.0.
Description de la fonction
L'API est utilisée pour définir si la connexion cryptée TCP
Définition de l'interface
+ (void)setTcpSSL:(BOOL)isSSL;
Description du paramètre
- isSSL : OUI pour le chiffrement, NON pour l'absence de chiffrement
Instructions d'appel
Veuillez appeler avant d'initialiser l'interface.
Exemple de code
Objectif-C
[MTPushService setTcpSSL:YES];
Rapide
MTPushService.setTcpSSL(true)
Désactiver le service push (turnOffPush)
Versions prises en charge
Version prise en charge démarrée : MTPush iOS SDK v5.4.3.
Description de la fonction
Après l'appel, le SDK empêchera la reconnexion automatique, déconnectera les connexions longues, arrêtera la collecte et la création de rapports d'informations sur les clients, arrêtera l'affichage des messages dans l'application et déconnectera le jeton APN actuel. Pendant l'arrêt, les API actives qui s'appuient sur des réseaux push ou des identités enregistrées sont temporairement indisponibles ; les API locales telles que la configuration des notifications locales, l'enregistrement des autorisations de notification, les rappels et les paramètres de journal sont toujours disponibles.
Définition de l'interface
+ (void)turnOffPush:(nullable MTPushRegistrationCompletion)completion;
Exemple de code
[MTPushService turnOffPush:^(NSInteger code, NSString *message) {
NSLog(@"turnOffPush code: %ld, message: %@", (long)code, message);
}];
Description du paramètre
completion: Ferme le rappel du résultat, qui peut êtrenil; le rappel est exécuté dans le thread principal.
Description du rappel
| codes | sens |
|---|---|
| 0 | Clôturé avec succès |
| 6050 | Le SDK n'a pas été initialisé |
| 6051 | L'opération d'inscription ou de désinscription est en cours |
Instructions d'utilisation de l'interface
turnOffPush ne renvoie pas 6052. Lors de l'appel d'une API qui s'appuie sur le réseau push ou sur l'identité enregistrée après la fermeture de Push, l'API concernée indique qu'elle est actuellement inexécutable via 6052. Le simulateur iOS ne prend pas en charge la déconnexion des APN et génère uniquement des journaux d'invite sans exécuter de rappels de réussite.
Redémarrer le service push (turnOnPush)
Versions prises en charge
Version prise en charge démarrée : MTPush iOS SDK v5.4.3.
Description de la fonction
Redémarrez le service push en utilisant de nouveaux paramètres d'initialisation. Le SDK reprendra la collecte d'informations, les rapports, les messages dans l'application et les longues connexions, et réenregistrera automatiquement le jeton APN. Le nouveau deviceToken doit toujours être transmis à registerDeviceToken: dans le rappel AppDelegate, puis automatiquement signalé par le SDK. Cette interface revient immédiatement après le lancement et ne fournit pas de rappel de résultat.
Définition de l'interface
+ (void)turnOnPush:(NSString *)appKey
channel:(nullable NSString *)channel
apsForProduction:(BOOL)isProduction
advertisingIdentifier:(nullable NSString *)advertisingId;
Exemple de code
[MTPushService turnOnPush:@"your_app_key"
channel:@"App Store"
apsForProduction:YES
advertisingIdentifier:nil];
Description du paramètre
appKey: nouvelle clé d'application EngageLab, non nullable.channel: canal de version de l'application, peut être vide.isProduction: environnement APN,YESest l'environnement de production etNOest l'environnement de développement.advertisingId: ID publicitaire, peut être vide.
Fonction de diffusion vocale
Présentation de la fonction
Pour utiliser cette fonction, vous devez activer la fonction appGroups pour votre bundleid. Pour connaître les étapes d'activation de la fonction appGroups, veuillez vous référer au Guide de configuration du certificat iOS.
Cette fonction prend en charge les systèmes iOS14 et supérieurs.
En raison des limitations du système, la durée de la diffusion vocale est à peu près la même que le temps nécessaire à l'apparition et à l'affichage de la notification du téléphone mobile (environ 10 secondes, il peut y avoir de légères différences selon les systèmes). La diffusion vocale s'arrêtera également lorsque la fenêtre contextuelle de notification disparaîtra. Veuillez faire attention au contrôle de la durée de la diffusion vocale.
Définir appGroupId
Versions prises en charge
Version de départ prise en charge : v4.3.4.
Instructions d'appel
Il est utilisé pour définir l'appGroupId, qui doit être cohérent avec l'appGroupId défini par la méthode mtpushSetAppGroupId: dans l'extension du service de notification. Il permet de définir l'espace de stockage partagé entre le projet principal et l'extension du service de notification. Cet espace est utilisé pour stocker les ressources liées à la diffusion vocale.
Définition de l'interface
+ (void)setAppGroupId:(NSString *)appGroupId;
Description du paramètre
- appGroupId : l'appGroupId que vous avez renseigné lors de l'activation de la fonctionnalité appGroupId pour bundleid
Instructions d'appel
Veuillez appeler avant d'initialiser l'interface.
Exemple de code
Objectif-C
[MTPushService setAppGroupId:@"您的appGroupId"];
Rapide
MTPushService.setAppGroupId("您的appGroupId")
Définir s'il faut activer la fonction de diffusion vocale
Versions prises en charge
Version de départ prise en charge : v4.3.4.
Description de la fonction
Activer ou désactiver la fonction de diffusion vocale
Définition de l'interface
+ (void)enablePushTextToSpeech:(BOOL)enable;
Description du paramètre
- activer : OUI : ouvert, NON : fermer, la valeur par défaut est NON
Instructions d'appel
Veuillez appeler avant d'initialiser l'interface. La valeur par défaut est désactivée.
Exemple de code
Objectif-C
[MTPushService enablePushTextToSpeech:YES];
Rapide
MTPushService.enablePushTextToSpeech(true)
Définissez s'il faut réinitialiser l'ID d'enregistrement lorsque l'appareil est remplacé
Versions prises en charge
Version de départ prise en charge : v5.1.0.
Description de la fonction
Activez ou désactivez la fonction de réinitialisation de l'ID d'enregistrement lorsque l'appareil est remplacé. Si cette option est activée, lorsqu'un changement dans l'appareil est détecté (uniquement lorsque le modèle de l'appareil change), les informations d'enregistrement seront automatiquement effacées et réenregistrées.
Définition de l'interface
+ (void)enableResetOnDeviceChange:(BOOL)enable;
Description du paramètre
- activer : OUI : ouvert, NON : fermer, la valeur par défaut est NON
Instructions d'appel
Veuillez appeler avant d'initialiser l'interface. La valeur par défaut est désactivée.
Exemple de code
Objectif-C
[MTPushService enableResetOnDeviceChange:YES];
Rapide
MTPushService.enableResetOnDeviceChange(true)
Activité en direct
Signaler le PushToStartToken de liveActivity (jeton de démarrage)
Méthode - registerLiveActivity:pushToStartToken:completion:seq :
Appelez cette API pour signaler le pushToStartToken de liveActivity et renvoyer le résultat dans le bloc.
Versions prises en charge
Version de départ prise en charge : 4.4.0
Définition de l'interface
+ (void)registerLiveActivity:(NSString *)activityAttributes
pushToStartToken:(NSData *)pushToStartToken
completion:(MTPLiveActivityTokenCompletion)completion
seq:(NSInteger)seq;
Description du paramètre
Attributs d'activité
Type de propriété défini par une certaine liveActivity
pushToStartToken
pushToStartToken, pushToStartToken correspondant à l'activité live
achèvement
*Le code d'état correspondant utilisé pour le retour de rappel : 0 correspond au succès. Pour les autres codes retour, veuillez vous référer à la définition du code d'erreur. seq est le numéro de séquence de session transmis lors de l'appel
*suite
Le numéro de séquence transmis lors de la requête sera renvoyé inchangé lors du rappel
Rappel de rapport LiveActivity pushToStartToken (Bloc)
typedef void (^MTPLiveActivityTokenCompletion)(NSInteger iResCode, NSString *iLiveActivityId, NSData *token, NSInteger seq);
Signaler le PushToken de liveActivity (jeton de mise à jour)
Méthode - registerLiveActivity:pushToken:completion:seq :
Appelez cette API pour signaler le PushToken d'une certaine liveActivity et renvoyer le résultat dans le bloc.
Versions prises en charge
Version de départ prise en charge : 4.4.0
Définition de l'interface
+ (void)registerLiveActivity:(NSString *)liveActivityId
pushToken:(NSData *)pushToken
completion:(MTPLiveActivityTokenCompletion)completion
seq:(NSInteger)seq;
Description du paramètre
liveActivityId
Impossible de définir liveActivityId sur 24 octets.
- Identifie une certaine liveActivity, qui est personnalisée par le développeur et qu'il est recommandé d'être unique. EngageLab détermine le public cible via ce liveActivityId. Le type doit être de type NSString. Lorsque le pushToken de liveActivity change, veuillez appeler cette interface pour le signaler à temps.
jeton push
Le pushToken correspondant à cette liveactivité.
achèvement
*Le code d'état correspondant utilisé pour le retour de rappel : 0 correspond au succès. Pour les autres codes retour, veuillez vous référer à la définition du code d'erreur. seq est le numéro de séquence de session transmis lors de l'appel
*suite
Le numéro de séquence transmis lors de la requête sera renvoyé inchangé lors du rappel
Rappel de rapport LiveActivity PushToken (Bloc)
typedef void (^MTPLiveActivityTokenCompletion)(NSInteger iResCode, NSString *iLiveActivityId, NSData *token, NSInteger seq);
Push VoIP
Description de la fonction
Après iOS 8, un push VoIP basé sur le framework PushKit a été introduit, qui permet à l'application de l'utilisateur de réveiller l'application et d'exécuter du code lorsqu'elle est supprimée.
Attention : après iOS 13, Apple n'autorise plus les applications PushKit dans les scénarios de téléphone non VoIP. Si vous devez utiliser Pushkit, vous devez accéder à l'interface Callkit.
Versions prises en charge
Version de départ prise en charge : v4.4.0.
Soumettre le jeton
enregistrerVoipToken :
Soumettre le jeton VoIP au serveur EngageLab
Définition de l'interface
+ (void)registerVoipToken:(NSData *)voipToken;
Description du paramètre
*voipToken VoipToken renvoyé par le système
Traitement des messages VoIP
gérerVoipNotification :
Traitez les messages VoIP reçus et utilisez-les pour collecter des statistiques sur l'état de livraison VoIP.
Définition de l'interface
+ (void)handleVoipNotification:(NSDictionary *)remoteInfo;
Description du paramètre
- Contenu du message RemoteInfo
Interfaces liées à l'extension du service de notification
Versions prises en charge
SDK d'extension du service de notification v3.0.0 et versions ultérieures.
Description de la fonction
Utilisez le SDK d’extension du service de notification pour signaler l’état de livraison push.
Définir l'interface de la clé d'application
Définir l'interface appkey, qui doit être appelée à l'avance
Définition de l'interface
+ (void)mtpushSetAppkey:(NSString *)appkey
Description du paramètre
- La clé d'application doit être cohérente avec la clé d'application du SDK MTPush dans l'application principale
Statistiques d'affichage des messages
Interface de statistiques de livraison des messages, appelez cette interface pour signaler les données liées à MTPush dans le corps du message APN.
Définition de l'interface
+ (void)mtpushReceiveNotificationRequest:(UNNotificationRequest *)request with:(void (^)(void))completion
Description du paramètre
- demander UNNotificationRequest
- rappel du rapport de livraison du message d'achèvement, veuillez effectuer des opérations telles que l'affichage des APN dans ce rappel.
Fermer le journal
La valeur par défaut est activée. Il est recommandé de le désactiver lors de la publication pour réduire les E/S inutiles.
Définition de l'interface
+ (void)setLogOff
Fonction de diffusion vocale
Cette fonction prend en charge les systèmes iOS14 et supérieurs.
Versions prises en charge
Version de départ prise en charge : v4.3.4.
Définir appGroupId
+ (void)mtpushSetAppGroupId:(NSString *)appGroupId;
Description du paramètre
- appGroupId : doit être identique à la valeur appGroupId définie par + (void)setAppGroupId:(NSString *)appGroupId ; méthode dans l’application principale.
Gérer les notifications vocales
Interface de statistiques de livraison des messages, appelez cette interface pour signaler les données liées à MTPush dans le corps du message APN.
Définition de l'interface
+ (void)handleVoice:(UNNotificationRequest *)request with:(void (^)(NSString *soundName))completion;
Description du paramètre
- demander UNNotificationRequest
- l'achèvement est le rappel une fois le traitement de la notification vocale terminé. Une fois le traitement réussi, le nom de la voix traitée soundName sera renvoyé et le nom de la voix sera remplacé par la valeur UNNotificationRequest.content.sound.
Exemple d'appel
Objectif-C
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
UNMutableNotificationContent *bestAttemptContent = [request.content mutableCopy];
[MTNotificationExtensionService mtpushSetAppGroupId:@"xxx"];
[MTNotificationExtensionService setSiteName:@"您的siteName"]; // 4.3.5版本及以后不需要主动设置数据中心
[MTNotificationExtensionService mtpushSetAppkey:@"您的appkey"];
// 处理语音文件
[MTNotificationExtensionService handleVoice:request with:^(NSString *soundName) {
if (soundName && soundName.length >= 0 ) {
// 语音文件处理成功后将通知的sound设置为处理好的语音文件名
bestAttemptContent.sound = [UNNotificationSound soundNamed:soundName];
}
// 继续调用推送统计上报功能api
[MTNotificationExtensionService mtpushReceiveNotificationRequest:request with:^ {
NSLog(@"apns upload success");
self.contentHandler(bestAttemptContent);
}];
}];
}
Rapide
func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
var bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent) ?? request.content
MTNotificationExtensionService.mtpushSetAppGroupId("xxx")
MTNotificationExtensionService.setSiteName("您的siteName") // 4.3.5版本及以后不需要主动设置数据中心
MTNotificationExtensionService.mtpushSetAppkey("您的appkey")
// 处理语音文件
MTNotificationExtensionService.handleVoice(request) { (soundName) in
if let soundName = soundName, soundName.count >= 0 {
// 语音文件处理成功后将通知的sound设置为处理好的语音文件名
bestAttemptContent.sound = UNNotificationSound(named: UNNotificationSoundName(soundName))
}
// 继续调用推送统计上报功能api
MTNotificationExtensionService.mtpushReceiveNotificationRequest(request) {
print("apns upload success")
self.contentHandler(bestAttemptContent)
}
}
}










