iOS-API-Leitfaden

Anwendbare Version

Die MTPush iOS SDK-Version, die diesem Artikel entspricht, ist: v3.0.0 und spätere Versionen.

Rechenzentrum einrichten

Funktionsbeschreibung

Diese Funktion wird verwendet, um das Rechenzentrum abzugleichen, das Sie im EngageLab-Portal ausgewählt haben. Bitte stellen Sie sicher, dass das von Ihnen eingestellte Rechenzentrum mit dem im Portal ausgewählten übereinstimmt. Wenn dies nicht festgelegt ist, verwendet das SDK den Standardknoten des Rechenzentrums in Singapur.

In v4.3.5 und späteren Versionen ist diese Schnittstelle ungültig. Entwickler müssen diese Schnittstelle nicht manuell aufrufen, um das Rechenzentrum einzurichten. Das SDK ordnet basierend auf dem Appkey automatisch das entsprechende Rechenzentrum zu.

Unterstützte Versionen

Unterstützte Startversion: v4.3.0

Ungültige Version

Version beginnt abzulaufen: v4.3.5

Schnittstellendefinition

  • (void)setSiteName:(NSString *)siteName;

Parameterbeschreibung

*SiteName

  • Name des Rechenzentrums

Anweisungen aufrufen

Bitte rufen Sie diese Schnittstelle auf, bevor Sie die Initialisierungsschnittstelle aufrufen (setupWithOption:channel:apsForProduction:advertisingIdentifier).

Tags- und Aliase-API (iOS)

Funktionsbeschreibung

Herzliche Erinnerung: Bitte achten Sie beim Festlegen des Label-Alias auf das Rückrufergebnis.

kann nur dann an das Ziel gepusht werden, wenn der Rückgabewert des Rückrufs 0 ist und die Einstellung erfolgreich ist. Andernfalls gibt die Server-API einen 1011-Fehler zurück. Alle Rückruffunktionen werden im Hauptthread ausgeführt.


Stellt mehrere verwandte APIs zum Betreiben von Aliasen und Tags bereit.

Diese APIs können überall in der App aufgerufen werden.

Alias-Alias

Geben Sie einen Alias ​​an, um den Benutzer zu identifizieren, der die Anwendung installiert hat. Wenn Sie in Zukunft Nachrichten an diesen Benutzer senden, können Sie diesen Alias ​​zur Angabe verwenden. Pro Benutzer kann nur ein Alias ​​angegeben werden.

Innerhalb derselben Anwendung wird empfohlen, unterschiedliche Aliase für verschiedene Benutzer zu verwenden. Auf diese Weise wird der Benutzer anhand des Alias ​​so weit wie möglich eindeutig identifiziert.

Das System beschränkt, dass ein Alias ​​nur einen Benutzer angeben kann.

Beispiel: In einem Spiel, in dem sich ein Benutzer anmelden möchte, kann der Alias ​​auf „Benutzer-ID“ festgelegt werden. Wenn während des Spielbetriebs festgestellt wird, dass der Benutzer das Spiel 3 Tage lang nicht gespielt hat, wird die serverseitige API basierend auf der Benutzer-ID aufgerufen und eine Benachrichtigung an den Client gesendet, um den Benutzer daran zu erinnern.

Tag-Tag

Kennzeichnen Sie Benutzer, die die Anwendung installiert haben. Sein Hauptzweck besteht darin, Entwicklern das Senden von Push-Nachrichten in Stapeln basierend auf Tags zu erleichtern.

Jedem Benutzer können mehrere Tags zugewiesen werden.

Beispiel: Spiel, alte_Seite, Frauen

Neues Tag hinzufügen

Rufen Sie diese API auf, um Beschriftungen hinzuzufügen und die Ergebnisse im Block zurückzugeben

Hinweis: Diese Schnittstelle fügt Logik hinzu, überschreibt sie nicht.

Unterstützte Versionen

Unterstützte Startversion: v3.5.0.

Schnittstellendefinition

+ (void)addTags:(NSSet<NSString *> *)tags completion:(MTPushTagsOperationCompletion)completion seq:(NSInteger)seq;
              
              + (void)addTags:(NSSet<NSString *> *)tags
 completion:(MTPushTagsOperationCompletion)completion
        seq:(NSInteger)seq;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • Tags

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

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

*seq

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Cover-Tag

Rufen Sie diese API auf, um die Bezeichnung festzulegen und das Ergebnis im Block zurückzugeben

Hinweis: Diese Schnittstelle deckt die Logik ab und fügt keine Logik hinzu. Durch den Aufruf dieser Schnittstelle werden alle zuvor gesetzten Tags überschrieben.

Unterstützte Versionen

Unterstützte Startversion: v3.5.0.

Schnittstellendefinition

+ (void)setTags:(NSSet<NSString *> *)tags completion:(MTPushTagsOperationCompletion)completion seq:(NSInteger)seq;
              
              + (void)setTags:(NSSet<NSString *> *)tags
 completion:(MTPushTagsOperationCompletion)completion
        seq:(NSInteger)seq;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • Tags

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

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

*seq

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Tag löschen

Rufen Sie diese API auf, um die Beschriftung zu löschen und das Ergebnis im Block zurückzugeben

Unterstützte Versionen

Unterstützte Startversion: v3.5.0.

Schnittstellendefinition

+ (void)deleteTags:(NSSet<NSString *> *)tags completion:(MTPushTagsOperationCompletion)completion seq:(NSInteger)seq;
              
              + (void)deleteTags:(NSSet<NSString *> *)tags
 completion:(MTPushTagsOperationCompletion)completion
        seq:(NSInteger)seq;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • Tags

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

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

*seq

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Tag löschen

Rufen Sie diese API auf, um alle Tags zu löschen und die Ergebnisse im Block zurückzugeben

Unterstützte Versionen

Unterstützte Startversion: v3.5.0.

Schnittstellendefinition

+ (void)cleanTags:(MTPushTagsOperationCompletion)completion seq:(NSInteger)seq;
              
              + (void)cleanTags:(MTPushTagsOperationCompletion)completion
        seq:(NSInteger)seq;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • Abschluss

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

*seq

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Abfrage-Tag

Rufen Sie diese API auf, um alle Tags abzurufen und die Ergebnisse im Block zurückzugeben

Unterstützte Versionen

Unterstützte Startversion: v3.5.0.

Schnittstellendefinition

+ (void)getAllTags:(MTPushTagsOperationCompletion)completion seq:(NSInteger)seq;
              
              + (void)getAllTags:(MTPushTagsOperationCompletion)completion
        seq:(NSInteger)seq;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • Abschluss

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

*seq

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Verifizierungs-Tag

Rufen Sie diese API auf, um zu überprüfen, ob das Ziel-Tag festgelegt wurde

Unterstützte Versionen

Unterstützte Startversion: v3.5.0.

Schnittstellendefinition

+ (void)validTag:(NSString *)tag completion:(MTPushTagValidOperationCompletion)completion seq:(NSInteger)seq;
              
              + (void)validTag:(NSString *)tag
 completion:(MTPushTagValidOperationCompletion)completion
        seq:(NSInteger)seq;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

*Etikett

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

            
Diesen Codeblock im schwebenden Fenster anzeigen
  • Abschluss

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

*seq

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Tags-Block

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Alias festlegen

Rufen Sie diese API auf, um den Alias ​​festzulegen

Unterstützte Versionen

Unterstützte Startversion: v3.5.0.

Schnittstellendefinition

+ (void)setAlias:(NSString *)alias completion:(MTPushAliasOperationCompletion)completion seq:(NSInteger)seq;
              
              + (void)setAlias:(NSString *)alias
  completion:(MTPushAliasOperationCompletion)completion
         seq:(NSInteger)seq;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • Alias
    • 不能设置 nil 或者空字符串 @""
    • 每次调用设置有效的别名,覆盖之前的设置
    • 有效的别名组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|
    • 限制:alias 命名长度限制为 40 字节。(判断长度需采用 UTF-8 编码)
  • Abschluss

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

*seq

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Alias ​​löschen

Rufen Sie diese API auf, um den Alias ​​zu löschen und das Ergebnis im Block zurückzugeben

Unterstützte Versionen

Unterstützte Startversion: v3.5.0.

Schnittstellendefinition

+ (void)deleteAlias:(MTPushAliasOperationCompletion)completion seq:(NSInteger)seq;
              
              + (void)deleteAlias:(MTPushAliasOperationCompletion)completion
            seq:(NSInteger)seq;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • Abschluss

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

*seq

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Abfragealias

Rufen Sie diese API auf, um den aktuellen Alias ​​abzufragen und das Ergebnis im Block zurückzugeben

Unterstützte Versionen

Unterstützte Startversion: v3.5.0.

Schnittstellendefinition

+ (void)getAlias:(MTPushAliasOperationCompletion)completion seq:(NSInteger)seq;
              
              + (void)getAlias:(MTPushAliasOperationCompletion)completion
         seq:(NSInteger)seq;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • Abschluss

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

*seq

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Alias-Block

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

In-App-Nachrichten

Unterstützte Versionen

Unterstützte Startversion: v4.5.0.

Funktionsbeschreibung

Um die In-App-Messaging-Funktion nutzen zu können, müssen Sie diese Schnittstelle konfigurieren. In-App-Nachrichten lösen beim Seitenwechsel eine Anzeigelogik aus und In-App-Nachrichten können auf einer bestimmten Seite angezeigt werden. Diese Schnittstelle synchronisiert die Ein- und Ausstiegsaktionen der Seite mit dem SDK, und das SDK führt basierend auf dieser Logik eine Anzeigelogikverarbeitung von In-App-Nachrichten durch.

Schnittstellendefinition

+ (void)pageEnterTo:(NSString *)pageName + (void)pageLeave:(NSString *)pageName;
              
              + (void)pageEnterTo:(NSString *)pageName
+ (void)pageLeave:(NSString *)pageName;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Aufrufbeispiel

Anweisungen aufrufen

Bitte verwenden Sie die Schnittstellen pageEnterTo: und pageLeave: zusammen, rufen Sie pageEnterTo: auf, wenn Sie die Seite betreten, und rufen Sie pageLeave: auf, wenn Sie die Seite verlassen.

Aufrufbeispiel

Ziel-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"];
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Erhalten Sie APNs (Benachrichtigung) Push-Inhalte

Unterstützte Versionen

Unterstützte Startversion: v3.0.0.

Funktionsbeschreibung

Wenn ein iOS-Gerät eine Push-Benachrichtigung (APNs) empfängt und der Benutzer auf die Push-Benachrichtigung klickt, um die App zu öffnen, verarbeitet die Anwendung sie je nach Status und muss den folgenden beiden Methoden in AppDelegate Code hinzufügen, um den APN-Inhalt abzurufen.

  • Wenn der App-Status nicht ausgeführt wird, wird diese Funktion aufgerufen. Wenn launchOptions UIApplicationLaunchOptionsRemoteNotificationKey enthält, bedeutet dies, dass der Benutzer auf die APN-Benachrichtigung geklickt hat, wodurch die App gestartet und ausgeführt wird. Wenn der entsprechende Schlüsselwert nicht enthalten ist, bedeutet dies, dass die App nicht durch Klicken auf den APN gestartet wurde, sondern möglicherweise durch direktes Klicken auf das Symbol oder etwas anderes.
- (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]

            
Diesen Codeblock im schwebenden Fenster anzeigen
  • Basierend auf Systemversionen von iOS 6 und niedriger: Wenn der App-Status im Vordergrund steht oder auf die Benachrichtigungsmeldung in der Benachrichtigungsleiste geklickt wird, wird diese Funktion aufgerufen. Ob das Programm im Vordergrund ausgeführt wird, kann dadurch bestimmt werden, ob der applicationState von AppDelegate UIApplicationStateActive ist. Diese Situation wird in dieser Funktion behandelt:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;
              
              - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;

            
Diesen Codeblock im schwebenden Fenster anzeigen
  • Basierend auf Systemversionen von iOS 7 und höher: Wenn Sie die Remote-Benachrichtigungsfunktion von iOS 7 verwenden, muss die Verarbeitungsfunktion Folgendes verwenden:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler;
              
              - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler;

            
Diesen Codeblock im schwebenden Fenster anzeigen

– Basierend auf Systemversionen von iOS 10 und höher wird die ursprüngliche [Anwendung: didReceiveRemoteNotification:] vom System aufgegeben. Durch Hinzufügen von [UNUserNotificationCenterDelegate willPresentNotification:withCompletionHandler:] im UserNotifications Framework Oder stattdessen die Methode [UNUserNotificationCenterDelegate didReceiveNotificationResponse:withCompletionHandler:]. In der aktuellen Version und höher kann die vom SDK gekapselte MTPushRegisterDelegate-Protokollmethode implementiert werden, um sich an die neue Delegate-Protokollmethode in iOS10 anzupassen. Das heißt, die folgenden zwei Methoden:

- (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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Beispielcode

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

– Basierend auf iOS 12 und höher hat UserNotifications Framework eine neue Rückrufmethode [userNotificationCenter:openSettingsForNotification:] hinzugefügt, und MTPushRegisterDelegate hat in den Versionen 3.1.1 und höher auch eine entsprechende Rückrufmethode hinzugefügt. Diese Methode wird aufgerufen, wenn die Anwendung über die externe Benachrichtigungsschnittstelle oder die Benachrichtigungseinstellungsschnittstelle aufgerufen wird.

Ziel-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{
    //从通知设置界面进入应用
  }
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

// 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 {
        // 从通知设置界面进入应用
    }
}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Referenzdokument: Umgang mit lokalen und Remote-Benachrichtigungen

Erhalten Sie benutzerdefinierte Nachrichten-Push-Inhalte

Unterstützte Versionen

Unterstützte Startversion: v3.0.0.

Funktionsbeschreibung

  • Benutzerdefinierter Nachrichten-Push kann nur empfangen werden, wenn das Frontend ausgeführt wird.
  • Erhalten Sie den vom Benutzer gepushten benutzerdefinierten Nachrichteninhalt und -titel sowie zusätzliche Felder usw. vom MTPush-Server.

Implementierungsmethode

Um iOS-Push-Inhalte zu erhalten, müssen Benachrichtigungen in der Delegate-Klasse registriert und Rückrufmethoden implementiert werden.

Fügen Sie in der Methode (BOOL)application:(UIApplication _)application didFinishLaunchingWithOptions:(NSDictionary _) launchOptions den folgenden Code hinzu:

Ziel-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];

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

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)

            
Diesen Codeblock im schwebenden Fenster anzeigen

Implementieren Sie die Rückrufmethode networkDidReceiveMessage

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • Inhalt: Holen Sie sich den gepushten Inhalt – messageID: Holen Sie sich die gepushte Nachrichten-ID (Schlüssel ist @"_j_msgid")
  • Extras: Benutzerdefinierte Parameter abrufen
  • „customizeField1“: Benutzerdefinierten Wert basierend auf dem benutzerdefinierten Schlüssel abrufen

Weitere Informationen zur Implementierung finden Sie in der Demo im komprimierten SDK-Download-Paket.

Benutzerdefinierte Nachrichtenanzeige und Klicks melden

Funktionsbeschreibung

  • Rufen Sie nach Abschluss der visuellen Anzeige der benutzerdefinierten Nachricht reportCustomDisplay: auf. Die Meldung kommt ≠ Anzeige. Bei der Anzahl der Impressionen werden nur aktive Anrufe gezählt. – reportCustomClick: wird aufgerufen, nachdem der Benutzer auf die benutzerdefinierte Nachricht geklickt hat. Das Öffnen der App ≠ Klicken muss eine Benutzerinteraktion sein, die durch die Nachricht ausgelöst wird. – messageId wird von userInfo[@"_j_msgid"] im benutzerdefinierten Nachrichtenrückruf abgerufen.

Schnittstellendefinition

Ziel-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;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Codebeispiel

Ziel-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]];

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

// 完成自定义消息展示后调用 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)

            
Diesen Codeblock im schwebenden Fenster anzeigen

Erhalten Sie In-App-Nachrichten-Push-Inhalte

Unterstützte Versionen

v4.5.0 und nachfolgende Versionen

Funktionsbeschreibung

In-App-Nachrichten: APP kann In-App-Nachrichten nur empfangen, wenn sie im Vordergrund ausgeführt wird. Es gibt jetzt drei Arten von In-App-Nachrichten: Banner, Interstitial und Vollbild.

Durch Festlegen des Proxys für die In-App-Messaging-Funktion und Implementieren der entsprechenden Proxy-Methode können Sie den Inhalt der In-App-Nachricht erhalten.

Implementierungsmethode

Delegierten hinzufügen

Ziel-C

@interface AppDelegate ()<MTPushInAppMessageDelegate> @end
              
              @interface AppDelegate ()<MTPushInAppMessageDelegate>

@end

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

extension AppDelegate: MTPushInAppMessageDelegate { }
              
              extension AppDelegate: MTPushInAppMessageDelegate {

}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Proxy festlegen

Bitte fügen Sie den folgenden Code zu -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions hinzu

Ziel-C

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Fügen Sie eine Proxy-Methode für In-App-Nachrichtenrückrufe hinzu

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Erhalten Sie Push-Inhalte mit erweiterten Benachrichtigungen für Erinnerungsnachrichten

Unterstützte Versionen

v4.5.1 und nachfolgende Versionen

Funktionsbeschreibung

Erweiterte Erinnerungsnachricht für Benachrichtigungen: Beim Senden einer Benachrichtigung wird eine lokale Benachrichtigung anstelle einer Push-Benachrichtigung verwendet, um Zielbenutzer daran zu erinnern, die Benachrichtigungsberechtigungen deaktiviert haben.

Erweiterte In-App-Erinnerungsnachrichten können nur empfangen werden, wenn die App im Vordergrund ausgeführt wird. Um diese Funktion nutzen zu können, müssen Sie in den erweiterten Einstellungen der Push-Benachrichtigungen auf der Push-Plattform den Schalter „Erweiterte Benachrichtigungserinnerung“ aktivieren.

Durch Festlegen des Proxys der erweiterten Benachrichtigungs-Erinnerungsnachricht und Implementieren der entsprechenden Proxy-Methode können Sie den Inhaltstitel und zusätzliche Felder der Benachrichtigungs-erweiterten Erinnerungsnachricht erhalten.

Implementierungsmethode

Delegierten hinzufügen

Ziel-C

@interface AppDelegate ()<MTPushNotiInMessageDelegate> @end
              
              @interface AppDelegate ()<MTPushNotiInMessageDelegate>

@end

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

extension AppDelegate: MTPushNotiInMessageDelegate { }
              
              extension AppDelegate: MTPushNotiInMessageDelegate {

}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Proxy festlegen

Bitte fügen Sie den folgenden Code zu -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions hinzu

Ziel-C

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Fügen Sie eine Proxy-Methode für den Rückruf von Benachrichtigungserinnerungsnachrichten hinzu

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Registrierungs-ID abrufen

Unterstützte Versionen

Unterstützte Startversion: v3.0.0.

RegistrationID-Definition

Wenn sich eine in das MTPush SDK integrierte Anwendung zum ersten Mal erfolgreich beim MTPush-Server registriert, gibt der MTPush-Server eine eindeutige Identifikation des Geräts an den Client zurück – die Registrierungs-ID. Das MTPush SDK sendet die Registrierungs-ID in Form einer Übertragung an die Anwendung.

Die Anwendung kann diese Registrierungs-ID auf ihrem eigenen Anwendungsserver speichern und dann basierend auf der Registrierungs-ID Nachrichten oder Benachrichtigungen an das Gerät senden.

Registrierungs-ID abrufen (mit Block)

Schnittstellendefinition

+ (void)registrationIDCompletionHandler:(void(^)(int resCode,NSString *registrationID))completionHandler;
              
              + (void)registrationIDCompletionHandler:(void(^)(int resCode,NSString *registrationID))completionHandler;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • (void(^)(int resCode,NSString *registrationID))completionHandler -CompletionHandler wird verwendet, um das Festlegen von Rückgabeergebnissen zu verarbeiten – Der von resCode zurückgegebene Ergebnisstatuscode
    • RegistrationID gibt RegistrationID zurück

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Warme Erinnerung:
Es wird empfohlen, diese Schnittstelle zu verwenden, um die Registrierungs-ID zu erhalten. Beim Aufruf dieser Schnittstelle im Simulator gibt resCode 1011 und RegistrationID Null zurück.

Registrierungs-ID abrufen

Rufen Sie diese API auf, um die der Anwendung entsprechende Registrierungs-ID zu erhalten. Der entsprechende Wert wird nur zurückgegeben, wenn sich die Anwendung erfolgreich beim MTPush-Server registriert, andernfalls wird eine leere Zeichenfolge zurückgegeben.

Schnittstellendefinition

+(NSString *)registrationID
              
              +(NSString *)registrationID

            
Diesen Codeblock im schwebenden Fenster anzeigen

Warme Erinnerung:
Wenn die Anwendung auf einem iOS 9-System deinstalliert und erneut installiert wird, ändert sich das von APNs zurückgegebene Gerätetoken. Entwickler müssen die neueste Registrierungs-ID des Geräts erhalten. Bitte rufen Sie die Schnittstelle „RegistrationID“ in der Implementierungsmethode von kMTCNetworkDidLoginNotification auf, um die RegistrationID zu erhalten.

Zusätzliche Anweisungen

Push-Nachrichten und Benachrichtigungen über RegistrationID

Nachrichten und Benachrichtigungen können über RegistrationID übertragen werden. Wenn der Zielgruppenparameter RegistrationID ist, können sie basierend auf RegistrationID gepusht werden.

Abzeichen festlegen

Unterstützte Versionen

Unterstützte Startversion: v3.0.0.

Funktionsbeschreibung

Ein Abzeichen ist eine Nummer, die von iOS verwendet wird, um den Status einer Anwendung zu kennzeichnen, und die in der oberen rechten Ecke des Anwendungssymbols angezeigt wird. MTPush kapselt die Badge-Funktion und ermöglicht es Anwendungen, Badge-Werte auf den MTPush-Server hochzuladen. Der MTPush-Hintergrund hilft bei der Verwaltung der Push-Badge-Werte für jeden Benutzer und vereinfacht so das Festlegen von Push-Badges.

In tatsächlichen Anwendungen können Entwickler den Badge-Wert direkt erhöhen oder verringern, ohne die entsprechende Beziehung zwischen Benutzern und Badge-Werten aufrechterhalten zu müssen. Wenn Sie eine Nachricht senden, müssen Sie nur den Badge +1 auf der Konsole festlegen, und EngageLab gibt automatisch +1 für den Badge-Wert jedes auf dem Server gespeicherten Benutzers und sendet ihn dann an den Benutzer.

Eckmarkierung setzen

API setBadge Legen Sie den im MTPush-Server gespeicherten Badge-Wert fest

Schnittstellendefinition

+ (BOOL)setBadge:(int)value
              
              + (BOOL)setBadge:(int)value

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • Wertebereich: [0,99999]

Die Funktion UIApplication:setApplicationIconBadgeNumber muss weiterhin lokal aufgerufen werden, um den auf dem Symbol angezeigten Badge-Wert festzulegen.

  • Rückgabewert
    • Gibt TRUE innerhalb des Wertebereichs von value zurück, andernfalls FALSE

Eckmarke setzen (mit Ergebnisrückruf)

Beginnt mit der Unterstützung der Version: v5.2.0

Schnittstellendefinition

+ (void)setBadge:(NSInteger)value completion:(void (^)(NSError *error))completion
              
              + (void)setBadge:(NSInteger)value completion:(void (^)(NSError *error))completion

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • Wertebereich: [0,99999]
  • Rückruf des Abschlussergebnisses. Bei Erfolg ist der Fehler leer.

Die Funktion UIApplication:setApplicationIconBadgeNumber muss weiterhin lokal aufgerufen werden, um den auf dem Symbol angezeigten Badge-Wert festzulegen.

Eckmarkierung löschen

Löschen Sie den im MTPush-Server gespeicherten Badge-Wert, also [setBadge:0]

Schnittstellendefinition

+ (void)resetBadge
              
              + (void)resetBadge

            
Diesen Codeblock im schwebenden Fenster anzeigen

Lokale Benachrichtigung

Unterstützte Versionen

Unterstützte Startversion: v3.0.0.

Funktionsbeschreibung

Das iOS-Gerät erhält eine lokale Benachrichtigung. Wenn der Benutzer auf die Benachrichtigung klickt, um die Anwendung zu öffnen, verarbeitet die Anwendung sie je nach Status. Sie müssen in AppDelegate Code in den folgenden beiden Methoden hinzufügen, um den lokalen Benachrichtigungsinhalt zu erhalten:

  • Wenn der App-Status nicht ausgeführt wird, wird diese Funktion aufgerufen. Wenn launchOptions UIApplicationLaunchOptionsLocalNotificationKey enthält, bedeutet dies, dass der Benutzer auf die lokale Benachrichtigung geklickt hat, wodurch die App gestartet und ausgeführt wurde. Wenn der entsprechende Schlüsselwert nicht enthalten ist, bedeutet dies, dass die App nicht durch Klicken auf die lokale Benachrichtigung gestartet wurde. Es kann durch einen direkten Klick auf das Symbol oder etwas anderes gestartet werden.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; // 本地通知内容获取:NSDictionary *localNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsLocalNotificationKey]
              
              - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
// 本地通知内容获取:NSDictionary *localNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsLocalNotificationKey]

            
Diesen Codeblock im schwebenden Fenster anzeigen
  • Wenn der App-Status im Vordergrund oder im Hintergrund ausgeführt wird, wird diese Funktion aufgerufen. Ob das Programm im Vordergrund ausgeführt wird, kann dadurch bestimmt werden, ob der applicationState von AppDelegate UIApplicationStateActive ist. Diese Situation wird in dieser Funktion behandelt:
// 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

            
Diesen Codeblock im schwebenden Fenster anzeigen

– Unter iOS 10 und höher wird die obige Methode vom System aufgegeben und durch die Methode -[UNUserNotificationCenterDelegate willPresentNotification:withCompletionHandler:] oder -[UNUserNotificationCenterDelegate didReceiveNotificationResponse:withCompletionHandler:] im neuen UserNotifications Framework ersetzt. Zu diesem Zweck kapselt das SDK das MTPushRegisterDelegate-Protokoll. Sie müssen lediglich die entsprechende Protokollmethode implementieren, um sie an die neue Delegatenmethode in iOS 10 anzupassen, die mit der oben erwähnten neuen Remote-Push-Rückrufmethode übereinstimmt, dh der folgenden Methode:

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Lokale Benachrichtigungen registrieren/aktualisieren

Unterstützte Versionen

Unterstützte Startversion: v3.0.0.

Funktionsbeschreibung

API für Registrierung oder Update-Push (unterstützt iOS 10 und kompatibel mit Versionen unter iOS 10).

Schnittstellendefinition

+ (void)addNotification:(MTPushNotificationRequest *)request;
              
              + (void)addNotification:(MTPushNotificationRequest *)request;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

– Anforderungsentitätstyp [MTPushNotificationRequest], der die gepushten Attribute übergeben kann.

Anweisungen aufrufen

Durch die Übergabe des request.requestIdentifier einer vorhandenen Push-In-Anfrage wird der vorhandene Push aktualisiert, andernfalls wird ein neuer Push registriert.

Codebeispiel

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Lokale Benachrichtigung entfernen

Unterstützte Versionen

Unterstützte Startversion: v3.0.0.

Funktionsbeschreibung

Die API wird verwendet, um Push-Benachrichtigungen zu entfernen, die ausstehen oder im Benachrichtigungscenter angezeigt wurden (unterstützt iOS 10 und ist mit Versionen unter iOS 10 kompatibel).

Schnittstellendefinition

+ (void)removeNotification:(MTPushNotificationIdentifier *)identifier;
              
              + (void)removeNotification:(MTPushNotificationIdentifier *)identifier;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

– Bezeichner [MTPushNotificationIdentifier] Entitätstyp.

Anweisungen aufrufen

– Wenn für iOS 10 und höher die Kennung auf Null gesetzt ist, werden alle Push- und ausstehenden Push-Anfragen aus dem Benachrichtigungscenter entfernt. Sie können die entsprechenden Push- oder ausstehenden Push-Anfragen auch aus dem Benachrichtigungscenter entfernen, indem Sie „identifier.delivered“ und „identifier.identifiers“ festlegen. Wenn „identifier.identifiers“ auf Null oder ein leeres Array gesetzt ist, werden alle Push- oder ausstehenden Push-Anfragen vom Benachrichtigungscenter unter dem entsprechenden Flag entfernt. – Wenn der Identifikator unter iOS 10 auf Null gesetzt ist, werden alle Pushs entfernt und das Attribut „identifier.delivered“ ist ungültig. Darüber hinaus können Sie über Identifier.notificationObj ein bestimmtes Push-Objekt übergeben, um diesen Push zu entfernen.

Codebeispiel

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Lokale Benachrichtigungen finden

Unterstützte Versionen

Unterstützte Startversion: v3.0.0.

Funktionsbeschreibung

API zum Finden von Pushs (unterstützt iOS 10 und kompatibel mit Versionen unter iOS 10).

Schnittstellendefinition

+ (void)findNotification:(MTPushNotificationIdentifier *)identifier;
              
              + (void)findNotification:(MTPushNotificationIdentifier *)identifier;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

– Bezeichner [MTPushNotificationIdentifier] Entitätstyp

Anweisungen aufrufen

– Für iOS 10 und höher können Sie „identifier.delivered“ und „identifier.identifiers“ festlegen, um den entsprechenden Push oder die ausstehende Push-Anfrage im Benachrichtigungscenter zu finden. Wenn „identifier.identifiers“ auf Null oder ein leeres Array gesetzt ist, werden alle Push- oder ausstehenden Push-Anfragen im Benachrichtigungscenter unter dem entsprechenden Flag zurückgegeben. Unter iOS 10 ist das Attribut „identifier.delivered“ ungültig. Wenn identifier.identifiers auf Null oder ein leeres Array gesetzt ist, werden alle nicht ausgelösten Pushs zurückgegeben. – Sie müssen den Rückruf „identifier.findCompletionHandler“ festlegen, um die Suchergebnisse abzurufen, und das entsprechende Objektarray über (NSArray *results) zurückgeben.

Codebeispiel

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Protokollebeneneinstellungen

Unterstützte Versionen

Unterstützte Startversion: v3.0.0.

Aktivieren Sie den Debug-Modus

Funktionsbeschreibung

Die API wird verwendet, um den Debug-Modus zu aktivieren und weitere Protokollinformationen anzuzeigen.

Schnittstellendefinition

+ (void)setDebugMode;
              
              + (void)setDebugMode;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Anweisungen aufrufen

Wenn Sie weitere Debugging-Informationen benötigen, rufen Sie die API auf, um den Debug-Modus zu aktivieren.

Codebeispiel

Ziel-C

[MTPushService setDebugMode];
              
              [MTPushService setDebugMode];

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

MTPushService.setDebugMode()
              
              MTPushService.setDebugMode()

            
Diesen Codeblock im schwebenden Fenster anzeigen

Protokollinformationen schließen

Unterstützte Versionen

Unterstützte Startversion: v3.0.0.

Funktionsbeschreibung

Die API wird verwendet, um die Protokollierung von Nachrichten zu deaktivieren (mit Ausnahme notwendiger Fehlermeldungen).

Schnittstellendefinition

+ (void)setLogOFF;
              
              + (void)setLogOFF;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Anweisungen aufrufen

Wenn keine Debugging-Informationen erforderlich sind, rufen Sie diese API auf (es wird empfohlen, diese API während der Veröffentlichung aufzurufen, um Protokollinformationen abzuschirmen und Leistungsverbrauch zu sparen).

Codebeispiel

Ziel-C

[MTPushService setLogOFF];
              
              [MTPushService setLogOFF];

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

MTPushService.setLogOFF()
              
              MTPushService.setLogOFF()

            
Diesen Codeblock im schwebenden Fenster anzeigen

Mobiltelefonnummer festlegen

Unterstützte Versionen

Unterstützte Startversion: v3.0.0.

Funktionsbeschreibung

Wird zum Festlegen der Mobiltelefonnummer verwendet.

Schnittstellendefinition

+ (void)setMobileNumber:(NSString *)mobileNumber completion:(void (^)(NSError *error))completion
              
              + (void)setMobileNumber:(NSString *)mobileNumber completion:(void (^)(NSError *error))completion

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • mobileNumber Mobiltelefonnummer. Es kann nur mit „+“ oder einer Zahl beginnen und der folgende Inhalt darf nur „-“ und Zahlen enthalten und die Länge darf 20 nicht überschreiten. Wenn Null oder eine leere Zeichenfolge übergeben wird, handelt es sich um einen Entbindungsvorgang.
  • Rückruf der Abschlussantwort. Bei Erfolg ist der Fehler leer. Wenn dies fehlschlägt, enthält der Fehler Fehlercode und Fehlerinformationen. Spezifische Fehlercodes finden Sie in der Fehlercodedefinition.

Anweisungen aufrufen

Die Häufigkeit des Aufrufs dieser Schnittstelle ist auf maximal 3 Mal innerhalb von 10 Sekunden begrenzt. Es wird empfohlen, diese Schnittstelle nach erfolgreicher Anmeldung aufzurufen. Die Ergebnisinformationen werden bis zum Abschluss asynchron zurückgegeben. Alternativ kann der Abschluss auf Null gesetzt werden, um die Ergebnisinformationen nicht zu verarbeiten.

Codebeispiel

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Sprachinformationen melden

Unterstützte Versionen

Unterstützte Startversion: v3.0.0.

Funktionsbeschreibung

Die API wird verwendet, um Informationen zur Benutzersprache zu melden

Schnittstellendefinition

+ (void)setUserLanguage:(NSString *)language completionHandler:(void(^)(int resCode, NSError *error))handler;
              
              + (void)setUserLanguage:(NSString *)language completionHandler:(void(^)(int resCode, NSError *error))handler;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • Sprache: Sprachinformationen
  • Handler: Rückruf melden

Anweisungen aufrufen

Es wird empfohlen, diese Schnittstelle nach erfolgreicher Anmeldung aufzurufen.

Codebeispiel

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Stellen Sie den TCP-Verschlüsselungsmodus ein

Unterstützte Versionen

Unterstützte Startversion: v3.3.0.

Funktionsbeschreibung

Die API wird verwendet, um festzulegen, ob eine TCP-Verbindung verschlüsselt ist

Schnittstellendefinition

+ (void)setTcpSSL:(BOOL)isSSL;
              
              + (void)setTcpSSL:(BOOL)isSSL;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • isSSL: JA für Verschlüsselung, NEIN für keine Verschlüsselung

Anweisungen aufrufen

Bitte rufen Sie an, bevor Sie die Schnittstelle initialisieren.

Codebeispiel

Ziel-C

[MTPushService setTcpSSL:YES];
              
                [MTPushService setTcpSSL:YES];

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Push-Dienst ausschalten (turnOffPush)

Unterstützte Versionen

Gestartete unterstützte Version: MTPush iOS SDK v5.4.3.

Funktionsbeschreibung

Nach dem Aufruf verhindert das SDK die automatische Wiederverbindung, trennt lange Verbindungen, stoppt die Erfassung und Berichterstattung von Client-Informationen, stoppt die Anzeige von In-App-Nachrichten und meldet das aktuelle APNs-Token ab. Während des Herunterfahrens sind aktive APIs, die auf Push-Netzwerke oder registrierte Identitäten angewiesen sind, vorübergehend nicht verfügbar; Lokale APIs wie lokale Benachrichtigungskonfiguration, Benachrichtigungsautorisierungsregistrierung, Rückrufe und Protokolleinstellungen sind weiterhin verfügbar.

Schnittstellendefinition

+ (void)turnOffPush:(nullable MTPushRegistrationCompletion)completion;
              
              + (void)turnOffPush:(nullable MTPushRegistrationCompletion)completion;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Codebeispiel

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • completion: Schließen Sie den Ergebnisrückruf, der nil sein kann; Der Rückruf wird im Hauptthread ausgeführt.

Rückrufbeschreibung

Code Bedeutung
0 Erfolgreich geschlossen
6050 SDK wurde nicht initialisiert
6051 Anmelde- oder Abmeldevorgang läuft

Anweisungen zur Verwendung der Schnittstelle

turnOffPush gibt 6052 nicht zurück. Beim Aufrufen einer API, die auf das Push-Netzwerk oder die registrierte Identität angewiesen ist, nachdem Push geschlossen wurde, zeigt die entsprechende API über 6052 an, dass sie derzeit nicht ausführbar ist. Der iOS-Simulator unterstützt keine APN-Abmeldung und gibt nur Eingabeaufforderungsprotokolle aus, ohne Erfolgsrückrufe auszuführen.

Push-Dienst neu starten (turnOnPush)

Unterstützte Versionen

Gestartete unterstützte Version: MTPush iOS SDK v5.4.3.

Funktionsbeschreibung

Starten Sie den Push-Dienst mit neuen Initialisierungsparametern neu. Das SDK nimmt die Informationserfassung, Berichterstattung, In-App-Nachrichten und lange Verbindungen wieder auf und registriert das APNs-Token automatisch neu. Das neue DeviceToken muss weiterhin im AppDelegate-Rückruf an registerDeviceToken: übergeben und dann automatisch vom SDK gemeldet werden. Diese Schnittstelle kehrt sofort nach der Initiierung zurück und bietet keinen Ergebnisrückruf.

Schnittstellendefinition

+ (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;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Codebeispiel

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

appKey: Neuer EngageLab AppKey, nicht nullbar.

  • channel: Anwendungsfreigabekanal, kann leer sein.
  • isProduction: APNs-Umgebung, YES ist die Produktionsumgebung und NO ist die Entwicklungsumgebung.
  • advertisingId: Werbe-ID, kann leer sein.

Sprachübertragungsfunktion

Funktionseinführung

Um diese Funktion nutzen zu können, müssen Sie die appGroups-Funktion für Ihre Bundle-ID aktivieren. Die Schritte zum Aktivieren der appGroups-Funktion finden Sie im iOS Certificate Setting Guide.

Diese Funktion unterstützt Systeme mit iOS 14 und höher.

Aufgrund von Systemeinschränkungen entspricht die Dauer der Sprachübertragung ungefähr der Zeit, die benötigt wird, bis die Mobiltelefonbenachrichtigung eingeblendet und angezeigt wird (ca. 10 Sekunden, je nach System kann es zu geringfügigen Unterschieden kommen). Die Sprachübertragung wird auch beendet, wenn das Benachrichtigungs-Popup verschwindet. Bitte achten Sie auf die Steuerung der Dauer der Sprachübertragung.

AppGroupId festlegen

Unterstützte Versionen

Unterstützte Startversion: v4.3.4.

Anweisungen aufrufen

Es wird zum Festlegen der appGroupId verwendet, die mit der appGroupId übereinstimmen muss, die von der mtpushSetAppGroupId:-Methode in der Benachrichtigungsdiensterweiterung festgelegt wurde. Es wird verwendet, um den gemeinsamen Speicherplatz zwischen dem Hauptprojekt und der Benachrichtigungsdiensterweiterung zu definieren. Dieser Speicherplatz wird zum Speichern von Ressourcen im Zusammenhang mit Sprachübertragungen verwendet.

Schnittstellendefinition

+ (void)setAppGroupId:(NSString *)appGroupId;
              
              + (void)setAppGroupId:(NSString *)appGroupId;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • appGroupId: die appGroupId, die Sie beim Aktivieren der appGroupId-Funktion für bundleid eingegeben haben

Anweisungen aufrufen

Bitte rufen Sie an, bevor Sie die Schnittstelle initialisieren.

Codebeispiel

Ziel-C

[MTPushService setAppGroupId:@"您的appGroupId"];
              
                [MTPushService setAppGroupId:@"您的appGroupId"];

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Legen Sie fest, ob die Sprachübertragungsfunktion aktiviert werden soll

Unterstützte Versionen

Unterstützte Startversion: v4.3.4.

Funktionsbeschreibung

Schalten Sie die Sprachübertragungsfunktion ein oder aus

Schnittstellendefinition

+ (void)enablePushTextToSpeech:(BOOL)enable;
              
              + (void)enablePushTextToSpeech:(BOOL)enable;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • aktivieren: JA: öffnen, NEIN: schließen, Standard ist NEIN

Anweisungen aufrufen

Bitte rufen Sie an, bevor Sie die Schnittstelle initialisieren. Die Standardeinstellung ist deaktiviert.

Codebeispiel

Ziel-C

[MTPushService enablePushTextToSpeech:YES];
              
                [MTPushService enablePushTextToSpeech:YES];

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

Legen Sie fest, ob die Registrierungs-ID zurückgesetzt werden soll, wenn das Gerät ausgetauscht wird

Unterstützte Versionen

Unterstützte Startversion: v5.1.0.

Funktionsbeschreibung

Aktivieren oder deaktivieren Sie die Funktion zum Zurücksetzen der RegistrationID, wenn das Gerät ausgetauscht wird. Wenn diese Option aktiviert ist und eine Änderung am Gerät erkannt wird (nur wenn sich das Gerätemodell ändert), werden die Registrierungsinformationen automatisch gelöscht und erneut registriert.

Schnittstellendefinition

+ (void)enableResetOnDeviceChange:(BOOL)enable;
              
              + (void)enableResetOnDeviceChange:(BOOL)enable;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • aktivieren: JA: öffnen, NEIN: schließen, Standard ist NEIN

Anweisungen aufrufen

Bitte rufen Sie an, bevor Sie die Schnittstelle initialisieren. Die Standardeinstellung ist deaktiviert.

Codebeispiel

Ziel-C

[MTPushService enableResetOnDeviceChange:YES];
              
                [MTPushService enableResetOnDeviceChange:YES];

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

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

            
Diesen Codeblock im schwebenden Fenster anzeigen

LiveActivity

PushToStartToken (Starttoken) von liveActivity melden

Methode – registerLiveActivity:pushToStartToken:completion:seq:

Rufen Sie diese API auf, um das pushToStartToken von liveActivity zu melden und das Ergebnis im Block zurückzugeben.

Unterstützte Versionen

Unterstützte Startversion: 4.4.0

Schnittstellendefinition

+ (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;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • Aktivitätsattribute

  • Eigenschaftstyp, der durch eine bestimmte LiveActivity definiert wird

  • pushToStartToken

  • pushToStartToken, pushToStartToken entsprechend der Liveaktivität

  • Abschluss

*Der entsprechende Statuscode, der für die Rückrufrückgabe verwendet wird: 0 bedeutet Erfolg. Weitere Rückgabecodes finden Sie in der Fehlercodedefinition. seq ist die beim Aufruf übergebene Sitzungssequenznummer

*seq

  • Die bei der Anfrage übergebene Sequenznummer wird beim Rückruf unverändert zurückgegeben

  • LiveActivity pushToStartToken meldet Rückruf (Block)

typedef void (^MTPLiveActivityTokenCompletion)(NSInteger iResCode, NSString *iLiveActivityId, NSData *token, NSInteger seq);
              
              
typedef void (^MTPLiveActivityTokenCompletion)(NSInteger iResCode, NSString *iLiveActivityId, NSData *token, NSInteger seq);

            
Diesen Codeblock im schwebenden Fenster anzeigen

PushToken (Update-Token) von liveActivity melden

Methode – registerLiveActivity:pushToken:completion:seq:

Rufen Sie diese API auf, um das PushToken einer bestimmten LiveActivity zu melden und das Ergebnis im Block zurückzugeben.

Unterstützte Versionen

Unterstützte Startversion: 4.4.0

Schnittstellendefinition

+ (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;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • liveActivityId

  • LiveActivityId kann nicht auf 24 Byte festgelegt werden.

    • Identifiziert eine bestimmte Live-Aktivität, die vom Entwickler angepasst wird und als eindeutig empfohlen wird. Über diese liveActivityId ermittelt EngageLab die Zielgruppe. Der Typ muss vom Typ NSString sein. Wenn sich das PushToken von liveActivity ändert, rufen Sie bitte diese Schnittstelle auf, um dies rechtzeitig zu melden.
  • pushToken

  • Der PushToken, der dieser Liveaktivität entspricht.

  • Abschluss

*Der entsprechende Statuscode, der für die Rückrufrückgabe verwendet wird: 0 bedeutet Erfolg. Weitere Rückgabecodes finden Sie in der Fehlercodedefinition. seq ist die beim Aufruf übergebene Sitzungssequenznummer

*seq

  • Die bei der Anfrage übergebene Sequenznummer wird beim Rückruf unverändert zurückgegeben

  • LiveActivity PushToken-Berichtsrückruf (Block)

typedef void (^MTPLiveActivityTokenCompletion)(NSInteger iResCode, NSString *iLiveActivityId, NSData *token, NSInteger seq);
              
              
typedef void (^MTPLiveActivityTokenCompletion)(NSInteger iResCode, NSString *iLiveActivityId, NSData *token, NSInteger seq);

            
Diesen Codeblock im schwebenden Fenster anzeigen

Voip-Push

Funktionsbeschreibung

Nach iOS 8 wurde ein VoIP-Push basierend auf dem PushKit-Framework eingeführt, der es der APP des Benutzers ermöglicht, die APP aufzuwecken und Code auszuführen, wenn sie beendet wird.

Warnung: Nach iOS 13 erlaubt Apple keine PushKit-Anwendungen mehr in Nicht-VoIP-Telefonszenarien. Wenn Sie Pushkit verwenden müssen, müssen Sie auf die Callkit-Schnittstelle zugreifen.

Unterstützte Versionen

Unterstützte Startversion: v4.4.0.

Token senden

registerVoipToken:

Senden Sie VoIP-Token an den EngageLab-Server

Schnittstellendefinition

+ (void)registerVoipToken:(NSData *)voipToken;
              
              + (void)registerVoipToken:(NSData *)voipToken;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

*voipToken Vom System zurückgegebenes VoipToken

Verarbeitung von VoIP-Nachrichten

handleVoipNotification:

Verarbeiten Sie die empfangenen VoIP-Nachrichten und sammeln Sie damit Statistiken zum VoIP-Zustellungsstatus.

Schnittstellendefinition

+ (void)handleVoipNotification:(NSDictionary *)remoteInfo;
              
              + (void)handleVoipNotification:(NSDictionary *)remoteInfo;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • Inhalt der RemoteInfo-Nachricht

Notification Service Extension-bezogene Schnittstellen

Unterstützte Versionen

Notification Service Extension SDK v3.0.0 und spätere Versionen.

Funktionsbeschreibung

Verwenden Sie das Notification Service Extension SDK, um den Push-Zustellungsstatus zu melden.

Appkey-Schnittstelle festlegen

Legen Sie die Appkey-Schnittstelle fest, die im Voraus aufgerufen werden muss

Schnittstellendefinition

+ (void)mtpushSetAppkey:(NSString *)appkey
              
              + (void)mtpushSetAppkey:(NSString *)appkey

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

– Der Appkey muss mit dem Appkey des MTPush SDK in der Haupt-App übereinstimmen

Statistiken zur Nachrichtenanzeige

Schnittstelle für Nachrichtenübermittlungsstatistiken. Rufen Sie diese Schnittstelle auf, um MTPush-bezogene Daten im APNs-Nachrichtentext zu melden.

Schnittstellendefinition

+ (void)mtpushReceiveNotificationRequest:(UNNotificationRequest *)request with:(void (^)(void))completion
              
              + (void)mtpushReceiveNotificationRequest:(UNNotificationRequest *)request with:(void (^)(void))completion

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • UNNotificationRequest anfordern
  • Rückruf zur Berichterstattung über die Zustellung der Abschlussnachricht. Bitte führen Sie Vorgänge wie die Anzeige von APNs in diesem Rückruf durch.

Protokoll schließen

Die Standardeinstellung ist aktiviert. Es wird empfohlen, es beim Veröffentlichen zu deaktivieren, um unnötige E/A-Vorgänge zu reduzieren.

Schnittstellendefinition

+ (void)setLogOff
              
              + (void)setLogOff

            
Diesen Codeblock im schwebenden Fenster anzeigen

Sprachübertragungsfunktion

Diese Funktion unterstützt Systeme mit iOS 14 und höher.

Unterstützte Versionen

Unterstützte Startversion: v4.3.4.

AppGroupId festlegen

+ (void)mtpushSetAppGroupId:(NSString *)appGroupId;
              
              + (void)mtpushSetAppGroupId:(NSString *)appGroupId;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • appGroupId: muss mit dem appGroupId-Wert übereinstimmen, der durch + (void)setAppGroupId:(NSString *)appGroupId; Methode in der Haupt-App.

Behandeln Sie Sprachbenachrichtigungen

Schnittstelle für Nachrichtenübermittlungsstatistiken. Rufen Sie diese Schnittstelle auf, um MTPush-bezogene Daten im APNs-Nachrichtentext zu melden.

Schnittstellendefinition

+ (void)handleVoice:(UNNotificationRequest *)request with:(void (^)(NSString *soundName))completion;
              
              + (void)handleVoice:(UNNotificationRequest *)request with:(void (^)(NSString *soundName))completion;

            
Diesen Codeblock im schwebenden Fenster anzeigen

Parameterbeschreibung

  • UNNotificationRequest anfordern
  • Abschluss ist der Rückruf, nachdem die Verarbeitung der Sprachbenachrichtigung abgeschlossen ist. Nach erfolgreicher Verarbeitung wird der verarbeitete Sprachname soundName zurückgegeben und der Sprachname durch den Wert von UNNotificationRequest.content.sound ersetzt

Aufrufbeispiel

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

  }];

}

            
Diesen Codeblock im schwebenden Fenster anzeigen

Schnell

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

            
Diesen Codeblock im schwebenden Fenster anzeigen
Icon Solid Transparent White Qiyu
Vertrieb kontaktieren