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;
Parameterbeschreibung
Tags
- 不能设置 nil 或者空集合([NSSet set])
- 集合成员类型要求为 NSString 类型
- 每次调用至少设置一个 tag
- 有效的标签组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|
- 限制:每个 tag 命名长度限制为 40 字节,最多支持设置 1000 个 tag,但总长度不得超过 5 K 字节。(判断长度需采用 UTF-8 编码)
- 单个设备最多支持设置 1000 个 tag。App 全局 tag 数量无限制
Abschluss
- 用于回调返回对应的参数 tags。并返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号
*seq
* 请求时传入的序列号,会在回调时原样返回
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;
Parameterbeschreibung
Tags
- 不能设置 nil 或者空集合([NSSet set])
- 集合成员类型要求为 NSString 类型
- 每次调用至少设置一个 tag
- 有效的标签组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|
- 限制:每个 tag 命名长度限制为 40 字节,最多支持设置 1000 个 tag,但总长度不得超过 5 K 字节。(判断长度需采用 UTF-8 编码)
- 单个设备最多支持设置 1000 个 tag。App 全局 tag 数量无限制
Abschluss
- 用于回调返回对应的参数 tags。并返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号
*seq
* 请求时传入的序列号,会在回调时原样返回
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;
Parameterbeschreibung
Tags
- 不能设置 nil 或者空集合([NSSet set])
- 集合成员类型要求为 NSString 类型
- 每次调用至少删除一个 tag
- 有效的标签组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|
- 限制:每个 tag 命名长度限制为 40 字节,最多支持删除 1000 个 tag,但总长度不得超过 5 K 字节。(判断长度需采用 UTF-8 编码)
Abschluss
- 回调返回对应的参数 tags。并返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号
*seq
* 请求时传入的序列号,会在回调时原样返回
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;
Parameterbeschreibung
Abschluss
- 回调返回的 tags 为 nil。返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号
*seq
* 请求时传入的序列号,会在回调时原样返回
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;
Parameterbeschreibung
Abschluss
- 回调返回的 tags 为查询结果。返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号
*seq
* 请求时传入的序列号,会在回调时原样返回
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;
Parameterbeschreibung
*Etikett
* 不能设置 nil 或者空字符串
* 有效的标签组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|
* 限制:每个 tag 命名长度限制为 40 字节(判断长度需采用 UTF-8 编码)
Abschluss
- 回调返回对应的参数 tag。并返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号
- 在回调中查看 isBind 属性查看是否已经设置,YES 为已经设置
*seq
* 请求时传入的序列号,会在回调时原样返回
Tags-Block
typedef void (^MTPushTagsOperationCompletion)(NSInteger iResCode, NSSet *iTags, NSInteger seq);
typedef void (^MTPushTagValidOperationCompletion)(NSInteger iResCode, NSSet *iTags, NSInteger seq, BOOL isBind);
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;
Parameterbeschreibung
- Alias
- 不能设置 nil 或者空字符串 @""
- 每次调用设置有效的别名,覆盖之前的设置
- 有效的别名组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|
- 限制:alias 命名长度限制为 40 字节。(判断长度需采用 UTF-8 编码)
Abschluss
- 回调返回对应的参数 alias。并返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号
*seq
* 请求时传入的序列号,会在回调时原样返回
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;
Parameterbeschreibung
Abschluss
- 回调返回的 tags 为 nil。返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号
*seq
* 请求时传入的序列号,会在回调时原样返回
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;
Parameterbeschreibung
Abschluss
- 回调返回的 tags 为查询结果。返回对应的状态码:0 为成功,其他返回码请参考错误码定义。seq 为调用时传入的会话序列号
*seq
* 请求时传入的序列号,会在回调时原样返回
Alias-Block
typedef void (^MTPushAliasOperationCompletion)(NSInteger iResCode, NSString *iAlias, NSInteger seq);
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;
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"];
}
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")
}
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]
- 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;
- 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;
– 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
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(); // 系统要求执行这个方法
}
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() // 系统要求执行这个方法
}
– 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{
//从通知设置界面进入应用
}
}
Schnell
// iOS 12 Support
func mtpNotificationCenter(_ center: UNUserNotificationCenter, openSettingsFor notification: UNNotification?) {
if let notification = notification {
// 从通知界面直接进入应用
} else {
// 从通知设置界面进入应用
}
}
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];
Schnell
let defaultCenter = NotificationCenter.default
defaultCenter.addObserver(self, selector: #selector(networkDidReceiveMessage(_:)), name: Notification.Name.mtcNetworkDidReceiveMessage, object: nil)
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 是自己定义的
}
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 是自己定义的
}
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. –messageIdwird vonuserInfo[@"_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;
Codebeispiel
Ziel-C
// 完成自定义消息展示后调用
[MTPushService reportCustomDisplay:[userInfo[@"_j_msgid"] stringValue]];
// 用户点击自定义消息后调用
[MTPushService reportCustomClick:[userInfo[@"_j_msgid"] stringValue]];
Schnell
// 完成自定义消息展示后调用
MTPushService.reportCustomDisplay((userInfo["_j_msgid"] as? NSNumber)?.stringValue)
// 用户点击自定义消息后调用
MTPushService.reportCustomClick((userInfo["_j_msgid"] as? NSNumber)?.stringValue)
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
Schnell
extension AppDelegate: MTPushInAppMessageDelegate {
}
Proxy festlegen
Bitte fügen Sie den folgenden Code zu -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions hinzu
Ziel-C
[MTPushService setInAppMessageDelegate:self];
Schnell
MTPushService.setInAppMessageDelegate(self)
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);
}
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 ?? [:])")
}
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
Schnell
extension AppDelegate: MTPushNotiInMessageDelegate {
}
Proxy festlegen
Bitte fügen Sie den folgenden Code zu -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions hinzu
Ziel-C
[MTPushService setNotiInMessageDelegate:self];
Schnell
MTPushService.setNotiInMessageDelegate(self)
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
}
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
}
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;
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);
}];
Schnell
MTPushService.registrationIDCompletionHandler { (resCode, registrationID) in
print("resCode : \(resCode), registrationID: \(registrationID ?? "")")
}
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
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
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
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
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]
- 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
– 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
// }
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;
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];
}
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)
}
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;
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];
}
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)
}
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;
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];
}
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)
}
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;
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];
Schnell
MTPushService.setDebugMode()
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;
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];
Schnell
MTPushService.setLogOFF()
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
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
}
}];
Schnell
MTPushService.setMobileNumber("xxx") { (error) in
if let error = error {
print("error:\(error)")
} else {
// success
}
}
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;
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);
}];
Schnell
MTPushService.setUserLanguage("zh_Hans") { (resCode, error) in
print("language report: \(resCode), \(error?.localizedDescription ?? "")")
}
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;
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];
Schnell
MTPushService.setTcpSSL(true)
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;
Codebeispiel
[MTPushService turnOffPush:^(NSInteger code, NSString *message) {
NSLog(@"turnOffPush code: %ld, message: %@", (long)code, message);
}];
Parameterbeschreibung
completion: Schließen Sie den Ergebnisrückruf, dernilsein 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;
Codebeispiel
[MTPushService turnOnPush:@"your_app_key"
channel:@"App Store"
apsForProduction:YES
advertisingIdentifier:nil];
Parameterbeschreibung
– appKey: Neuer EngageLab AppKey, nicht nullbar.
channel: Anwendungsfreigabekanal, kann leer sein.isProduction: APNs-Umgebung,YESist die Produktionsumgebung undNOist 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;
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"];
Schnell
MTPushService.setAppGroupId("您的appGroupId")
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;
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];
Schnell
MTPushService.enablePushTextToSpeech(true)
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;
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];
Schnell
MTPushService.enableResetOnDeviceChange(true)
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;
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);
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;
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);
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;
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;
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
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
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
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;
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;
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);
}];
}];
}
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)
}
}
}










