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;
              
              + (void)addTags:(NSSet<NSString *> *)tags
 completion:(MTPushTagsOperationCompletion)completion
        seq:(NSInteger)seq;

            
Afficher ce bloc de code dans la fenêtre flottante

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

* 请求时传入的序列号,会在回调时原样返回
              
              * 请求时传入的序列号,会在回调时原样返回

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)setTags:(NSSet<NSString *> *)tags
 completion:(MTPushTagsOperationCompletion)completion
        seq:(NSInteger)seq;

            
Afficher ce bloc de code dans la fenêtre flottante

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

* 请求时传入的序列号,会在回调时原样返回
              
              * 请求时传入的序列号,会在回调时原样返回

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)deleteTags:(NSSet<NSString *> *)tags
 completion:(MTPushTagsOperationCompletion)completion
        seq:(NSInteger)seq;

            
Afficher ce bloc de code dans la fenêtre flottante

Description du paramètre

  • balises

    • 不能设置 nil 或者空集合([NSSet set])
    • 集合成员类型要求为 NSString 类型
    • 每次调用至少删除一个 tag
    • 有效的标签组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|
    • 限制:每个 tag 命名长度限制为 40 字节,最多支持删除 1000 个 tag,但总长度不得超过 5 K 字节。(判断长度需采用 UTF-8 编码)
  • achèvement

    • 回调返回对应的参数 tags。并返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号

*suite

* 请求时传入的序列号,会在回调时原样返回
              
              * 请求时传入的序列号,会在回调时原样返回

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)cleanTags:(MTPushTagsOperationCompletion)completion
        seq:(NSInteger)seq;

            
Afficher ce bloc de code dans la fenêtre flottante

Description du paramètre

  • achèvement

    • 回调返回的 tags 为 nil。返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号

*suite

* 请求时传入的序列号,会在回调时原样返回
              
              * 请求时传入的序列号,会在回调时原样返回

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)getAllTags:(MTPushTagsOperationCompletion)completion
        seq:(NSInteger)seq;

            
Afficher ce bloc de code dans la fenêtre flottante

Description du paramètre

  • achèvement

    • 回调返回的 tags 为查询结果。返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号

*suite

* 请求时传入的序列号,会在回调时原样返回
              
              * 请求时传入的序列号,会在回调时原样返回

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)validTag:(NSString *)tag
 completion:(MTPushTagValidOperationCompletion)completion
        seq:(NSInteger)seq;

            
Afficher ce bloc de code dans la fenêtre flottante

Description du paramètre

*étiqueter

* 不能设置 nil 或者空字符串 * 有效的标签组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.| * 限制:每个 tag 命名长度限制为 40 字节(判断长度需采用 UTF-8 编码)
              
              * 不能设置 nil 或者空字符串
* 有效的标签组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|
* 限制:每个 tag 命名长度限制为 40 字节(判断长度需采用 UTF-8 编码)

            
Afficher ce bloc de code dans la fenêtre flottante
  • achèvement

    • 回调返回对应的参数 tag。并返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号
    • 在回调中查看 isBind 属性查看是否已经设置,YES 为已经设置

*suite

* 请求时传入的序列号,会在回调时原样返回
              
              * 请求时传入的序列号,会在回调时原样返回

            
Afficher ce bloc de code dans la fenêtre flottante

Bloc de balises

typedef void (^MTPushTagsOperationCompletion)(NSInteger iResCode, NSSet *iTags, NSInteger seq); typedef void (^MTPushTagValidOperationCompletion)(NSInteger iResCode, NSSet *iTags, NSInteger seq, BOOL isBind);
              
              typedef void (^MTPushTagsOperationCompletion)(NSInteger iResCode, NSSet *iTags, NSInteger seq);
typedef void (^MTPushTagValidOperationCompletion)(NSInteger iResCode, NSSet *iTags, NSInteger seq, BOOL isBind);

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)setAlias:(NSString *)alias
  completion:(MTPushAliasOperationCompletion)completion
         seq:(NSInteger)seq;

            
Afficher ce bloc de code dans la fenêtre flottante

Description du paramètre

  • pseudonyme Achèvement - 不能设置 nil 或者空字符串 @""
    • 每次调用设置有效的别名,覆盖之前的设置
    • 有效的别名组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|
    • 限制:alias 命名长度限制为 40 字节。(判断长度需采用 UTF-8 编码)
* 回调返回对应的参数 alias。并返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号
              
              * 回调返回对应的参数 alias。并返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号

            
Afficher ce bloc de code dans la fenêtre flottante

*suite

* 请求时传入的序列号,会在回调时原样返回
              
              * 请求时传入的序列号,会在回调时原样返回

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)deleteAlias:(MTPushAliasOperationCompletion)completion
            seq:(NSInteger)seq;

            
Afficher ce bloc de code dans la fenêtre flottante

Description du paramètre

  • achèvement

    • 回调返回的 tags 为 nil。返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号

*suite

* 请求时传入的序列号,会在回调时原样返回
              
              * 请求时传入的序列号,会在回调时原样返回

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)getAlias:(MTPushAliasOperationCompletion)completion
         seq:(NSInteger)seq;

            
Afficher ce bloc de code dans la fenêtre flottante

Description du paramètre

  • achèvement

    • 回调返回的 tags 为查询结果。返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号

*suite

* 请求时传入的序列号,会在回调时原样返回
              
              * 请求时传入的序列号,会在回调时原样返回

            
Afficher ce bloc de code dans la fenêtre flottante

Bloc d'alias

typedef void (^MTPushAliasOperationCompletion)(NSInteger iResCode, NSString *iAlias, NSInteger seq);
              
              typedef void (^MTPushAliasOperationCompletion)(NSInteger iResCode, NSString *iAlias, NSInteger seq);

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)pageEnterTo:(NSString *)pageName
+ (void)pageLeave:(NSString *)pageName;

            
Afficher ce bloc de code dans la fenêtre flottante

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"]; }
              
              // 例如可以在 ViewController 的 viewDidAppear: 和  viewDidDisappear: 方法中配套调用
- (void)viewDidAppear:(BOOL)animated {
  [super viewDidAppear:animated];
  [MTPushService pageEnterTo:@"AViewController"];
}

- (void)viewDidDisappear:(BOOL)animated {
  [super viewDidDisappear:animated];
  [MTPushService pageLeave:@"AViewController"];
}

            
Afficher ce bloc de code dans la fenêtre flottante

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") }
              
              // 例如可以在 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")
}

            
Afficher ce bloc de code dans la fenêtre flottante

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]
              
              - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
// apn 内容获取:
NSDictionary *remoteNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey]

            
Afficher ce bloc de code dans la fenêtre flottante
  • 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;
              
              - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;

            
Afficher ce bloc de code dans la fenêtre flottante
  • 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;
              
              - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler;

            
Afficher ce bloc de code dans la fenêtre flottante
  • 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
              
              - (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

            
Afficher ce bloc de code dans la fenêtre flottante

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(); // 系统要求执行这个方法 }
              
              - (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();  // 系统要求执行这个方法
}

            
Afficher ce bloc de code dans la fenêtre flottante

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() // 系统要求执行这个方法 }
              
              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() // 系统要求执行这个方法
}

            
Afficher ce bloc de code dans la fenêtre flottante
  • 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{ //从通知设置界面进入应用 } }
              
              // iOS 12 Support
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(UNNotification *)notification{
  if (notification) {
    //从通知界面直接进入应用
  }else{
    //从通知设置界面进入应用
  }
}

            
Afficher ce bloc de code dans la fenêtre flottante

Rapide

// iOS 12 Support func mtpNotificationCenter(_ center: UNUserNotificationCenter, openSettingsFor notification: UNNotification?) { if let notification = notification { // 从通知界面直接进入应用 } else { // 从通知设置界面进入应用 } }
              
              // iOS 12 Support
func mtpNotificationCenter(_ center: UNUserNotificationCenter, openSettingsFor notification: UNNotification?) {
    if let notification = notification {
        // 从通知界面直接进入应用
    } else {
        // 从通知设置界面进入应用
    }
}

            
Afficher ce bloc de code dans la fenêtre flottante

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];
              
                  NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
    [defaultCenter addObserver:self selector:@selector(networkDidReceiveMessage:) name:kMTCNetworkDidReceiveMessageNotification object:nil];

            
Afficher ce bloc de code dans la fenêtre flottante

Rapide

let defaultCenter = NotificationCenter.default defaultCenter.addObserver(self, selector: #selector(networkDidReceiveMessage(_:)), name: Notification.Name.mtcNetworkDidReceiveMessage, object: nil)
              
                  let defaultCenter = NotificationCenter.default
    defaultCenter.addObserver(self, selector: #selector(networkDidReceiveMessage(_:)), name: Notification.Name.mtcNetworkDidReceiveMessage, object: nil)

            
Afficher ce bloc de code dans la fenêtre flottante

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 是自己定义的 }
              
                  - (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 是自己定义的
    }

            
Afficher ce bloc de code dans la fenêtre flottante

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 是自己定义的 }
              
                  @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 是自己定义的
    }

            
Afficher ce bloc de code dans la fenêtre flottante

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.
  • messageId est obtenu à partir de userInfo[@"_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;
              
              /*!
 * @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;

            
Afficher ce bloc de code dans la fenêtre flottante

Exemple de code

Objectif-C

// 完成自定义消息展示后调用 [MTPushService reportCustomDisplay:[userInfo[@"_j_msgid"] stringValue]]; // 用户点击自定义消息后调用 [MTPushService reportCustomClick:[userInfo[@"_j_msgid"] stringValue]];
              
              // 完成自定义消息展示后调用
[MTPushService reportCustomDisplay:[userInfo[@"_j_msgid"] stringValue]];

// 用户点击自定义消息后调用
[MTPushService reportCustomClick:[userInfo[@"_j_msgid"] stringValue]];

            
Afficher ce bloc de code dans la fenêtre flottante

Rapide

// 完成自定义消息展示后调用 MTPushService.reportCustomDisplay((userInfo["_j_msgid"] as? NSNumber)?.stringValue) // 用户点击自定义消息后调用 MTPushService.reportCustomClick((userInfo["_j_msgid"] as? NSNumber)?.stringValue)
              
              // 完成自定义消息展示后调用
MTPushService.reportCustomDisplay((userInfo["_j_msgid"] as? NSNumber)?.stringValue)

// 用户点击自定义消息后调用
MTPushService.reportCustomClick((userInfo["_j_msgid"] as? NSNumber)?.stringValue)

            
Afficher ce bloc de code dans la fenêtre flottante

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
              
              @interface AppDelegate ()<MTPushInAppMessageDelegate>

@end

            
Afficher ce bloc de code dans la fenêtre flottante

Rapide

extension AppDelegate: MTPushInAppMessageDelegate { }
              
              extension AppDelegate: MTPushInAppMessageDelegate {

}

            
Afficher ce bloc de code dans la fenêtre flottante

Définir un proxy

Veuillez ajouter le code suivant à -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

Objectif-C

[MTPushService setInAppMessageDelegate:self];
              
               [MTPushService setInAppMessageDelegate:self];

            
Afficher ce bloc de code dans la fenêtre flottante

Rapide

MTPushService.setInAppMessageDelegate(self)
              
              MTPushService.setInAppMessageDelegate(self)

            
Afficher ce bloc de code dans la fenêtre flottante

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); }
              
              #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);
}

            
Afficher ce bloc de code dans la fenêtre flottante

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 ?? [:])") }
              
              // 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 ?? [:])")
}

            
Afficher ce bloc de code dans la fenêtre flottante

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
              
              @interface AppDelegate ()<MTPushNotiInMessageDelegate>

@end

            
Afficher ce bloc de code dans la fenêtre flottante

Rapide

extension AppDelegate: MTPushNotiInMessageDelegate { }
              
              extension AppDelegate: MTPushNotiInMessageDelegate {

}

            
Afficher ce bloc de code dans la fenêtre flottante

Définir un proxy

Veuillez ajouter le code suivant à -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

Objectif-C

[MTPushService setNotiInMessageDelegate:self];
              
                [MTPushService setNotiInMessageDelegate:self];

            
Afficher ce bloc de code dans la fenêtre flottante

Rapide

MTPushService.setNotiInMessageDelegate(self)
              
              MTPushService.setNotiInMessageDelegate(self)

            
Afficher ce bloc de code dans la fenêtre flottante

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 }
              
              #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
}

            
Afficher ce bloc de code dans la fenêtre flottante

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 }
              
              // 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
}

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)registrationIDCompletionHandler:(void(^)(int resCode,NSString *registrationID))completionHandler;

            
Afficher ce bloc de code dans la fenêtre flottante

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); }];
              
              [MTPushService registrationIDCompletionHandler:^(int resCode, NSString *registrationID) {
    NSLog(@"resCode : %d,registrationID: %@",resCode,registrationID);
}];

            
Afficher ce bloc de code dans la fenêtre flottante

Rapide

MTPushService.registrationIDCompletionHandler { (resCode, registrationID) in print("resCode : \(resCode), registrationID: \(registrationID ?? "")") }
              
              MTPushService.registrationIDCompletionHandler { (resCode, registrationID) in
    print("resCode : \(resCode), registrationID: \(registrationID ?? "")")
}

            
Afficher ce bloc de code dans la fenêtre flottante

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
              
              +(NSString *)registrationID

            
Afficher ce bloc de code dans la fenêtre flottante

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
              
              + (BOOL)setBadge:(int)value

            
Afficher ce bloc de code dans la fenêtre flottante

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
              
              + (void)setBadge:(NSInteger)value completion:(void (^)(NSError *error))completion

            
Afficher ce bloc de code dans la fenêtre flottante

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
              
              + (void)resetBadge

            
Afficher ce bloc de code dans la fenêtre flottante

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]
              
              - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
// 本地通知内容获取:NSDictionary *localNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsLocalNotificationKey]

            
Afficher ce bloc de code dans la fenêtre flottante
  • 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
              
              // 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

            
Afficher ce bloc de code dans la fenêtre flottante
  • 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 // }
              
              - (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
  // }

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)addNotification:(MTPushNotificationRequest *)request;

            
Afficher ce bloc de code dans la fenêtre flottante

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]; }
              
              - (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];
}

            
Afficher ce bloc de code dans la fenêtre flottante

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) }
              
              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

    // 每周一早上 800 提醒,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)
}

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)removeNotification:(MTPushNotificationIdentifier *)identifier;

            
Afficher ce bloc de code dans la fenêtre flottante

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]; }
              
              - (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];
}

            
Afficher ce bloc de code dans la fenêtre flottante

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) }
              
              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)
}

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)findNotification:(MTPushNotificationIdentifier *)identifier;

            
Afficher ce bloc de code dans la fenêtre flottante

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]; }
              
              - (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];
}

            
Afficher ce bloc de code dans la fenêtre flottante

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) }
              
              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)
}

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)setDebugMode;

            
Afficher ce bloc de code dans la fenêtre flottante

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];
              
              [MTPushService setDebugMode];

            
Afficher ce bloc de code dans la fenêtre flottante

Rapide

MTPushService.setDebugMode()
              
              MTPushService.setDebugMode()

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)setLogOFF;

            
Afficher ce bloc de code dans la fenêtre flottante

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];
              
              [MTPushService setLogOFF];

            
Afficher ce bloc de code dans la fenêtre flottante

Rapide

MTPushService.setLogOFF()
              
              MTPushService.setLogOFF()

            
Afficher ce bloc de code dans la fenêtre flottante

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
              
              + (void)setMobileNumber:(NSString *)mobileNumber completion:(void (^)(NSError *error))completion

            
Afficher ce bloc de code dans la fenêtre flottante

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 } }];
              
              [MTPushService setMobileNumber:@"xxx" completion:^(NSError *error) {
        if (error) {
          NSLog(@"error:%@", error);
        }
        else {
          // success
        }
      }];

            
Afficher ce bloc de code dans la fenêtre flottante

Rapide

MTPushService.setMobileNumber("xxx") { (error) in if let error = error { print("error:\(error)") } else { // success } }
              
              MTPushService.setMobileNumber("xxx") { (error) in
    if let error = error {
        print("error:\(error)")
    } else {
        // success
    }
}

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)setUserLanguage:(NSString *)language completionHandler:(void(^)(int resCode, NSError *error))handler;

            
Afficher ce bloc de code dans la fenêtre flottante

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); }];
              
               [MTPushService setUserLanguage:@"zh_Hans" completionHandler:^(int resCode, NSError *error) {
    NSLog(@"language report: %d, %@", resCode, error);
  }];

            
Afficher ce bloc de code dans la fenêtre flottante

Rapide

MTPushService.setUserLanguage("zh_Hans") { (resCode, error) in print("language report: \(resCode), \(error?.localizedDescription ?? "")") }
              
              MTPushService.setUserLanguage("zh_Hans") { (resCode, error) in
    print("language report: \(resCode), \(error?.localizedDescription ?? "")")
}

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)setTcpSSL:(BOOL)isSSL;

            
Afficher ce bloc de code dans la fenêtre flottante

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];
              
                [MTPushService setTcpSSL:YES];

            
Afficher ce bloc de code dans la fenêtre flottante

Rapide

MTPushService.setTcpSSL(true)
              
              MTPushService.setTcpSSL(true)

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)turnOffPush:(nullable MTPushRegistrationCompletion)completion;

            
Afficher ce bloc de code dans la fenêtre flottante

Exemple de code

[MTPushService turnOffPush:^(NSInteger code, NSString *message) { NSLog(@"turnOffPush code: %ld, message: %@", (long)code, message); }];
              
              [MTPushService turnOffPush:^(NSInteger code, NSString *message) {
    NSLog(@"turnOffPush code: %ld, message: %@", (long)code, message);
}];

            
Afficher ce bloc de code dans la fenêtre flottante

Description du paramètre

  • completion : Ferme le rappel du résultat, qui peut être nil ; 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;
              
              + (void)turnOnPush:(NSString *)appKey
           channel:(nullable NSString *)channel
  apsForProduction:(BOOL)isProduction
advertisingIdentifier:(nullable NSString *)advertisingId;

            
Afficher ce bloc de code dans la fenêtre flottante

Exemple de code

[MTPushService turnOnPush:@"your_app_key" channel:@"App Store" apsForProduction:YES advertisingIdentifier:nil];
              
              [MTPushService turnOnPush:@"your_app_key"
                  channel:@"App Store"
         apsForProduction:YES
  advertisingIdentifier:nil];

            
Afficher ce bloc de code dans la fenêtre flottante

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, YES est l'environnement de production et NO est 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;
              
              + (void)setAppGroupId:(NSString *)appGroupId;

            
Afficher ce bloc de code dans la fenêtre flottante

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"];
              
                [MTPushService setAppGroupId:@"您的appGroupId"];

            
Afficher ce bloc de code dans la fenêtre flottante

Rapide

MTPushService.setAppGroupId("您的appGroupId")
              
              MTPushService.setAppGroupId("您的appGroupId")

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)enablePushTextToSpeech:(BOOL)enable;

            
Afficher ce bloc de code dans la fenêtre flottante

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];
              
                [MTPushService enablePushTextToSpeech:YES];

            
Afficher ce bloc de code dans la fenêtre flottante

Rapide

MTPushService.enablePushTextToSpeech(true)
              
              MTPushService.enablePushTextToSpeech(true)

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)enableResetOnDeviceChange:(BOOL)enable;

            
Afficher ce bloc de code dans la fenêtre flottante

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];
              
                [MTPushService enableResetOnDeviceChange:YES];

            
Afficher ce bloc de code dans la fenêtre flottante

Rapide

MTPushService.enableResetOnDeviceChange(true)
              
              MTPushService.enableResetOnDeviceChange(true)

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
                  + (void)registerLiveActivity:(NSString *)activityAttributes
            pushToStartToken:(NSData *)pushToStartToken
                  completion:(MTPLiveActivityTokenCompletion)completion
                        seq:(NSInteger)seq;

            
Afficher ce bloc de code dans la fenêtre flottante

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);
              
              
typedef void (^MTPLiveActivityTokenCompletion)(NSInteger iResCode, NSString *iLiveActivityId, NSData *token, NSInteger seq);

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
                   + (void)registerLiveActivity:(NSString *)liveActivityId
                   pushToken:(NSData *)pushToken
                  completion:(MTPLiveActivityTokenCompletion)completion
                         seq:(NSInteger)seq;

            
Afficher ce bloc de code dans la fenêtre flottante

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);
              
              
typedef void (^MTPLiveActivityTokenCompletion)(NSInteger iResCode, NSString *iLiveActivityId, NSData *token, NSInteger seq);

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)registerVoipToken:(NSData *)voipToken;

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)handleVoipNotification:(NSDictionary *)remoteInfo;

            
Afficher ce bloc de code dans la fenêtre flottante

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
              
              + (void)mtpushSetAppkey:(NSString *)appkey

            
Afficher ce bloc de code dans la fenêtre flottante

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
              
              + (void)mtpushReceiveNotificationRequest:(UNNotificationRequest *)request with:(void (^)(void))completion

            
Afficher ce bloc de code dans la fenêtre flottante

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
              
              + (void)setLogOff

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)mtpushSetAppGroupId:(NSString *)appGroupId;

            
Afficher ce bloc de code dans la fenêtre flottante

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;
              
              + (void)handleVoice:(UNNotificationRequest *)request with:(void (^)(NSString *soundName))completion;

            
Afficher ce bloc de code dans la fenêtre flottante

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); }]; }]; }
              
              - (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);
    }];

  }];

}

            
Afficher ce bloc de code dans la fenêtre flottante

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) } } }
              
              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)
        }
    }
}

            
Afficher ce bloc de code dans la fenêtre flottante
Icon Solid Transparent White Qiyu
Contactez-nous