SDK APIガイド

適用バージョン

本ドキュメントで対応しているMTPush iOS SDKのバージョンはv3.0.0以降となります。

データセンターの設定

機能説明

この機能は、EngageLabポータルで選択したデータセンターと一致させるために使用されます。ポータルで選択したデータセンターと設定が一致していることを確認してください。 設定されていない場合、SDKはデフォルトでシンガポールデータセンターのノードを使用します。

v4.3.5以降のバージョンでは、このインターフェースは無効です。開発者が手動でデータセンターを設定する必要はなく、SDKがappkeyに基づいて自動的に対応するデータセンターをマッチングします。

対応バージョン

対応開始バージョン:v4.3.0

無効バージョン

無効開始バージョン:v4.3.5

インターフェース定義

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

パラメータ説明

*siteName

  • データセンター名

呼び出し手順

初期化インターフェース(setupWithOption:channel:apsForProduction:advertisingIdentifier)を呼び出す前に、このインターフェースを呼び出してください。

タグとエイリアスAPI (iOS)

機能説明

注意:タグ/エイリアスを設定する際は、必ずコールバック結果を処理してください。

コールバックの戻り値が0の場合のみ設定が成功し、ターゲットにプッシュできます。それ以外の場合、サーバーAPIは1011エラーを返します。すべてのコールバック関数はメインスレッドで実行されます。


タグとエイリアスを操作するためのいくつかの関連APIが提供されています。

これらのAPIはアプリ内のどこからでも呼び出すことができます。

エイリアス(alias)

エイリアスはアプリケーションをインストールしたユーザーを識別するために使用されます。このエイリアスを使用して、将来このユーザーにメッセージをプッシュする際に指定できます。 各ユーザーに指定できるエイリアスは1つだけです。

同じアプリケーション内で異なるユーザーに異なるエイリアスを使用することをお勧めします。これにより、可能な限りエイリアスでユーザーを一意に識別できます。

例:ユーザーがログインしたいゲームでは、エイリアスをuseridとして設定できます。ゲーム運営中、ユーザーが3日間ゲームをしていないことが判明した場合、useridに基づいてサーバーAPIを呼び出し、クライアントに通知を送信してユーザーにリマインダーを送ることができます。

タグ(tag)

アプリをインストールしたユーザーにタグを付けます。その目的は、主に開発者がタグに基づいてプッシュメッセージを一括送信しやすくすることです。

各ユーザーに複数のタグを設定できます。

例:game、old_page、women

タグの追加

このAPIを呼び出してタグを追加し、結果をブロックで返します

注意:このインターフェースは追加ロジックであり、上書きロジックではありません

対応バージョン

対応バージョン:v3.5.0.

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • tags

    • nilまたは空のコレクション([NSSet set])を設定できません
    • コレクションメンバーのタイプはNSStringタイプである必要があります
    • 呼び出しごとに少なくとも1つのタグを設定する必要があります
    • 有効なタグの構成:文字(大文字と小文字を区別)、数字、アンダースコア、中国語文字、特殊文字@!#$&*+=.|
    • 制限:各タグ名の長さは40バイトに制限され、最大1000タグを設定できますが、合計長は5Kバイトを超えることはできません(長さを決定するにはUtf-8エンコーディングが必要です)
    • 単一デバイスは最大1000タグをサポートします。アプリ全体のタグ数に制限はありません
  • completion

    • コールバックで対応するパラメータタグを返すために使用されます。また、対応するステータスコードを返します:0は成功、その他のリターンコードについてはエラーコード定義を参照してください。seqは呼び出し時に渡されたセッションシーケンス番号です

*seq

* リクエスト時に渡されたシーケンス番号は、コールバック時にそのまま返されます
              
               * リクエスト時に渡されたシーケンス番号は、コールバック時にそのまま返されます

            
このコードブロックはフローティングウィンドウ内に表示されます

タグの上書き

このAPIを呼び出してタグを設定し、結果をブロックで返します

注意:このインターフェースは上書きロジックであり、追加ロジックではありません。このインターフェースを呼び出すと、以前に設定されたすべてのタグが上書きされます

対応バージョン

対応バージョン:v3.5.0.

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • tags

    • nilまたは空のコレクション([NSSet set])を設定できません
    • コレクションメンバーのタイプはNSStringタイプである必要があります
    • 呼び出しごとに少なくとも1つのタグを設定する必要があります
    • 有効なタグの構成:文字(大文字と小文字を区別)、数字、アンダースコア、中国語文字、特殊文字@!#$&*+=.|
    • 制限:各タグ名の長さは40バイトに制限され、最大1000タグを設定できますが、合計長は5Kバイトを超えることはできません(長さを決定するにはUtf-8エンコーディングが必要です)
    • 単一デバイスは最大1000タグをサポートします。アプリ全体のタグ数に制限はありません
  • completion

    • コールバックで対応するパラメータタグを返すために使用されます。また、対応するステータスコードを返します:0は成功、その他のリターンコードについてはエラーコード定義を参照してください。seqは呼び出し時に渡されたセッションシーケンス番号です

*seq

* リクエスト時に渡されたシーケンス番号は、コールバック時にそのまま返されます
              
               * リクエスト時に渡されたシーケンス番号は、コールバック時にそのまま返されます

            
このコードブロックはフローティングウィンドウ内に表示されます

タグの削除

このAPIを呼び出してタグを削除し、結果をブロックで返します

対応バージョン

対応バージョン:v3.5.0.

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • tags

    • nilまたは空のコレクション([NSSet set])を設定できません
    • コレクションメンバーのタイプはNSStringタイプである必要があります
    • 呼び出しごとに少なくとも1つのタグを削除する必要があります
    • 有効なタグの構成:文字(大文字と小文字を区別)、数字、アンダースコア、中国語文字、特殊文字@!#$&*+=.|
    • 制限:各タグ名の長さは40バイトに制限され、最大1000タグを削除できますが、合計長は5Kバイトを超えることはできません(長さを決定するにはUtf-8エンコーディングが必要です)
  • completion

    • コールバックで対応するパラメータタグを返します。また、対応するステータスコードを返します:0は成功、その他のリターンコードについてはエラーコード定義を参照してください。seqは呼び出し時に渡されたセッションシーケンス番号です

*seq

* リクエスト時に渡されたシーケンス番号は、コールバック時にそのまま返されます
              
               * リクエスト時に渡されたシーケンス番号は、コールバック時にそのまま返されます

            
このコードブロックはフローティングウィンドウ内に表示されます

タグのクリア

このAPIを呼び出してすべてのタグをクリアし、結果をブロックで返します

対応バージョン

対応バージョン:v3.5.0.

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • completion

    • コールバックで返されるタグはnilです。対応するステータスコードを返します:0は成功、その他のリターンコードについてはエラーコード定義を参照してください。seqは呼び出し時に渡されたセッションシーケンス番号です

*seq

* リクエスト時に渡されたシーケンス番号は、コールバック時にそのまま返されます
              
               * リクエスト時に渡されたシーケンス番号は、コールバック時にそのまま返されます

            
このコードブロックはフローティングウィンドウ内に表示されます

タグのクエリ

このAPIを呼び出してすべてのタグを取得し、結果をブロックで返します

対応バージョン

対応バージョン:v3.5.0.

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • completion

    • コールバックで返されるタグはクエリ結果です。対応するステータスコードを返します:0は成功、その他のリターンコードについてはエラーコード定義を参照してください。seqは呼び出し時に渡されたセッションシーケンス番号です

*seq

* リクエスト時に渡されたシーケンス番号は、コールバック時にそのまま返されます
              
               * リクエスト時に渡されたシーケンス番号は、コールバック時にそのまま返されます

            
このコードブロックはフローティングウィンドウ内に表示されます

タグの検証

このAPIを呼び出して、ターゲットタグが設定されているかどうかを確認します

対応バージョン

対応バージョン:v3.5.0.

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • tag

    • nilまたは空の文字列を設定できません
    • 有効なタグの構成:文字(大文字と小文字を区別)、数字、アンダースコア、中国語文字、特殊文字@!#$&*+=.|
    • 制限:各タグ名の長さは40バイトに制限されます(UTF-8エンコーディングを使用して長さを決定する必要があります)
  • completion

    • コールバックで対応するパラメータタグを返します。また、対応するステータスコードを返します:0は成功、その他のリターンコードについてはエラーコード定義を参照してください。seqは呼び出し時に渡されたセッションシーケンス番号です
    • コールバックのisBindプロパティをチェックして、設定されているかどうかを確認します。YESは設定されていることを意味します

*seq

* リクエスト時に渡されたシーケンス番号は、コールバック時にそのまま返されます
              
               * リクエスト時に渡されたシーケンス番号は、コールバック時にそのまま返されます

            
このコードブロックはフローティングウィンドウ内に表示されます

タグブロック

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

エイリアスの設定

このAPIを呼び出してエイリアスを設定します

対応バージョン

対応バージョン:v3.5.0.

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

-alias - nilまたは空の文字列@""を設定できません - 各呼び出しで有効なエイリアスを設定し、以前の設定を上書きします - 有効なエイリアス:文字(大文字と小文字を区別)、数字、アンダースコア、中国語文字、特殊文字@!#$&*+=.| - 制限:エイリアス名の長さは40バイトに制限されます(長さを決定するにはUtf-8エンコーディングが必要です)

  • completion

    • コールバックで対応するパラメータエイリアスを返します。また、対応するステータスコードを返します:0は成功、その他のリターンコードについてはエラーコード定義を参照してください。seqは呼び出し時に渡されたセッションシーケンス番号です

*seq

* リクエスト時に渡されたシーケンス番号は、コールバック時にそのまま返されます
              
               * リクエスト時に渡されたシーケンス番号は、コールバック時にそのまま返されます

            
このコードブロックはフローティングウィンドウ内に表示されます

エイリアスの削除

このAPIを呼び出してエイリアスを削除し、結果をブロックで返します

対応バージョン

対応バージョン:v3.5.0.

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • completion

    • コールバックで返されるタグはnilです。対応するステータスコードを返します:0は成功、その他のリターンコードについてはエラーコード定義を参照してください。seqは呼び出し時に渡されたセッションシーケンス番号です

*seq

* リクエスト時に渡されたシーケンス番号は、コールバック時にそのまま返されます
              
               * リクエスト時に渡されたシーケンス番号は、コールバック時にそのまま返されます

            
このコードブロックはフローティングウィンドウ内に表示されます

エイリアスのクエリ

このAPIを呼び出して現在のエイリアスをクエリし、結果をブロックで返します

対応バージョン

対応バージョン:v3.5.0.

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • completion

    • コールバックで返されるタグはクエリ結果です。対応するステータスコードを返します:0は成功、その他のリターンコードについてはエラーコード定義を参照してください。seqは呼び出し時に渡されたセッションシーケンス番号です

*seq

* リクエスト時に渡されたシーケンス番号は、コールバック時にそのまま返されます
              
               * リクエスト時に渡されたシーケンス番号は、コールバック時にそのまま返されます

            
このコードブロックはフローティングウィンドウ内に表示されます

エイリアスブロック

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

アプリ内メッセージ

対応バージョン

対応開始バージョン:v4.5.0.

機能説明

アプリ内メッセージ機能を使用するには、このインターフェースを設定する必要があります。アプリ内メッセージはページ遷移時にトリガーされ、特定のページに表示できます。このインターフェースは、ページの出入りアクションをSDKと同期させ、SDKがこの同期に基づいてアプリ内メッセージの表示ロジックを処理します。

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

使用例

使用手順

pageEnterTo:pageLeave:インターフェースを一緒に使用してください。ページに入るときにpageEnterTo:を呼び出し、ページを離れるときにpageLeave:を呼び出します。

使用例

// 例えば、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"];
}

            
このコードブロックはフローティングウィンドウ内に表示されます

APNs(通知)プッシュコンテンツの取得

機能説明

iOSデバイスがプッシュ通知(APNs)を受信します。ユーザーがプッシュ通知をクリックしてアプリケーションを開くと、アプリケーションは異なる状態に応じて処理します。AppDelegateに以下の2つのメソッドを追加して、apnコンテンツを取得する必要があります。

  • アプリの状態が実行されていない場合、この関数が呼び出されます。launchOptionsにUIApplicationLaunchOptionsRemoteNotificationKeyが含まれている場合、ユーザーがapns通知をクリックしてアプリが起動したことを意味します。このキー値がない場合、アプリがapnをクリックせずに起動したことを意味し、アイコンを直接クリックしたり、他の方法で起動した可能性があります。
- (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]

            
このコードブロックはフローティングウィンドウ内に表示されます
  • iOS 6以下では、アプリがフォアグラウンドにある場合、または通知バーで通知メッセージがクリックされた場合、この関数が呼び出されます。AppDelegateのapplicationStateがUIApplicationStateActiveかどうかをチェックすることで、アプリがフォアグラウンドで実行されているかどうかを判断することもできます。このようなケースはこの関数で処理されます:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;
              
              - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;

            
このコードブロックはフローティングウィンドウ内に表示されます
  • iOS 7以降に基づいて、iOS 7のRemote Notification機能を使用する場合、処理関数を使用する必要があります:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler;
              
              - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler;

            
このコードブロックはフローティングウィンドウ内に表示されます
  • iOS 10以降のバージョンに基づいて、元の[application: didReceiveRemoteNotification:]はシステムによって廃棄され、

新しいUserNotifications Frameworkの[UNUserNotificationCenterDelegate willPresentNotification: withCompletionHandler:] または[UNUserNotificationCenterDelegate didReceiveNotificationResponse: withCompletionHandler:]に置き換えられます。 現在のバージョン以降では、SDKによってカプセル化されたMTPushRegisterDelegateプロトコルメソッドを実装し、iOS10で新しく追加されたデリゲートプロトコルメソッドに適応できます。 つまり、以下の2つのメソッド:

- (void)mtpushNotificationCenter:(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)mtpushNotificationCenter:(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)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { // APNs標準情報コンテンツを取得 NSDictionary *aps = [userInfo valueForKey:@"aps"]; NSString *content = [aps valueForKey:@"alert"]; //プッシュ表示内容 NSInteger badge = [[aps valueForKey:@"badge"] integerValue]; //バッジ番号 NSString *sound = [aps valueForKey:@"sound"]; //再生される音 // Extrasフィールドコンテンツを取得 NSString *customizeField1 = [userInfo valueForKey:@"customizeExtras"]; //サーバー上のExtrasフィールド、キーは独自に定義 NSLog(@"content =[%@], badge=[%d], sound=[%@], customize field =[%@]",content,badge,sound,customizeField1); // iOS 10 以下 必須 [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 - 必須 [MTPushService handleRemoteNotification:userInfo]; completionHandler(UIBackgroundFetchResultNewData); } #pragma mark- MTPushRegisterDelegate // MTPushRegisterDelegateは2.1.9で追加されました。以下の2つのメソッドを実装する必要があります // iOS 10 サポート - (void)mtpNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler { // 必須 NSDictionary * userInfo = notification.request.content.userInfo; if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) { [MTPushService handleRemoteNotification:userInfo]; } else { // ローカル通知 } completionHandler(UNNotificationPresentationOptionAlert); // このメソッドを実行するには、ユーザーにアラートを表示するかどうかを選択します。Badge、Sound、alertの3種類を設定できます } // iOS 10 サポート - (void)mtpNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler: (void (^)())completionHandler { // 必須 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]; //バッジ番号
  NSString *sound = [aps valueForKey:@"sound"]; //再生される音
         
  // Extrasフィールドコンテンツを取得
  NSString *customizeField1 = [userInfo valueForKey:@"customizeExtras"]; //サーバー上のExtrasフィールド、キーは独自に定義
  NSLog(@"content =[%@], badge=[%d], sound=[%@], customize field  =[%@]",content,badge,sound,customizeField1);
         
  // iOS 10 以下 必須
  [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 - 必須
  [MTPushService handleRemoteNotification:userInfo];
  completionHandler(UIBackgroundFetchResultNewData);
}

#pragma mark- MTPushRegisterDelegate // MTPushRegisterDelegateは2.1.9で追加されました。以下の2つのメソッドを実装する必要があります

// iOS 10 サポート
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center  willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {
  // 必須
  NSDictionary * userInfo = notification.request.content.userInfo;
  if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
    [MTPushService handleRemoteNotification:userInfo];
  }
  else {
     // ローカル通知
  }
  completionHandler(UNNotificationPresentationOptionAlert); // このメソッドを実行するには、ユーザーにアラートを表示するかどうかを選択します。Badge、Sound、alertの3種類を設定できます
}

// iOS 10 サポート
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler: (void (^)())completionHandler {
  // 必須
  NSDictionary * userInfo = response.notification.request.content.userInfo;
  if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
    [MTPushService handleRemoteNotification:userInfo];
  }
  else {
     // ローカル通知
  }
  completionHandler();  // システムはこのメソッドの実行を要求します
}

            
このコードブロックはフローティングウィンドウ内に表示されます
  • iOS12以降に基づいて、UserNotifications Frameworkの新しいコールバックメソッド[userNotificationCenter: openSettingsForNotification:]が追加され、3.1.1以降のバージョンのMTPushRegisterDelegateにも対応するコールバックメソッドが追加されました。このメソッドは、外部通知画面または通知設定画面からアプリケーションにアクセスしたときにコールバックされます。
// iOS 12 サポート - (void)mtpNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(UNNotification *)notification{ if (notification) { //通知画面から直接アプリケーションに入る }else{ //通知設定画面から直接アプリケーションに入る } }
              
              // iOS 12 サポート
- (void)mtpNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(UNNotification *)notification{
  if (notification) {
    //通知画面から直接アプリケーションに入る
  }else{
    //通知設定画面から直接アプリケーションに入る
  }
}

            
このコードブロックはフローティングウィンドウ内に表示されます

参考ドキュメント:https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/index.html#//apple_ref/doc/uid/TP40008194-CH3-SW1

カスタムメッセージプッシュのコンテンツを取得

機能説明

  • カスタムメッセージはフロントエンドが実行されている場合にのみプッシュされます。
  • MTPushサーバーからカスタムメッセージのコンテンツとタイトル、追加フィールドを取得します。

実装方法

iOSでプッシュコンテンツを取得するには、デリゲートクラスに通知を登録し、コールバックメソッドを実装する必要があります。

メソッド - (BOOL) application: (UIApplication) application didFinishLaunchingWithOptions: (NSDictionary) launchOptions に次のコードを追加します:

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

            
このコードブロックはフローティングウィンドウ内に表示されます

コールバックメソッドnetworkDidReceiveMessageを実装します

- (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追加フィールド、キーは独自に定義   }
              
                  - (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追加フィールド、キーは独自に定義  
    }

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • content:プッシュのコンテンツを取得
  • messageID:プッシュメッセージIDを取得(キー: @"_j_msgid")
  • extras:ユーザー定義パラメータを取得
  • customizeField1:カスタマイズされたキーに基づいてカスタマイズされた値を取得

詳細については、SDKダウンロードパッケージのデモを参照してください。

アプリ内メッセージコンテンツを取得

対応バージョン

v4.5.0以降のバージョン

機能説明

アプリ内メッセージ:アプリがフォアグラウンドで実行されている場合にのみアプリ内メッセージを受信できます。現在、アプリ内メッセージはバナー、インタースティシャル、フルスクリーンの3種類に分類されます。

アプリ内メッセージ機能のデリゲートを設定し、対応するデリゲートメソッドを実装することで、アプリ内メッセージのコンテンツを取得できます。

実装

デリゲートを追加

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

@end

            
このコードブロックはフローティングウィンドウ内に表示されます

デリゲートを設定

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptionsに次のコードを追加してください

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

            
このコードブロックはフローティングウィンドウ内に表示されます

アプリ内メッセージコールバックのデリゲートメソッドを追加

#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; // クリックアクションURL 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; // クリックアクションURL 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; // クリックアクションURL
  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; // クリックアクションURL
  NSDictionary *extras = inAppMessage.extras;  // 追加フィールド
  NSLog(@"mtPushInAppMessageDidClick:\n mesageId: %@ \n title:%@ \n content:%@ \n target:%@ \n clickAction:%@ \n extras:%@", mesageId, title, content, target, clickAction, extras);
}

            
このコードブロックはフローティングウィンドウ内に表示されます

通知拡張リマインダーメッセージコンテンツを取得

対応バージョン

v4.5.1以降

機能説明

通知拡張リマインダーメッセージ:通知権限を無効にしたユーザーに通知を送信する場合、ローカル通知を使用してプッシュ通知を置き換えて警告します。

ユーザーはアプリがフォアグラウンドで実行されている場合にのみ拡張アプリ内リマインダーメッセージを受信できます。この機能を使用するには、プッシュプラットフォームの詳細設定で「通知拡張リマインダー」トグルを有効にする必要があります。

通知拡張リマインダーのデリゲートを設定し、対応するデリゲートメソッドを実装することで、通知拡張リマインダーメッセージのコンテンツタイトルと追加フィールドを取得できます。

実装方法

デリゲートを追加

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

@end

            
このコードブロックはフローティングウィンドウ内に表示されます

デリゲートを設定

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptionsに次のコードを追加してください

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

            
このコードブロックはフローティングウィンドウ内に表示されます

通知拡張リマインダーメッセージコールバックのデリゲートメソッドを追加

#pragma mark - MTPushNotiInMessageDelegate - (void)mtPushNotiInMessageDidShowWithContent:(NSDictionary *)content { NSString *messageID = [content valueForKey:@"_j_msgid"]; NSDictionary *aps = [content valueForKey:@"aps"]; id customizeField1 = [content valueForKey:@"customizeField1"]; // プッシュプラットフォームの詳細設定の追加フィールドキー } - (void)mtPushNotiInMessageDidClickWithContent:(NSDictionary *)content { NSString *messageID = [content valueForKey:@"_j_msgid"]; NSDictionary *aps = [content valueForKey:@"aps"]; id customizeField1 = [content valueForKey:@"customizeField1"]; // プッシュプラットフォームの詳細設定の追加フィールドキー }
              
              #pragma mark - MTPushNotiInMessageDelegate
- (void)mtPushNotiInMessageDidShowWithContent:(NSDictionary *)content {
    NSString *messageID = [content valueForKey:@"_j_msgid"];
    NSDictionary *aps = [content valueForKey:@"aps"];
    id customizeField1 = [content valueForKey:@"customizeField1"]; // プッシュプラットフォームの詳細設定の追加フィールドキー
}

- (void)mtPushNotiInMessageDidClickWithContent:(NSDictionary *)content {
    NSString *messageID = [content valueForKey:@"_j_msgid"];
    NSDictionary *aps = [content valueForKey:@"aps"];
    id customizeField1 = [content valueForKey:@"customizeField1"]; // プッシュプラットフォームの詳細設定の追加フィールドキー
}

            
このコードブロックはフローティングウィンドウ内に表示されます

RegistrationIDを取得

RegistrationIDの定義

MTPush SDKを統合したアプリケーションがMTPushサーバーに初めて正常に登録すると、MTPushサーバーはクライアントにデバイスの一意の識別子であるRegistrationIDを返します。MTPush SDKはこのRegistrationIDをブロードキャストとしてアプリケーションに送信します。

アプリケーションはこのRegistrationIDをアプリケーションサーバーに保存し、その後RegistrationIDに基づいてデバイスにメッセージまたは通知をプッシュできます。

registrationIDを取得(ブロック付き)

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • (void(^)(int resCode,NSString *registrationID))completionHandler
    • completionHandler:設定の戻り結果を処理するために使用
    • resCode:戻り結果ステータスコード
    • registrationID:registrationIDを返します
[MTPushService registrationIDCompletionHandler:^(int resCode, NSString *registrationID) { NSLog(@"resCode : %d,registrationID: %@",resCode,registrationID); }];
              
              [MTPushService registrationIDCompletionHandler:^(int resCode, NSString *registrationID) {
    NSLog(@"resCode : %d,registrationID: %@",resCode,registrationID);
}];

            
このコードブロックはフローティングウィンドウ内に表示されます

ヒント: このインターフェースを使用してregistrationIDを取得することをお勧めします。エミュレーターでこのインターフェースを呼び出すと、resCodeは1011を返し、registrationIDはnilを返します。

registrationIDを取得

このAPIを呼び出してアプリケーションのRegistrationIDを取得します。アプリケーションがMTPushのサーバーに正常に登録されている場合にのみ対応する値が返され、それ以外の場合は空の文字列が返されます。

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

ヒント: iOS 9では、アプリケーションがアンインストールされ、再インストールされます。APNsによって返されるdevicetokenが変更されます。開発者はデバイスの最新のRegistration idを取得する必要があります。RegistrationIDを取得するには、kMTCNetworkDidLoginNotification実装メソッドでこのインターフェースを呼び出してください。

追加説明

RegistrationIDによるメッセージと通知のプッシュ

RegistrationIDを使用して通知とメッセージをプッシュできます。audienceパラメータはRegistrationIDに基づいてプッシュできます。

バッジを設定

機能説明

badgeは、iOSがアプリの状態をマークするために使用する数字で、アプリアイコンの右上に表示されます。 MTPushはbadge機能をカプセル化し、アプリケーションがbadge値をMTPushサーバーにアップロードできるようにします。MTPushバックグラウンドは各ユーザーの対応するプッシュbadge値を管理するのに役立ち、プッシュbadgeを設定する操作を簡素化します。

実際には、開発者はbadge値を直接追加または減算でき、ユーザーとbadge値の関係を維持する必要はありません。 メッセージをプッシュするには、単に set corner sign +1 を追加し、EngageLabはサーバーに保存されている各ユーザーのbadge値を自動的に+1し、ユーザーにダウンします。

バッジを設定

MTPushサーバーに保存されているbadge値を設定します

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • value 値の範囲は0から99999です。

アイコンに表示されるバッジを設定するには、ローカルでUIApplication: setApplicationIconBadgeNumber関数を呼び出す必要があります

  • 戻り値
    • valueの範囲内でTRUEを返します。それ以外の場合はFALSEを返します

バッジをクリア

MTPushサーバーに保存されているbadge値をクリアします、つまり[setBadge:0]

インターフェース定義

+ (void)resetBadge
              
              + (void)resetBadge

            
このコードブロックはフローティングウィンドウ内に表示されます

ローカル通知

機能説明

iOSデバイスがローカル通知を受信します。ユーザーが通知をクリックしてアプリを開くと、アプリは状態に応じて処理します。ローカル通知コンテンツを取得するには、AppDelegateの次の2つのメソッドにコードを追加する必要があります:

  • アプリの状態が実行されていない場合、この関数が呼び出されます。launchOptionsにUIApplicationLaunchOptionsLocalNotificationKeyが含まれている場合、ユーザーがローカル通知をクリックしてアプリを起動したことを示します。対応するキー値がない場合、アプリがローカル通知をクリックせずに起動したことを意味し、アイコンを直接クリックしたり、他の方法で起動した可能性があります。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; // ローカル通知コンテンツを取得:NSDictionary *localNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsLocalNotificationKey]
              
              - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; 
// ローカル通知コンテンツを取得:NSDictionary *localNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsLocalNotificationKey]

            
このコードブロックはフローティングウィンドウ内に表示されます
  • アプリの状態がフォアグラウンドまたはバックグラウンドで実行されている場合、この関数が呼び出され、AppDelegateのapplicationStateがUIApplicationStateActiveかどうかをチェックすることで、アプリがフォアグラウンドで実行されているかどうかを判断できます。このようなケースはこの関数で処理されます:
// 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です

            
このコードブロックはフローティングウィンドウ内に表示されます
  • 上記の方法はiOS 10以降で非推奨になります。新しいUserNotifications Frameworkの - [UNUserNotificationCenterDelegate willPresentNotification: withCompletionHandler:] または - [UNUserNotificationCenterDelegate didReceiveNotificationResponse: withCompletionHandler:] に置き換えられます。このため、SDKはMTPushRegisterDelegateプロトコルをカプセル化し、対応するプロトコルメソッドを実装するだけで、iOS 10で新しく追加されたデリゲートメソッドに適応でき、上記のリモートプッシュコールバックメソッドと一致します。つまり、次の方法:
- (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]]) { // ローカル通知は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]]) { 
  // ローカル通知はnotificationです
  // }

            
このコードブロックはフローティングウィンドウ内に表示されます

ローカル通知の登録/更新

機能説明

このAPIはプッシュを登録または更新するために使用されます(iOS 10をサポートし、iOS 10以下と互換性があります)。

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • Request [MTPushNotificationRequest]エンティティタイプ、プッシュプロパティを導入できます。

取得説明

request.requestIdentifierをリクエストに入れて、既存のプッシュを更新します。それ以外の場合は新しいプッシュに登録します。

コードサンプル

- (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"; // iOS 10以降で5秒後にアラート MTPushNotificationTrigger *trigger1 = [[MTPushNotificationTrigger alloc] init]; trigger1.timeInterval = 5; //iOS 10 + サポートで1時間ごとに繰り返し MTPushNotificationTrigger *trigger2 = [[MTPushNotificationTrigger alloc] init]; trigger2.timeInterval = 3600; trigger2.repeat = YES; //毎週月曜日午前8時にアラート、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; //5秒後にアラート、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(@"Results back:%@", 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";
  
  // iOS 10以降で5秒後にアラート
  MTPushNotificationTrigger *trigger1 = [[MTPushNotificationTrigger alloc] init];
  trigger1.timeInterval = 5;
  //iOS 10 + サポートで1時間ごとに繰り返し
  MTPushNotificationTrigger *trigger2 = [[MTPushNotificationTrigger alloc] init];
  trigger2.timeInterval = 3600;
  trigger2.repeat = YES;
  
  //毎週月曜日午前8時にアラート、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;
  
  //5秒後にアラート、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(@"Results back:%@", result);
  };
  [MTPushService addNotification:request];
}

            
このコードブロックはフローティングウィンドウ内に表示されます

ローカル通知の削除

機能説明

このAPIは、プッシュされる準備ができている、または通知センターに表示されている通知を削除するために使用されます。(iOS 10をサポートし、iOS 10以降のバージョンと互換性があります。)

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • Identifier MTPushNotificationIdentifierエンティティタイプ。

取得説明

  • iOS 10以上でidentifierをnilに設定すると、通知センターに表示されているすべてのプッシュとプッシュリクエストが削除されます。また、identifiers.deliveredとidentifiers.identifiersを設定することで、通知センターに表示されている対応するプッシュまたはプッシュされるリクエストを削除することもできます。identifiersがnilまたは空の配列に設定されている場合、対応するフラグの下で通知センターに表示されているすべてのプッシュまたはプッシュされるリクエストを削除します。
  • iOS 10以下でidentifierをnilに設定すると、すべてのプッシュが削除され、identifier.delivered属性は無効です。他の場合はidentifier.notificationObjで特定のプッシュオブジェクトを渡してこのプッシュを削除できます。

コードサンプル

- (void)testRemoveNotification { MTPushNotificationIdentifier *identifier = [[MTPushNotificationIdentifier alloc] init]; identifier.identifiers = @[@"sampleRequest"]; identifier.delivered = YES; //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;  //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];
}

            
このコードブロックはフローティングウィンドウ内に表示されます

ローカル通知の検索

機能説明

このAPIはプッシュを検索するために使用されます(iOS 10をサポートし、iOS 10以降と互換性があります)。

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • identifier [MTPushNotificationIdentifier]エンティティタイプ

取得説明

  • iOS 10以上の場合、identifiers.deliveredとidentifiersを設定して、通知センターに表示されている対応するプッシュまたはプッシュされるリクエストを検索できます。 identifiersがnilまたは空の配列に設定されている場合、対応するフラグの下で通知センターに表示されているすべてのプッシュまたはプッシュされるリクエストを返します。 iOS 10以下のidentifiers属性は無効です。 delivered.identifiersがnilまたは空の配列に設定されている場合、すべての未発射のプッシュを返します。
  • identifier.FindCompletionHandlerコールバックを設定して検索結果を取得する必要があります。(NSArray * results)を介して対応するオブジェクトの配列を返します。

コードサンプル

- (void)testFindNotification { MTPushNotificationIdentifier *identifier = [[MTPushNotificationIdentifier alloc] init]; identifier.identifiers = @[@"sampleRequest"]; identifier.delivered = YES; //YESに等しい場合、通知センターに表示されているものを検索します。NOに等しい場合、通知センターでプッシュされるものを検索します。iOS10以下では無効です identifier.findCompletionHandler = ^(NSArray *results) { NSLog(@"The return result is:%@", results); // iOS10以下の場合、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(@"The return result is:%@", 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;  //YESに等しい場合、通知センターに表示されているものを検索します。NOに等しい場合、通知センターでプッシュされるものを検索します。iOS10以下では無効です
  identifier.findCompletionHandler = ^(NSArray *results) {
  NSLog(@"The return result is:%@", results); // iOS10以下の場合、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(@"The return result is:%@", results); // iOS 10以下の場合、UILocalNotificationオブジェクトの配列が返されます。iOS 10以上の場合、delivered値に基づいてUNNotificationまたはUNNotificationRequestオブジェクトの配列が返されます
};
  [MTPushService findNotification:identifier];
}

            
このコードブロックはフローティングウィンドウ内に表示されます

ログレベルの設定

デバッグモードの有効化

機能説明

このAPIは、より多くのログ情報を表示するためにDebugモードを有効にするために使用されます。

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

取得説明

より多くのデバッグ情報が必要な場合、このAPIを呼び出してDebugモードを有効にします。

コードサンプル

[MTPushService setDebugMode];
              
              [MTPushService setDebugMode];

            
このコードブロックはフローティングウィンドウ内に表示されます

ログ情報の無効化

機能説明

このAPIは、ログメッセージをオフにするために使用されます(必要なエラーメッセージを除く)。

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

取得説明

デバッグ情報が不要な場合(ログ情報をマスクし、パフォーマンスを節約するためにリリース時にこのAPIを呼び出すことをお勧めします)、このAPIを呼び出します。

コードサンプル

[MTPushService setLogOFF];
              
              [MTPushService setLogOFF];

            
このコードブロックはフローティングウィンドウ内に表示されます

電話番号の設定

機能説明

SMSメッセージを補完するために使用されます。電話番号を設定すると、「SMSがプッシュできない」という通知モードを実現でき、プッシュの達成率を向上させることができます。 電話番号を設定すると、通常のメッセージが届かない場合にSMSメッセージがデバイスにプッシュされ、プッシュの配信成功率を向上させることができます。

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • mobileNumber 電話番号。値は(+)または数字で始まる必要があります。値にはハイフン(-)と数字のみを含めることができ、20文字を超えることはできません。nilまたは空の文字列が渡された場合、番号はバインド解除されます。
  • completion コールバックに応答します。成功の場合、errorはnullです。失敗の場合、errorにはエラーコードとエラーメッセージが含まれます。エラーコードの詳細については、エラーコードの定義を参照してください。

取得説明

このインターフェースは10秒以内に最大3回呼び出すことができます。ログインが成功した後にこのインターフェースを呼び出すことをお勧めします。結果情報はcompletionを介して非同期に返されます。または、completionをnilに設定して結果情報を処理しないこともできます。

コードサンプル

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

            
このコードブロックはフローティングウィンドウ内に表示されます

言語情報の報告

機能説明

APIはユーザーの言語情報を報告するために使用されます

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • language:言語情報
  • handler:コールバックに報告

取得説明

ログインが成功した後にこのインターフェースを呼び出すことをお勧めします。

コードサンプル

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

            
このコードブロックはフローティングウィンドウ内に表示されます

TCP暗号化モードの設定

適用バージョン

通知サービス拡張SDK v3.0.0以降のバージョン。

機能説明

APIは暗号化されたTCP接続を使用するかどうかを設定するために使用されます。

インターフェース定義

  • (void)setTcpSSL:(BOOL)isSSL;

パラメータ説明

  • isSSL: 暗号化の場合はYES
  • 暗号化しない場合はNO

呼び出し手順

初期化インターフェースの前にこのメソッドを呼び出してください。

コード例

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

            
このコードブロックはフローティングウィンドウ内に表示されます

音声放送機能

機能紹介

この機能を使用するには、bundleidに対してappGroupsを有効にする必要があります。appGroupsを有効にする手順については、「iOS証明書設定ガイド」を参照してください。

この機能はiOS 14以降をサポートしています。

システムの制限により、音声放送の持続時間とモバイル通知ポップアップの表示時間はほぼ同じです(約10秒、システム間で若干の違いがある場合があります)。通知ポップアップが消えると音声放送も停止するので、音声放送の持続時間に注意してください。

appGroupIdの設定

サポートバージョン

バージョンv4.3.4以降でサポートされています。

呼び出し手順

これはappGroupIdを設定するために使用され、通知サービス拡張でmtpushSetAppGroupId:メソッドを介して設定されたappGroupIdと一致する必要があります。メインプロジェクトと通知サービス拡張の間で共有ストレージスペースを定義するために使用され、音声放送関連のリソースが保存されます。

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • appGroupId: bundleidに対してappGroupId機能を有効にしたときに記入したappGroupId。

呼び出し手順

初期化インターフェースの前にこれを呼び出してください。

コード例

[MTPushService setAppGroupId:@"Your appGroupId"];
              
                [MTPushService setAppGroupId:@"Your appGroupId"];

            
このコードブロックはフローティングウィンドウ内に表示されます

音声放送を有効にするかどうかの設定

サポートバージョン

バージョンv4.3.4以降でサポートされています。

機能説明

音声放送機能を有効または無効にします。

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • enable: 有効にする場合はYES、無効にする場合はNO、デフォルトはNOです。

呼び出し手順

初期化インターフェースの前にこれを呼び出してください。デフォルトでは無効になっています。

コード例

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

            
このコードブロックはフローティングウィンドウ内に表示されます

デバイスを交換する際にRegistrationIDをリセットするかどうかを設定

対応バージョン

バージョンv5.1.0から対応。

機能説明

デバイスを交換する際にRegistrationIDをリセットする機能を有効または無効にします。有効にすると、デバイスの変更(デバイスモデルが変更された場合のみ)が検出された際に、登録情報が自動的にクリアされ、再登録されます。

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメーター説明

  • enable: YES: 有効, NO: 無効, デフォルトはNO

使用手順

初期化インターフェースの前にこのメソッドを呼び出してください。デフォルトは無効です。

コード例

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

            
このコードブロックはフローティングウィンドウ内に表示されます

LiveActivity

liveActivity PushToStartTokenの報告

メソッド - registerLiveActivity:pushToStartToken:completion:seq:

このAPIを呼び出してliveActivityのpushToStartTokenを報告し、結果をブロックで返します。

サポートバージョン

バージョン4.4.0以降でサポートされています。

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • activityAttributes

    • 特定のliveActivityによって定義された属性タイプ。
  • pushToStartToken

    • liveactivityに対応するpushToStartToken。
  • completion

    • 対応するステータスコードを返すために使用されます:0は成功、その他のリターンコードについてはエラーコード定義を参照してください。seqは呼び出し時に渡されたセッションシーケンス番号です。
  • seq

    • リクエスト時に渡されたシーケンス番号は、コールバック時にそのまま返されます。
  • LiveActivity pushToStartToken報告コールバック(Block)

typedef void (^MTPUSHLiveActivityTokenCompletion)(NSInteger iResCode, NSString *liveActivityId, NSData *token, NSInteger seq);
              
              
typedef void (^MTPUSHLiveActivityTokenCompletion)(NSInteger iResCode, NSString *liveActivityId, NSData *token, NSInteger seq);

            
このコードブロックはフローティングウィンドウ内に表示されます

liveActivity PushTokenの報告(トークンの更新)

メソッド - registerLiveActivity:pushToken:completion:seq:

このAPIを呼び出して特定のliveActivityのPushTokenを報告し、結果をブロックで返します。

サポートバージョン

バージョン4.4.0以降でサポートされています。

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • liveActivityId

    • liveActivityIdは最大24バイトです。
    • ビジネスID、開発者によって定義され、複数のliveActivity pushTokensを関連付けることができます。EngageLabはこのliveActivityIdを通じて更新が必要なターゲットliveActivityを決定します。このタイプはNSStringである必要があります。

liveActivityのpushTokenが変更された場合、このインターフェースを呼び出して報告してください。

  • pushToken

    • liveactivityに対応するpushToken。
  • completion

    • 対応するステータスコードを返すために使用されます:0は成功、その他のリターンコードについてはエラーコード定義を参照してください。seqは呼び出し時に渡されたセッションシーケンス番号です。
  • seq

    • リクエスト時に渡されたシーケンス番号は、コールバック時にそのまま返されます。
  • LiveActivity PushToken報告コールバック(Block)

typedef void (^MTPUSHLiveActivityTokenCompletion)(NSInteger iResCode, NSString *liveActivityId, NSData *token, NSInteger seq);
              
              
typedef void (^MTPUSHLiveActivityTokenCompletion)(NSInteger iResCode, NSString *liveActivityId, NSData *token, NSInteger seq);

            
このコードブロックはフローティングウィンドウ内に表示されます

VoIPプッシュ通知

機能説明

iOS 8で導入されたVoIPプッシュ通知は、PushKitフレームワークに基づいており、ユーザーがアプリを終了した場合でもアプリを起動してコードを実行できます。注:iOS 13以降、Appleは非VoIP電話シナリオでのPushKitの使用を許可しなくなりました。PushKitを使用する必要がある場合は、CallKitインターフェースを統合する必要があります。

サポートバージョン

サポートバージョン:v4.4.0.

登録

registerVoipToken: VoIPトークンをEngageLabサーバーに送信します。

メソッド定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • voipToken: システムから返されたVoIPトークン。

VoIPメッセージの処理

handleVoipNotification: 受信したVoIPメッセージを処理し、VoIPメッセージの配信統計に使用されます。

メソッド定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • remoteInfo: 受信したメッセージの内容。

Voipトークンのログアウト

unregisterVoipToken:

VoipトークンをEngageLabサーバーにログアウトし、その後Voipメッセージを送信できなくなります。

インターフェース定義

+ (void)unregisterVoipToken:(MTPushVoipTokenCompletion)completion;
              
              + (void)unregisterVoipToken:(MTPushVoipTokenCompletion)completion;

            
このコードブロックはフローティングウィンドウ内に表示されます

Voipブロック

typedef void (^MTPushVoipTokenCompletion)(NSInteger iResCode, NSString *msg);
              
              typedef void (^MTPushVoipTokenCompletion)(NSInteger iResCode, NSString *msg);

            
このコードブロックはフローティングウィンドウ内に表示されます

VoIPプッシュ通知

機能説明

iOS 8で導入されたVoIPプッシュ通知は、PushKitフレームワークに基づいており、ユーザーがアプリを終了した場合でもアプリを起動してコードを実行できます。警告:iOS 13以降、Appleは非VoIP電話シナリオでのPushKitアプリケーションの使用を許可しなくなりました。PushKitを使用する必要がある場合は、CallKitインターフェースを統合する必要があります。

サポートバージョン

サポートバージョン:v4.4.0.

トークンの登録

registerVoipToken: システムから返されたVoIPトークンをEngageLabサーバーに送信します。

メソッド定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • voipToken: システムから返されたVoIPトークン。

VoIPメッセージの処理

handleVoipNotification: 受信したVoIPメッセージを処理し、VoIPメッセージの配信を監視するために使用されます。

メソッド定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • remoteInfo: 受信したメッセージの内容。

通知サービス拡張

サポートバージョン

通知サービス拡張SDK v3.0.0以降のバージョン。

機能説明

通知サービス拡張SDKは、プッシュ到着情報の報告に使用されます。

例 appkeyインターフェースの設定

appkeyインターフェースを設定するには、事前に呼び出す必要があります

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • appkeyはメインアプリのMTPush SDK appkeyと同じである必要があります

メッセージ表示統計

メッセージ送信統計インターフェースで、APNsメッセージ本文のMTPushデータを報告するために呼び出されます。

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • request UNNotificationRequest
  • 完了操作、例えばAPNsの表示など、メッセージ送信報告コールバックで実行されます。

ログのクローズ

デフォルトで有効になっています。リリース時に不要なI/Oを減らすために無効にすることをお勧めします。

インターフェース定義

+ (void)setLogOff
              
              + (void)setLogOff

            
このコードブロックはフローティングウィンドウ内に表示されます

音声放送機能

この機能はiOS 14以降をサポートしています。

サポートバージョン

バージョンv4.3.4以降でサポートされています。

appGroupIdの設定

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • appGroupId: メインアプリで+ (void)setAppGroupId:(NSString *)appGroupId;メソッドを介して設定されたappGroupId値と同じである必要があります。

音声通知の処理

メッセージ配信統計の報告インターフェースで、APNsメッセージ本文のMTPush関連データを報告するためにこのインターフェースを呼び出します。

インターフェース定義

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

            
このコードブロックはフローティングウィンドウ内に表示されます

パラメータ説明

  • request: UNNotificationRequest
  • completion: 音声通知が処理された後のコールバック。処理が成功すると、処理された音声名soundNameが返され、UNNotificationRequest.content.soundの値を置き換える必要があります

呼び出し例

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler { UNMutableNotificationContent *bestAttemptContent = [request.content mutableCopy]; [MTNotificationExtensionService mtpushSetAppGroupId:@"xxx"]; [MTNotificationExtensionService setSiteName:@"Your siteName"]; //バージョン4.3.5以降ではデータセンターを積極的に設定する必要はありません [MTNotificationExtensionService mtpushSetAppkey:@"Your appkey"]; // 音声ファイルの処理 [MTNotificationExtensionService handleVoice:request with:^(NSString *soundName) { if (soundName && soundName.length >= 0 ) { // 音声ファイルの処理が成功した後、通知の音声を処理された音声ファイル名に設定します 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:@"Your siteName"];  //バージョン4.3.5以降ではデータセンターを積極的に設定する必要はありません
  [MTNotificationExtensionService mtpushSetAppkey:@"Your appkey"];
  
  // 音声ファイルの処理
  [MTNotificationExtensionService handleVoice:request with:^(NSString *soundName) {
      if (soundName && soundName.length >= 0 ) {
        // 音声ファイルの処理が成功した後、通知の音声を処理された音声ファイル名に設定します
        bestAttemptContent.sound = [UNNotificationSound soundNamed:soundName];
      }
      // プッシュ統計報告APIの呼び出しを続けます
    [MTNotificationExtensionService mtpushReceiveNotificationRequest:request with:^ {
      NSLog(@"apns upload success");
      self.contentHandler(bestAttemptContent);
    }];
    
  }];

}

            
このコードブロックはフローティングウィンドウ内に表示されます
icon
お問い合わせ