MTPush-API
MTCorePrivatesApi
- 主に情報設定に使用されます。
- すべてのメソッドはメインプロセスで呼び出す必要があります。メソッドが呼び出される前に子プロセスに配置されるかどうかを判断しないでください。そうしないと、呼び出しエラーが発生します。
configAppKey
- Application.onCreate()メソッドで呼び出す必要があります
- #initの前に呼び出してください
/**
*AndroidManifest.xmlの設定を使用せずにアプリケーションキーを設定します
*
*Application.onCreate()メソッドで呼び出す必要があります
*#initの前に呼び出してください
*
*@param context 空にできません
*@param appKey 空にできません
*/
public static void configAppKey (Context context, String appKey)
コード例は以下の通りです
MTCorePrivatesApi. configAppKey (this, "your appkey");
configAppChannel
- Application.onCreate()メソッドで呼び出す必要があります
- #initの前に呼び出してください
/**
* AndroidManifest.xmlの設定を使用せずにアプリケーションチャンネルを設定します
* Application.onCreate()メソッドで呼び出す必要があります
* initの前に使用する必要があり、Application.onCreate内で使用する必要があります
*
* @param context 空にできません
* @param appChannel 空にできません
*/
public static void configAppChannel(Context context, String appChannel)
コード例:
MTCorePrivatesApi.configAppChannel(this,"your_appChannel");
configAppSiteName
- Application.onCreate()メソッドで呼び出す必要があります
- #initの前に呼び出してください
/**
*AndroidManifest.xmlの設定を使用せずにデータセンターのサイト名を設定します
*現在利用可能なノードは、Singapore、USA_Virginia、DEU_Frankfurt、HongKongです。
*Application.onCreate()メソッドで呼び出す必要があります
*#initの前に呼び出してください
*
*@param context 空にできません
*@param appSiteName 空にできません
*/
public static void configAppSiteName (Context context, String appSiteName)
コード例は以下の通りです
MTCorePrivatesApi. configAppSiteName (this, "Your Platform Data Center Site Name");
configHeartbeatInterval">configHeartbeatInterval
- Application.onCreate()メソッドで呼び出す必要があります
- #initの前に呼び出してください
/**
* ハートビート間隔を設定します
*
* Application.onCreate()メソッドで呼び出す必要があります
*
* @param context 空にできません
* @param heartbeatInterval 時間の単位はミリ秒で、0より大きい必要があります。デフォルト値は4分50秒です\
*/
public static void configHeartbeatInterval(Context context, long heartbeatInterval)
コード例は以下の通りです
- デモではハートビート間隔を3分に設定しています
MTCorePrivatesApi.configHeartbeatInterval(this,3*60*1000);
configConnectRetryCount">configConnectRetryCount
- Application.onCreate()メソッドで呼び出す必要があります
- #initの前に呼び出してください
/**
* 長い接続の再試行回数を設定します
*
* Application.onCreate()メソッドで呼び出す必要があります
*
* @param context 空にできません
* @param connectRetryCount 再試行回数、デフォルト値は3、少なくとも3回
*/
public static void configConnectRetryCount(Context context, int connectRetryCount)
コード例は以下の通りです
*デモでは再接続回数を10回に設定しています
MTCorePrivatesApi.configConnectRetryCount(this,10);
setTcpSSl">setTcpSSl
- Application.onCreate()メソッドで呼び出す必要があります
- #initの前に呼び出してください
/**
* 長い接続が暗号化されているかどうかを設定します。デフォルトでは暗号化されていません
*
* Application.onCreate()メソッドで呼び出す必要があります
*
* @param isSSL true 暗号化、false 暗号化なし
*/
public static void setTcpSSl(boolean isSSL)
コード例は以下の通りです
- デモ設定暗号化
MTCorePrivatesApi.setTcpSSl(true);
configDebugMode
- Application.onCreate()メソッドで呼び出す必要があります
- #initの前に呼び出してください
- Engagelabログ形式、"ENGAGELAB-PRIVATES"を検索します
- Engagelabはメインプロセスと子プロセスでそれぞれログを出力します
/**
* デバッグモードかどうかを設定します。デバッグモードではより詳細なログが出力されます
*
* Application.onCreate()メソッドで呼び出す必要があります
*
* @param context 空にできません
* @param enable デバッグモードかどうか、trueはデバッグモード、falseはデバッグモードではありません
*/
public static void configDebugMode(Context context, boolean enable)
コード例は以下の通りです
- sdkは2つのプロセス、メインプロセスと子プロセスで動作します。子プロセス名はMTCommonServiceサブクラスサービスのプロセス属性名です
- sdkログタグは"ENGAGELAB-PRIVATES"です
- udp/tcp/http関連の操作のログはすべて子プロセスにあります
- したがって、メッセージがプッシュできない場合は、まずデバッグモードを有効にし、次にサブプロセスでタグ"ENGAGELAB-PRIVATES"のログを取得し、技術サポートに提供して分析してください
// アプリケーションがオンラインでない場合はtrueに設定することをお勧めします。統合に便利です
MTCorePrivatesApi.configDebugMode(context.getApplicationContext(), true);
// アプリケーションが起動した後はfalseに設定することをお勧めします
MTCorePrivatesApi.configDebugMode(context.getApplicationContext(), false);
configSM4
- Application.onCreate()メソッドで呼び出す必要があります
- #initの前に呼び出してください
/**
* 国密暗号化を使用するように設定します
*
* @param context 空にできません
*/
public static void configSM4(Context context)
サンプルコードは以下の通りです
// 国密暗号化を有効にします。呼び出されない場合、デフォルトの暗号化方法が使用されます
MTCorePrivatesApi.configSM4(context.getApplicationContext());
getUserId">getUserId
戻り値が空の場合は、環境が設定されているかどうか、初期化が呼び出されているかどうかに注意してください
設定が正しいことを確認しても、まだ接続プロセス中である可能性があります。#onConnectStatusがtrueを返したときに取得できます
/**
* 現在のデバイスのuserIdを取得します。これはEngagelabの一意の識別子であり、プッシュに使用できます
*
* @param context 空にできません
* @return userId
*/
public static String getUserId(Context context)
コード例は以下の通りです
String userId = MTCorePrivatesApi. getUserId(context);
getRegistrationId">getRegistrationId
戻り値が空の場合は、環境が設定されているかどうか、初期化が呼び出されているかどうかに注意してください
設定が正しいことを確認しても、まだ接続プロセス中である可能性があります。#onConnectStatusがtrueを返したときに取得できます
/**
* 現在のデバイスのregistrationIdを取得します。Engagelabの一意の識別子であり、プッシュに使用できます
*
* @param context 空にできません
* @return registrationId
*/
public static String getRegistrationId(Context context)
コード例は以下の通りです
String registrationId = MTCorePrivatesApi.getRegistrationId(context);
setEnableResetOnDeviceChange
- Application.onCreate() メソッド内で呼び出す必要があります
- init の前に呼び出してください
- デフォルトは false(無効)
/**
* デバイス移行機能を設定
* 有効にすると、デバイスモデルが変更された場合、ローカルの登録IDとUID情報がクリアされ、再登録されます
* デフォルトは false
*
* @param context Null不可
* @param enable デバイス移行を有効にするかどうか。trueで有効、falseで無効
*/
public static void setEnableResetOnDeviceChange(Context context, boolean enable)
コード例:
- デバイスモデルが変更された場合(例: デバイスのフラッシュ、デバイスの変更など)、ローカルにキャッシュされた登録情報が自動的にクリアされます
// デバイス移行機能を有効にする
MTCorePrivatesApi.setEnableResetOnDeviceChange(this, true);
// デバイス移行機能を無効にする(デフォルト状態)
MTCorePrivatesApi.setEnableResetOnDeviceChange(this, false);
MTPushPrivatesApi
- 主にプッシュ機能に使用されます
- すべてのメソッドはメインプロセスで呼び出す必要があります。メソッドが呼び出される前にプロセスを判断して子プロセスに配置しないでください。そうしないと、呼び出しエラーが発生します
configOldPushVersion
- バックエンドが
tag: V3.5.4-newportal-20210823-gamma.57
バージョンにアップグレードされていない場合、フロントエンドはこのメソッドを呼び出す必要があります。そうしないと、通知クリックジャンプに問題が発生します- Application.onCreate()メソッドで呼び出します
- #initの前に呼び出してください
/**
* プッシュバージョン番号を3.9.Xとして設定します
*
* @param context 空にできません
*/
public static void configOldPushVersion(Context context)
コード例は以下の通りです:
public class ExampleApplication extends Application {
@Override
public void onCreate() {
// デバッグモードをオンにします
MTCorePrivatesApi.configDebugMode(context.getApplicationContext(), true);
// 古いバージョンの通知クリックジャンプを使用します
MTPushPrivatesApi.configOldPushVersion(context.getApplicationContext());
// 初期化
MTPushPrivatesApi.init(context.getApplicationContext());
}
}
setEnablePushTextToSpeech
/**
* 音声放送機能の設定、音声パッケージ(mt-sdk-sound-x.x.x.aar)をインポートする必要があります
*
* @param context 空にできません
* @param enable trueで有効、falseで無効、デフォルトはfalse
*/
public static void setEnablePushTextToSpeech(Context context, boolean enable)
サンプルコードは以下の通りです:
MTPushPrivatesApi.setEnablePushTextToSpeech(context,true);
init
- Application.onCreate()メソッドで呼び出すことをお勧めします
/**
* MTPushの初期化
*
* Application.onCreate()メソッドで呼び出すことをお勧めします
*
* @param context 空にできません、applicationContextオブジェクトを使用してください
*/
public static void init(Context context)
コード例は以下の通りです
public class ExampleApplication extends Application {
@Override
public void onCreate() {
// デバッグモードをオンにします
MTCorePrivatesApi.configDebugMode(context.getApplicationContext(), true);
// 初期化
MTPushPrivatesApi.init(context.getApplicationContext());
}
}
goToAppNotificationSettings
- sdkを起動した後、#onNotificationStatusに従って結果をコールバックし、この言い訳を呼び出す必要があるかどうかを決定できます
/**
* 通知スイッチ設定ページに移動します
*
* @param context 空にできません
*/
public static void goToAppNotificationSettings(Context context)
サンプルコードは以下の通りです
// 通知スイッチ設定ページに移動し、顧客が手動で通知スイッチをオンにする必要があります
MTPushPrivatesApi.goToAppNotificationSettings(this);
// MTCommonReceiverを継承した後、onNotificationStatusメソッドを書き換えて通知スイッチの状態を取得します。enableがtrueの場合、正常に有効になっていることを意味します
@Override
public void onNotificationStatus(Context context, boolean enable) {
if(enable){
// 通知スイッチがオンに設定されています
}
}
turnOnPush
- 一般的に#turnOffPushを呼び出した後にプッシュを有効にするために使用されます
- 繰り返し呼び出しても一度だけ有効になります。すでに有効になっている場合、再度有効になりません
- 環境に問題がない場合、#onConnectStatusは結果をコールバックします
- 現在サポートされているチャネル:Engagelab/Huawei/Xiaomi/Meizu/oppo/vivo
/**
* Pushプッシュを有効にし、永続ストレージスイッチの状態はtrueで、デフォルトはtrueです
*
* @param context 空にできません
*/
public static void turnOnPush(Context context)
コード例は以下の通りです
// プッシュをオンにします。デフォルトでオンになっています
MTPushPrivatesApi.turnOnPush(context);
// MTCommonReceiverを継承した後、onConnectStatusメソッドを書き換えて長い接続の接続状態を取得します。enableがtrueの場合、正常に開かれていることを意味します
@Override
public void onConnectStatus(Context context, boolean enable){
if(enable){
// pushプッシュを正常に有効にします
}
}
turnOffPush
- 一般的にプッシュプッシュを閉じるために使用されます
- プッシュプッシュを閉じた後、initを呼び出してもプッシュは開きません
- 繰り返し呼び出しても一度だけ有効になります
- 環境に問題がない場合、#onConnectStatusは結果をコールバックします
- 現在サポートされているチャネル:Engagelab/Huawei/Xiaomi/Meizu/oppo/vivo
/**
* プッシュプッシュをオフにし、ストレージスイッチの状態をfalseに永続化します。デフォルトはtrueです
*
* @param context 空にできません
*/
public static void turnOffPush(Context context)
コード例は以下の通りです
// プッシュをオフにします。再度turnOnPushを呼び出してプッシュをオンにする必要があります
MTPushPrivatesApi.turnOffPush(context);
// MTCommonReceiverを継承した後、onConnectStatusメソッドを書き換えて長い接続状態を取得します。enableがfalseの場合、正常に閉じられていることを意味します
@Override
public void onConnectStatus(Context context, boolean enable){
if(!enable){
// pushプッシュを正常に閉じます
}
}
addTag
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- 環境に問題がない場合、#onTagMessageは結果をコールバックします
/**
* 指定されたタグを追加します。累積ロジック。以前に設定されたタグはまだ存在します
*
* @param context 空にできません
* @param sequence ユーザー定義の操作シーケンス番号。操作結果と一緒に返され、操作の一意性を識別するために使用されます
* @param tags タグ配列。各タグ名の長さは40バイトに制限され、最大1000タグを設定でき、単一操作の合計長は5000バイトを超えることはできません
*/
public static void addTag(Context context, int sequence, String... tags)
コード例は以下の通りです
// ここで定数を定義します。これは指定されたタグを追加する操作を表します
private static final int SEQUENCE_TAG_ADD = 1;
// タグを追加します:"china","guangdong","shenzhen"
MTPushPrivatesApi.addTag(context,SEQUENCE_TAG_ADD,"china","guangdong","shenzhen")
// MTCommonReceiverを継承した後、onTagMessageメソッドを書き換えてタグ操作コールバックを取得します
@Override
public void onTagMessage(Context context, TagMessage tagMessage){
if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){
// タグ操作が失敗しました。詳細なエラー情報はMTPushPrivatesApi.Codeにあります
return;
}
if(tagMessage.getSequence() == SEQUENCE_TAG_ADD){
// 指定されたタグが正常に追加されました。この時点で、正常に操作されたタグ配列を表示できます
String[] tags = tagMessage. getTags();
}
}
deleteTag
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- 環境に問題がない場合、#onTagMessageは結果をコールバックします
/**
* 指定されたタグを削除します。削除ロジック。指定されたタグが削除されます
*
* @param context 空にできません
* @param sequence ユーザー定義の操作シーケンス番号。操作結果と一緒に返され、操作の一意性を識別するために使用されます
* @param tags タグ配列。各タグ名の長さは40バイトに制限され、最大1000タグを設定でき、単一操作の合計長は5000バイトを超えることはできません
*/
public static void deleteTag(Context context, int sequence, String... tags)
コード例は以下の通りです:
// ここで定数を定義します。これは指定されたタグを削除する操作を表します
private static final int SEQUENCE_TAG_DELETE = 2;
// タグを削除します:"china","guangdong","shenzhen"
MTPushPrivatesApi.deleteTag(context,SEQUENCE_TAG_DELETE,"china","guangdong","shenzhen")
// MTCommonReceiverを継承した後、onTagMessageメソッドを書き換えてタグ操作コールバックを取得します
@Override
public void onTagMessage(Context context, TagMessage tagMessage){
if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){
// タグ操作が失敗しました。詳細なエラー情報はMTPushPrivatesApi.Codeにあります
return;
}
if(tagMessage.getSequence() == SEQUENCE_TAG_DELETE){
// 指定されたタグが正常に削除されました。この時点で、正常に操作されたタグ配列を表示できます
String[] tags = tagMessage. getTags();
}
}
updateTag
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- 環境に問題がない場合、#onTagMessageは結果をコールバックします
/**
* 指定されたタグを更新します。上書きロジック。以前に追加されたタグがクリアされます
*
* @param context 空にできません
* @param sequence ユーザー定義の操作シーケンス番号。操作結果と一緒に返され、操作の一意性を識別するために使用されます
* @param tags タグ配列。各タグ名の長さは40バイトに制限され、最大1000タグを設定でき、単一操作の合計長は5000バイトを超えることはできません
*/
public static void updateTag(Context context, int sequence, String... tags)
コード例は以下の通りです:
// ここで定数を定義します。これは指定されたタグを更新する操作を表します
private static final int SEQUENCE_TAG_UPDATE = 3;
// タグを更新します:"beijing","shanghai","guangzhou","shenzhen"。以前に設定されたタグは無効になります
MTPushPrivatesApi.updateTag(context,SEQUENCE_TAG_UPDATE,"beijing","shanghai","guangzhou","shenzhen")
// MTCommonReceiverを継承した後、onTagMessageメソッドを書き換えてタグ操作コールバックを取得します
@Override
public void onTagMessage(Context context, TagMessage tagMessage){
if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){
// タグ操作が失敗しました。詳細なエラー情報はMTPushPrivatesApi.Codeにあります
return;
}
if(tagMessage.getSequence() == SEQUENCE_TAG_UPDATE){
// 指定されたタグが正常に更新されました。この時点で、正常に操作されたタグ配列を表示できます
String[] tags = tagMessage. getTags();
}
}
queryTag
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- 環境に問題がない場合、#onTagMessageは結果をコールバックします
/**
* 指定されたタグをクエリします
*
* @param context 空にできません
* @param sequence ユーザー定義の操作シーケンス番号。操作結果と一緒に返され、操作の一意性を識別するために使用されます
* @param tag、各タグ名の長さは40バイトに制限されます
*/
public static void queryTag(Context context, int sequence, String tag)
コード例は以下の通りです
// ここで定数を定義します。これは指定されたタグをクエリする操作を表します
private static final int SEQUENCE_TAG_QUERY = 4;
// タグをクエリします
MTPushPrivatesApi.queryTag(context,SEQUENCE_TAG_QUERY,"china")
// MTCommonReceiverを継承した後、onTagMessageメソッドを書き換えてタグ操作コールバックを取得します
@Override
public void onTagMessage(Context context, TagMessage tagMessage){
if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){
// タグ操作が失敗しました。詳細なエラー情報はMTPushPrivatesApi.Codeにあります
return;
}
if(tagMessage.getSequence() == SEQUENCE_TAG_QUERY){
// 指定されたタグが正常にクエリされました。この時点で、タグと正常に操作された状態を表示できます
String tag = tagMessage. getQueryTag();
boolean valid = tagMessage.isQueryTagValid();
}
}
deleteAllTag
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- 環境に問題がない場合、#onTagMessageは結果をコールバックします
/**
* すべてのタグを削除します。クリアロジック。すべてのタグが削除されます
*
* @param context 空にできません
* @param sequence ユーザー定義の操作シーケンス番号。操作結果と一緒に返され、操作の一意性を識別するために使用されます
*/
public static void deleteAllTag(Context context, int sequence, String... tags)
コード例は以下の通りです:
// ここで定数を定義します。これはすべてのタグを削除する操作を表します
private static final int SEQUENCE_TAG_DELETE_ALL = 5;
// すべてのタグを削除します
MTPushPrivatesApi.deleteTag(context,SEQUENCE_TAG_DELETE_ALL)
// MTCommonReceiverを継承した後、onTagMessageメソッドを書き換えてタグ操作コールバックを取得します
@Override
public void onTagMessage(Context context, TagMessage tagMessage){
if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){
// タグ操作が失敗しました。詳細なエラー情報はMTPushPrivatesApi.Codeにあります
return;
}
if(tagMessage.getSequence() == SEQUENCE_TAG_DELETE_ALL){
// すべてのタグが正常に削除されました
}
}
queryAllTag
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- 環境に問題がない場合、#onTagMessageは結果をコールバックします
/**
* すべてのタグをクエリします。取得ロジック。すべてのタグを取得します
*
* @param context 空にできません
* @param sequence ユーザー定義の操作シーケンス番号。操作結果と一緒に返され、操作の一意性を識別するために使用されます
*/
public static void queryAllTag(Context context, int sequence, String... tags)
コード例は以下の通りです:
// ここで定数を定義します。これはすべてのタグをクエリする操作を表します
private static final int SEQUENCE_TAG_QUERY_ALL = 6;
// すべてのタグをクエリします
MTPushPrivatesApi.queryAllTag(context,SEQUENCE_TAG_QUERY_ALL)
// MTCommonReceiverを継承した後、onTagMessageメソッドを書き換えてタグ操作コールバックを取得します
@Override
public void onTagMessage(Context context, TagMessage tagMessage){
if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){
// タグ操作が失敗しました。詳細なエラー情報については、MTPushPrivatesApi.Codeを参照してください
return;
}
if(tagMessage.getSequence() == SEQUENCE_TAG_DELETE_ALL){
// すべてのタグが正常にクエリされました。この時点で、正常に操作されたタグ配列を表示できます
String[] tags = tagMessage. getTags();
}
}
setAlias
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- 環境に問題がない場合、#onAliasMessageは結果をコールバックします
/**
* エイリアスを設定します
*
* 同じアプリケーション内で異なるユーザーに異なるエイリアスを使用することをお勧めします。これにより、可能な限りユーザーをエイリアスで一意に識別できます
*
* 1つのエイリアスを1人のユーザーにのみ指定しないでください
*
* @param context 空にできません
* @param sequence ユーザー定義の操作シーケンス番号。操作結果と一緒に返され、操作の一意性を識別するために使用されます
* @param alias 有効なエイリアスの構成:文字(大文字と小文字を区別)、数字、アンダースコア、中国語の文字、特殊文字@!#$&*+=.|。制限:エイリアス名の長さは40バイトに制限されます(UTF-8エンコーディングを使用して長さを決定する必要があります)
*
*/
public static void setAlias(Context context, int sequence, String alias)
サンプルコードは以下の通りです
// ここで定数を定義します。これはエイリアスを設定する操作を表します
private static final int SEQUENCE_ALIAS_SET = 7;
// エイリアスを設定します:"young"
MTPushPrivatesApi.setAlias(context,SEQUENCE_ALIAS_SET,"young")
// MTCommonReceiverを継承した後、onAliasMessageメソッドを書き換えてエイリアス操作コールバックを取得します
@Override
public void onAliasMessage(Context context, AliasMessage aliasMessage){
if(aliasMessage.getCode != MTPushPrivatesApi.Code.Success){
// エイリアス操作が失敗しました。詳細なエラー情報については、MTPushPrivatesApi.Codeを参照してください
return;
}
if(aliasMessage.getSequence() == SEQUENCE_ALIAS_SET){
// エイリアスが正常に設定されました。この時点で、正常に操作されたエイリアスを表示できます
String alias = aliasMessage. getAlias();
}
}
getAlias
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- 環境に問題がない場合、#onAliasMessageは結果をコールバックします
/**
* エイリアスを取得します
*
* 同じアプリケーション内で異なるユーザーに異なるエイリアスを使用することをお勧めします。これにより、可能な限りユーザーをエイリアスで一意に識別できます
*
* 1つのエイリアスを1人のユーザーにのみ指定しないでください
*
* @param context 空にできません
* @param sequence ユーザー定義の操作シーケンス番号。操作結果と一緒に返され、操作の一意性を識別するために使用されます
*/
public static void getAlias(Context context, int sequence)
サンプルコードは以下の通りです:
// ここで定数を定義します。これはエイリアスを取得する操作を表します
private static final int SEQUENCE_ALIAS_GET = 8;
// エイリアスを取得します
MTPushPrivatesApi.getAlias(context,SEQUENCE_ALIAS_GET)
// MTCommonReceiverを継承した後、onAliasMessageメソッドを書き換えてエイリアス操作コールバックを取得します
@Override
public void onAliasMessage(Context context, AliasMessage aliasMessage){
if(aliasMessage.getCode != MTPushPrivatesApi.Code.Success){
// エイリアス操作が失敗しました。詳細なエラー情報については、MTPushPrivatesApi.Codeを参照してください
return;
}
if(aliasMessage.getSequence() == SEQUENCE_ALIAS_GET){
// エイリアスが正常に取得されました。この時点で、正常に操作されたエイリアスを表示できます
String alias = aliasMessage. getAlias();
}
}
clearAlias
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- 環境に問題がない場合、#onAliasMessageは結果をコールバックします
/**
* エイリアスをクリアします
*
* 同じアプリケーション内で異なるユーザーに異なるエイリアスを使用することをお勧めします。これにより、可能な限りユーザーをエイリアスで一意に識別できます
*
* 1つのエイリアスを1人のユーザーにのみ指定しないでください
*
* @param context 空にできません
* @param sequence ユーザー定義の操作シーケンス番号。操作結果と一緒に返され、操作の一意性を識別するために使用されます
*/
public static void clearAlias(Context context, int sequence)
サンプルコードは以下の通りです:
// ここで定数を定義します。これはエイリアスをクリアする操作を表します
private static final int SEQUENCE_ALIAS_CLEAR = 7;
// エイリアスをクリアします
MTPushPrivatesApi.clearAlias(context,SEQUENCE_ALIAS_CLEAR)
// MTCommonReceiverを継承した後、onAliasMessageメソッドを書き換えてエイリアス操作コールバックを取得します
@Override
public void onAliasMessage(Context context, AliasMessage aliasMessage){
if(aliasMessage.getCode != MTPushPrivatesApi.Code.Success){
// エイリアス操作が失敗しました。詳細なエラー情報については、MTPushPrivatesApi.Codeを参照してください
return;
}
if(aliasMessage.getSequence() == SEQUENCE_ALIAS_CLEAR){
// エイリアスが正常にクリアされました
}
}
setNotificationShowTime
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- 現在サポートされているチャネル:Engagelabチャネル/アプリがフォアグラウンドにあるときのgoogleチャネル(Engagelabによって表示)
/**
* 通知表示時間を設定します。デフォルトではいつでも表示されます
*
* @param context 空にできません
* @param beginHour 通知表示を許可する開始時間(24時間形式、範囲は0から23)
* @param endHour 通知表示を許可する終了時間(24時間形式、範囲は0から23)、beginHourはendHour以上にすることはできません
* @param weekDays 通知表示を許可する曜日配列(7日システム、範囲は1から7)、空の配列はいつでも通知が表示されないことを意味します
*/
public static void setNotificationShowTime(Context context, int beginHour, int endHour, int... weekDays)
サンプルコードは以下の通りです
// 通知表示時間を毎週1/3/5/7の午前9時から午後9時に設定します
MTPushPrivatesApi.setNotificationShowTime(context, 9, 21, 1,3,5,7);
resetNotificationShowTime
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- 現在サポートされているチャネル:Engagelabチャネル/アプリがフォアグラウンドにあるときのgoogleチャネル(Engagelabによって表示)
/**
* 通知表示時間をリセットします。デフォルトではいつでも表示されます
*
* @param context 空にできません
*/
public static void resetNotificationShowTime(Context context)
サンプルコードは以下の通りです
// 通知表示時間をリセットします。デフォルトではいつでも表示されます
MTPushPrivatesApi.resetNotificationShowTime(context);
setNotificationSilenceTime
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- 現在サポートされているチャネル:Engagelabチャネル/アプリがフォアグラウンドにあるときのgoogleチャネル(Engagelabによって表示)
/**
* 通知サイレント時間を設定します。デフォルトではいつでもサイレントになりません
*
* @param context 空にできません
* @param beginHour 通知サイレントを許可する開始時間、時間単位(24時間形式、範囲は0から23)
* @param beginMinute 通知サイレントを許可する開始時間、分単位(60分、範囲は0から59)
* @param endHour 通知サイレントを許可する終了時間、時間単位(24時間形式、範囲は0から23)
* @param endMinute 通知サイレントを許可する終了時間、分単位(60分、範囲は0から59)
*/
public static void setNotificationSilenceTime(Context context, int beginHour, int beginMinute, int endHour, int endMinute)
サンプルコードは以下の通りです
// 通知サイレント時間を午後9時30分から翌日午前9時30分に設定します
MTPushPrivatesApi.setNotificationSilenceTime(context, 21, 30, 9, 30);
resetNotificationSilenceTime
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- 現在サポートされているチャネル:Engagelabチャネル/アプリがフォアグラウンドにあるときのgoogleチャネル(Engagelabによって表示)
/**
* 通知サイレント時間をリセットします。デフォルトではいつでもサイレントになりません
*
* @param context 空にできません
*/
public static void resetNotificationSilenceTime(Context context)
サンプルコードは以下の通りです
// 通知サイレント時間をリセットします。デフォルトではいつでもサイレントになりません
MTPushPrivatesApi.resetNotificationSilenceTime(context);
setNotificationLayout
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- 現在サポートされているチャネル:Engagelabチャネル
/**
* カスタム通知レイアウトを設定します。デフォルトではシステム通知レイアウトが使用されます
*
* @param context 空にできません
* @param builderId ビルドID
* @param notificationLayout カスタム通知レイアウトのオブジェクト、空にできません
*/
public static void setNotificationLayout(Context context, int builderId, NotificationLayout notificationLayout)
サンプルコードは以下の通りです
// ここで定数を定義します。ビルドIDを表します
private static final int BUILDER_ID = 11;
// notificationLayoutをビルドします
NotificationLayout notificationLayout = new NotificationLayout()
.setLayoutId(R.layout.custom_notification_layout) // レイアウトlayout_id
.setIconViewId(R.id.iv_notification_icon) // 通知アイコンview_id
.setIconResourceId(R.drawable.mtpush_notification_icon) // 通知アイコンsource_id
.setTitleViewId(R.id.tv_notification_title) // 通知タイトルview_id
.setContentViewId(R.id.tv_notification_content) // 通知内容view_id
.setTimeViewId(R.id.tv_notification_time); // 通知時間view_id
// ビルドIDがBUILDER_IDのカスタムレイアウトを設定し、通知を送信するときにbuilderIdをBUILDER_IDとして指定して通知のレイアウトを変更します
MTPushPrivatesApi.setNotificationLayout(this.getApplicationContext(), BUILDER_ID, notificationLayout);
resetNotificationLayout
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- 現在サポートされているチャネル:Engagelabチャネル
/**
* カスタム通知レイアウトをリセットします。デフォルトではシステム通知レイアウトが使用されます
*
* @param context 空にできません
* @param builderId カスタム通知レイアウトのID
*/
public static void resetNotificationLayout(Context context, int builderId)
サンプルコードは以下の通りです
// ここで定数を定義します。ビルドIDを表します
private static final int BUILDER_ID = 11;
// ビルドIDがBUILDER_IDのカスタムレイアウトをリセットし、通知を送信するときにbuilderIdをBUILDER_IDとして指定してシステムデフォルトのレイアウトを使用します
MTPushPrivatesApi.resetNotificationLayout(context,BUILDER_ID);
setNotificationCount
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- 現在サポートされているチャネル:Engagelabチャネル/アプリがフォアグラウンドにあるときのgoogleチャネル(Engagelabによって表示)
/**
* 通知バーの通知数を設定します。デフォルト数は5です
*
* @param context 空にできません
* @param count 通知バーの通知数を制限します。数が制限を超えると、最も古い通知が削除されます。0以下にすることはできません
*/
public static void setNotificationCount(Context context, int count)
サンプルコードは以下の通りです
// 通知バーの通知数を50に設定します
MTPushPrivatesApi.setNotificationCount(context,50);
resetNotificationCount
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- 現在サポートされているチャネル:Engagelabチャネル/アプリがフォアグラウンドにあるときのgoogleチャネル(Engagelabによって表示)
/**
* 通知バーの通知数をリセットします。デフォルト数は5です
*
* @param context 空にできません
*/
public static void resetNotificationCount(Context context)
サンプルコードは以下の通りです
// 通知バーの通知数をリセットします。デフォルト数は5です
MTPushPrivatesApi.resetNotificationCount(context);
setNotificationBadge
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
/**
* アプリケーションバッジの数を設定します。デフォルトは0です(Huawei/Honorのみ有効)
*
* @param context 空にできません
* @param badge アプリケーションバッジの数
*/
public static void setNotificationBadge(Context context, int badge)
サンプルコードは以下の通りです
// アプリケーションバッジの数を1に設定します
MTPushPrivatesApi.setNotificationBadge(context,1);
resetNotificationBadge
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
/**
* アプリケーションバッジの数をリセットします。デフォルトは0です(Huawei/Honorのみ有効)
*
* @param context 空にできません
*/
public static void resetNotificationBadge(Context context) {
サンプルコードは以下の通りです
// アプリケーションバッジの数をリセットします。デフォルトは0です
MTPushPrivatesApi.resetNotificationBadge(context);
showNotification
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
/**
* 通知を表示します
*
* @param context 空にできません
* @param notificationMessage 構築された通知オブジェクト、空にできません
*/
public static void showNotification(Context context, NotificationMessage notificationMessage)
サンプルコードは以下の通りです
// 基本的な通知を構築します。messageIdとcontentは必須です。そうしないと、通知は表示されません
NotificationMessage notificationMessage = new NotificationMessage()
.setMessageId("12345")
.setNotificationId(12345)
.setTitle("custom_notification_title")
.setContent("custom_notification_content");
// 通知を表示します
MTPushPrivatesApi. showNotification(context, notificationMessage);
clearNotification
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
/**
* 指定されたnotifyIdの通知をクリアします
*
* @param context 空にできません
* @param notifyId 通知ID
*/
public static void clearNotification(Context context, int notifyId)
サンプルコードは以下の通りです
// 指定されたnotifyIdの通知をクリアします
MTPushPrivatesApi.clearNotification(context,12345);
reportNotificationArrived
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- Engagelabのベンダーパッケージを統合していませんが、Engagelabに通知配信率を統計させる必要がある場合は、このインターフェースを呼び出してください
/**
* ベンダーチャネル通知の到着を報告します
*
* http/httpsを使用して報告します
*
* @param context 空にできません
* @param messageId EngagelabメッセージID、空にできません
* @param platform ベンダー、値の範囲(1:mi, 2:huawei, 3:meizu, 4:oppo, 5:vivo, 7:honor, 8:google)
* @param platformMessageId ベンダーメッセージID、空にできます
*/
public static void reportNotificationArrived(Context context, String messageId, byte platform, String platformMessageId)
サンプルコードは以下の通りです
//ベンダーの通知到着を報告します。messageIdは"12345"、ベンダーはXiaomi、ベンダーのmessageIdは"MI-6476RHT25"です
MTPushPrivatesApi.reportNotificationArrived(context,"12345",MTPushPrivatesApi.PLATFORM_XIAOMI,"MI-6476RHT25");
reportNotificationClicked
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- Engagelabのベンダーパッケージを統合していませんが、Engagelabに通知クリック率を統計させる必要がある場合は、このインターフェースを呼び出してください
/**
* ベンダーチャネル通知のクリックを報告します
*
* http/httpsを使用して報告します
*
* @param context 空にできません
* @param messageId EngagelabメッセージID、空にできません
* @param platform ベンダー、値の範囲(1:mi, 2:huawei, 3:meizu, 4:oppo, 5:vivo, 7:honor, 8:google)
* @param platformMessageId ベンダーメッセージID、空にできます
*/
public static void reportNotificationClicked(Context context, String messageId, byte platform, String platformMessageId)
サンプルコードは以下の通りです
//ベンダーの通知クリックを報告します。messageIdは"12345"、ベンダーはXiaomi、ベンダーのmessageIdは"MI-6476RHT25"です
MTPushPrivatesApi.reportNotificationClicked(context,"12345",MTPushPrivatesApi.PLATFORM_XIAOMI,"MI-6476RHT25");
reportNotificationDeleted
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- Engagelabのベンダーパッケージを統合していませんが、Engagelabに通知削除率を統計させる必要がある場合は、このインターフェースを呼び出してください
/**
* ベンダーチャネル通知の削除を報告します
*
* http/httpsを使用して報告します
*
* @param context 空にできません
* @param messageId EngagelabメッセージID、空にできません
* @param platform ベンダー、値の範囲(1:mi, 2:huawei, 3:meizu, 4:oppo, 5:vivo, 7:honor, 8:google)
* @param platformMessageId ベンダーメッセージID、空にできます
*/
public static void reportNotificationDeleted(Context context, String messageId, byte platform, String platformMessageId)
サンプルコードは以下の通りです
//ベンダーの通知削除を報告します。messageIdは"12345"、ベンダーはmi、ベンダーのmessageIdは"MI-6476RHT25"です
MTPushPrivatesApi.reportNotificationDeleted(context,"12345",MTPushPrivatesApi.PLATFORM_XIAOMI,"MI-6476RHT25");
reportNotificationOpened
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- Engagelabのベンダーパッケージを統合していませんが、Engagelabに通知開封率を統計させる必要がある場合は、このインターフェースを呼び出してください
- 一部のベンダー(例:huawei/oppo/vivo)には通知到着と通知クリックのコールバックがありません。通知クリックジャンプのアクティビティを設定した後、ジャンプアクティビティでパラメータを取得して報告できます。すべてのベンダーの通知クリックジャンプアクティビティを設定することをお勧めします
- MTPush4.0.0以降のバージョンでは不要です
/**
* ベンダーチャネル通知の開封を報告します
*
* http/httpsを使用して報告します
*
* @param context 空にできません
* @param messageId EngagelabメッセージID、空にできません
* @param platform ベンダー、値の範囲(1:mi, 2:huawei, 3:meizu, 4:oppo, 5:vivo, 7:honor, 8:google)
* @param platformMessageId ベンダーメッセージID、空にできます
*/
public static void reportNotificationOpened(Context context, String messageId, byte platform, String platformMessageId)
サンプルコードは以下の通りです
Bundle bundle = intent. getExtras();
String platformMessage = "";
//huawei
if (intent. getData() != null) {
platformMessage = intent. getData(). toString();
}
// 他のベンダー
if (TextUtils. isEmpty(platformMessage) && intent. getExtras() != null) {
if (bundle. containsKey("JMessageExtra")) {
platformMessage = bundle. getString("JMessageExtra");
} else {
platformMessage = bundle. getString("MTMessageExtra");
}
}
if (TextUtils. isEmpty(platformMessage)) {
return;
}
JSONObject messageJson = new JSONObject(platformMessage);
tvMessage.setText(toLogString(messageJson));
// 解析
String messageId = messageJson.optString("msg_id");
byte platform = (byte) messageJson.optInt("rom_type");
String title = messageJson. optString("n_title");
String content = messageJson. optString("n_content");
// 通知をクリックしてアクティビティを開いたことを報告します。すべてのベンダーのジャンプに追加することをお勧めします。MTPush4.0.0以下のバージョンでのみ必要です
MTPushPrivatesApi. reportNotificationOpened(this, messageId, platform, "");
uploadPlatformToken
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります
- tcpアップロードのため、長い接続が成功する必要があります。つまり、#onConnectStatusがtrueを返した後にこのインターフェースを呼び出します
- Engagelabのベンダーパッケージを統合していませんが、Engagelabにベンダーメッセージをプッシュさせる必要がある場合は、このインターフェースを呼び出してください
/**
* ベンダートークンをアップロードします
*
* tcpアップロードを行います
*
* @param context 空にできません
* @param platform ベンダー、値の範囲(1:mi, 2:huawei, 3:meizu, 4:oppo, 5:vivo, 7:honor, 8:google)
* @param token ベンダーが返したトークン、空にできません
* @param region XiaomiとOppoの海外版は地域を設定する必要があります。国際版の場合は「GLOBAL」と入力し、海外版でない場合は「NULL」と入力します
*/
public static void uploadPlatformToken(Context context, byte platform, String token, String region)
サンプルコードは以下の通りです
//ベンダートークンを報告します。ベンダーはmi、ベンダートークンは"MI-6476s-afs-afs-afaR-HT25"です
MTPushPrivatesApi.uploadPlatformToken(context,MTPushPrivatesApi.PLATFORM_XIAOMI,"MI-6476s-afs-afs-afaR-HT25","NULL");
clearPlatformToken
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります。
- TCP接続を使用してアップロードするため、このインターフェースは長い接続が正常に確立された後、つまり#onConnectStatusのコールバック結果がtrueのときに呼び出す必要があります。
- Engagelabのベンダーパッケージを統合していませんが、Engagelabにベンダーメッセージをプッシュさせる必要がある場合は、このインターフェースを呼び出してください。
/**
* トークンをクリアします。このインターフェースを呼び出した後、トークンはuploadPlatformTokenを通じてのみ報告できます。SDKはトークンを積極的に取得して報告しなくなり、コールドスタート後にリセットされます。
* コールバックonPlatformTokenを介してリスニングします。コールバックプラットフォームが-128の場合、クリアが成功したことを意味します。
*
* TCP接続が必要です。
*
* @param context 空にできません。
*/
public static void clearPlatformToken(Context context)
サンプルコードは以下の通りです:
MTPushPrivatesApi.clearPlatformToken(context);
onFragmentResume
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります。
/**
* @param context 空にできません
* @param fragmentName Fragmentの完全なクラス名(this.getClass().getCanonicalName())
*/
public static void onFragmentResume(Context context, String fragmentName)
onFragmentPause
- 最初に#initを呼び出してください。そうしないと、呼び出しは無効になります。
/**
* @param context 空にできません
* @param fragmentName Fragmentの完全なクラス名(this.getClass().getCanonicalName())
*/
public static void onFragmentPause(Context context, String fragmentName)
使用説明: AndroidにはFragmentを追加する4つの方法があり、各方法はFragmentの異なる処理を必要とします。以下は、これら4つの方法に基づいて指定されたFragmentのアプリ内表示を制御するための説明です。
Fragment使用方法 | Fragmentのライフサイクルをリッスンできますか? | JPush動的表示ページインターフェース呼び出し方法 |
---|---|---|
方法1: add/show/hide | ライフサイクルをリッスンできません | FragmentのonFragmentResumeとonHiddenChangedを呼び出します |
方法2: ViewPager | ライフサイクルをリッスンできません | FragmentのsetUserVisibleHintを呼び出します |
方法3: replace | ライフサイクルをリッスンできます | FragmentのライフサイクルメソッドonResumeとonPauseを呼び出します |
方法4: attach/detach | ライフサイクルをリッスンできます | FragmentのライフサイクルメソッドonResumeとonPauseを呼び出します |
add/show/hide方法
1) FragmentのonCreateViewコールバック関数で動的制御インターフェースを呼び出し、必要なパラメータを渡します。 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { String classname = this.getClass().getCanonicalName(); MTPushPrivatesApi.onFragmentResumed(MyApplication.gContext, classname); return inflater.inflate(R.layout.black_fragment, container, false); } 2) FragmentのonHiddenChangedコールバックで動的制御インターフェースを呼び出し、必要なパラメータを渡します。 @Override public void onHiddenChanged(boolean hidden) { String classname = this.getClass().getCanonicalName(); if (!hidden) { // contextはapplication contextである必要があります MTPushPrivatesApi.onFragmentResumed(MyApplication.gContext, classname); } else { // hide MTPushPrivatesApi.onFragmentPaused(MyApplication.gContext, classname); } super.onHiddenChanged(hidden); }1) FragmentのonCreateViewコールバック関数で動的制御インターフェースを呼び出し、必要なパラメータを渡します。 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { String classname = this.getClass().getCanonicalName(); MTPushPrivatesApi.onFragmentResumed(MyApplication.gContext, classname); return inflater.inflate(R.layout.black_fragment, container, false); } 2) FragmentのonHiddenChangedコールバックで動的制御インターフェースを呼び出し、必要なパラメータを渡します。 @Override public void onHiddenChanged(boolean hidden) { String classname = this.getClass().getCanonicalName(); if (!hidden) { // contextはapplication contextである必要があります MTPushPrivatesApi.onFragmentResumed(MyApplication.gContext, classname); } else { // hide MTPushPrivatesApi.onFragmentPaused(MyApplication.gContext, classname); } super.onHiddenChanged(hidden); }
このコードブロックはフローティングウィンドウ内に表示されますViewPager方法
1) FragmentのsetUserVisibleHintコールバックで動的制御インターフェースを呼び出し、必要なパラメータを渡します。 @Override public void setUserVisibleHint(boolean isVisibleToUser) { String classname = this.getClass().getCanonicalName(); if (isVisibleToUser) { // application contextを渡します MTPushPrivatesApi.onFragmentResumed(MyApplication.gContext, classname); } else { // hide MTPushPrivatesApi.onFragmentPause(MyApplication.gContext, classname); } super.setUserVisibleHint(isVisibleToUser); }1) FragmentのsetUserVisibleHintコールバックで動的制御インターフェースを呼び出し、必要なパラメータを渡します。 @Override public void setUserVisibleHint(boolean isVisibleToUser) { String classname = this.getClass().getCanonicalName(); if (isVisibleToUser) { // application contextを渡します MTPushPrivatesApi.onFragmentResumed(MyApplication.gContext, classname); } else { // hide MTPushPrivatesApi.onFragmentPause(MyApplication.gContext, classname); } super.setUserVisibleHint(isVisibleToUser); }
このコードブロックはフローティングウィンドウ内に表示されますreplaceまたはattach/detach方法
追加されたFragmentのライフサイクルコールバックで動的ページ設定インターフェースを呼び出します。 @Override public void onResume() { // application contextを渡します String classname = this.getClass().getCanonicalName(); MTPushPrivatesApi.onFragmentResumed(MyApplication.gContext, classname); super.onResume(); } @Override public void onPause() { String classname = this.getClass().getCanonicalName(); MTPushPrivatesApi.onFragmentPause(MyApplication.gContext, classname); super.onPause(); }追加されたFragmentのライフサイクルコールバックで動的ページ設定インターフェースを呼び出します。 @Override public void onResume() { // application contextを渡します String classname = this.getClass().getCanonicalName(); MTPushPrivatesApi.onFragmentResumed(MyApplication.gContext, classname); super.onResume(); } @Override public void onPause() { String classname = this.getClass().getCanonicalName(); MTPushPrivatesApi.onFragmentPause(MyApplication.gContext, classname); super.onPause(); }
このコードブロックはフローティングウィンドウ内に表示されます
MTCommonReceiver
- 主にメソッドコールバックに使用されます
- このクラスのすべてのメソッドコールバックはメインプロセスにあります
onNotificationStatus
- sdkが起動するたびに、現在の通知スイッチの状態がコールバックされます
- 後続の通知スイッチに変更がある場合にのみコールバックされます
/**
* アプリケーション通知スイッチ状態のコールバック
*
* @param context 空にできません
* @param enable 通知スイッチがオンかどうか、trueはオン、falseはオフ
*/
@Override
public void onNotificationStatus(Context context, boolean enable)
onConnectStatus
/**
* 長い接続が正常に接続されているかどうか
*
* 初期化後、長い接続が行われ、接続が成功または失敗したときにこのメソッドがコールバックされます
*
* @param context 空にできません
* @param enable 長い接続が正常に接続されているかどうか、trueは成功、falseは失敗
*/
public void onConnectStatus(Context context, boolean enable)
onNotificationArrived
- Engagelab/Xiaomi/Meizuチャネルにはこのメソッドのコールバックがあります(googleチャネルはフォアグラウンドにある必要があります)
- notificationMessageの詳細は#NotificationMessageを参照してください
/**
* 通知メッセージが配信されました
*
* プッシュ通知メッセージが配信されると、このメソッドがコールバックされます
*
* @param context 空にできません
* @param notificationMessage 通知メッセージ
*/
public void onNotificationArrived(Context context, NotificationMessage notificationMessage)
onNotificationUnShow
- 通知がバックグラウンドで送信され、モバイルアプリがフォアグラウンドにあるときに表示されない場合、このメソッドが呼び出されます。
/**
* 通知メッセージがフォアグラウンドで表示されません
*
* @param context 空にできません
* @param notificationMessage 通知メッセージ
*/
@Override
public void onNotificationUnShow(Context context, NotificationMessage notificationMessage)
onNotificationClicked
- Engagelab/Xiaomi/Meizuチャネルにはこのメソッドのコールバックがあります(googleチャネルはフォアグラウンドにある必要があります)
- notificationMessageの詳細は#NotificationMessageを参照してください
/**
* 通知メッセージのクリック
*
* プッシュ通知メッセージのクリックはこのメソッドをコールバックします
*
* @param context 空にできません
* @param notificationMessage 通知メッセージ
*/
public void onNotificationClicked(Context context, NotificationMessage notificationMessage)
onNotificationDeleted
- Engagelabチャネルの通知メッセージ削除のみトリガーされます
- notificationMessageの詳細は#NotificationMessageを参照してください
- アプリケーションがデッド状態にあるときはコールバックできません
/**
* 通知メッセージの削除
*
* プッシュ通知メッセージの削除はこのメソッドをコールバックします
*
* @param context 空にできません
* @param notificationMessage 通知メッセージ
*/
public void onNotificationDeleted(Context context, NotificationMessage notificationMessage)
onCustomMessage
- カスタムメッセージは通知バーに表示されません
- Engagelabチャネルの通知メッセージ削除のみトリガーされます
- customMessageの詳細は#CustomMessageを参照してください
/**
* カスタムメッセージの配信
*
* カスタムメッセージが配信されると、このメソッドがコールバックされます
*
* @param context 空にできません
* @param customMessage カスタムメッセージ
*/
public void onCustomMessage(Context context, CustomMessage customMessage)
onTagMessage
- tagMessageの詳細は#TagMessageを参照してください
/**
* tag操作メッセージ
*
* @param context 空にできません
* @param tagMessage tag情報
*/
public void onTagMessage(Context context, TagMessage tagMessage)
onAliasMessage
- aliasMessageの詳細は#AliasMessageを参照してください
/**
* alias操作メッセージ
*
* @param context ApplicationContextオブジェクト
* @param aliasMessage aliasメッセージ
*/
public void onAliasMessage(Context context, AliasMessage aliasMessage)
onPlatformToken
- ベンダートークンメッセージのコールバック
/**
* ベンダー操作メッセージ
*
* @param context ApplicationContextオブジェクト
* @param platformMessage ベンダートークンメッセージ
*/
public void onPlatformToken(Context context, PlatformTokenMessage platformMessage)
onInAppMessageShow
- アプリ内メッセージ表示コールバック
/**
*
*
* @param context ApplicationContextオブジェクト
* @param inAppMessage アプリ内メッセージ
*/
public void onInAppMessageShow(Context context, InAppMessage inAppMessage)
onInAppMessageClick
- アプリ内メッセージクリックコールバック
/**
*
*
* @param context ApplicationContextオブジェクト
* @param inAppMessage アプリ内メッセージ
*/
public void onInAppMessageClick(Context context, InAppMessage inAppMessage)
NotificationChannel 設定
サポートバージョン
サポート開始バージョン:MTPush SDK v3.3.0
機能説明
Android 8.0以降、通知はNotificationChannelsを通じて管理されます。開発者は独自のNotificationChannelsを定義し、API経由でプッシュするときに通知のchannelIdを指定できます。 Android 8.0以降のデバイスでは、通知は最初に指定されたchannelIdに対応するチャネルを検索し、通知の重要度レベル、音、振動、LEDはチャネルによって決定されます。 channelIdが見つからない場合、またはサイレント期間内にある場合は、デフォルトでengagelabチャネルになります。
カスタムNotificationChannelの例
private void initChannel(){ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (nm != null){ NotificationChannelGroup notificationChannelGroup = new NotificationChannelGroup("MyGroupId", "カスタム通知グループ");
nm.createNotificationChannelGroup(notificationChannelGroup);
NotificationChannel notificationChannel = new NotificationChannel("MyChannelId", "カスタム通知", NotificationManager.IMPORTANCE_HIGH);
notificationChannel.setGroup("MyGroupId");
notificationChannel.enableLights(true);
notificationChannel.enableVibration(true);
notificationChannel.setSound("android.resource:// package_name /raw/ ringtone_file", null); // カスタム着信音を設定
nm.createNotificationChannel(notificationChannel);
}
}
}
NotificationMessage
- 通知メッセージ
属性 | タイプ | 説明 |
---|---|---|
messageId | String | 必須。Engagelab messageId、メッセージ追跡と統計に使用されます。空にできません。空の場合、通知は表示されません。 |
overrideMessageId | String | Engagelab overrideMessageId、メッセージ追跡と統計に使用されます。 |
platform | byte | ベンダータイプ。デフォルトはEngagelab。 MTPushPrivatesApi.PLATFORM_DEFAULT : 0 Xiaomi: MTPushPrivatesApi.PLATFORM_XIAOMI : 1 Huawei: MTPushPrivatesApi.PLATFORM_HUAWEI : 2 Meizu: MTPushPrivatesApi.PLATFORM_MEIZU : 3 Oppo: MTPushPrivatesApi.PLATFORM_OPPO : 4 Vivo: MTPushPrivatesApi.PLATFORM_VIVO : 5 Honor: MTPushPrivatesApi.PLATFORM_HONOR : 7 Google: MTPushPrivatesApi.PLATFORM_GOOGLE : 8 |
platformMessageId | String | ベンダーメッセージID、ベンダーメッセージ追跡と統計に使用されます。 |
notificationId | int | 通知ID。#clearNotificationを呼び出して通知をキャンセルするために使用できます。 |
smallIcon | String | 小さいアイコン。デフォルト値:drawable/mtpush_notification_icon.png。 |
largeIcon | String | 大きいアイコン、通常は通知の右側に表示されます。 |
title | String | 通知タイトル。空の場合、アプリ名が使用されます。 |
content | String | 必須。通知内容。空にできません。空の場合、通知は表示されません。 |
extras | Bundle | キー/値形式の追加フィールド、両方ともString。 |
builderId | int | 通知スタイルID。#setNotificationLayoutを使用して設定できます。デフォルト値:システムスタイル。 |
style | int | 通知スタイル。デフォルト値:0 大きなテキストスタイル(NOTIFICATION_STYLE_BIG_TEXT):1 受信トレイスタイル(NOTIFICATION_STYLE_INBOX):2 大きな画像スタイル(NOTIFICATION_STYLE_BIG_PICTURE):3 |
bigText | String | 大きなテキスト。スタイルがNOTIFICATION_STYLE_BIG_TEXTの場合に有効です。 |
inbox | String[] | 受信トレイ。スタイルがNOTIFICATION_STYLE_INBOXの場合に有効です。 |
bigPicture | String | 大きな画像。スタイルがNOTIFICATION_STYLE_BIG_PICTUREの場合に有効です。 |
priority | int | 通知優先度。デフォルト値:0 低優先度、通知にはLED、振動、音がありません(Notification.PRIORITY_LOW: -1) 通常優先度、通知にはLED、振動、音があります(Notification.PRIORITY_DEFAULT: 0) 高優先度、通知にはLED、振動、音があり、ポップ upWindow (Notification.PRIORITY_HIGH: 1) |
defaults | int | 音、振動、LEDのデフォルト値。デフォルト値:Notification.DEFAULT_ALL: -1 音:Notification.DEFAULT_SOUND: 1 振動:Notification.DEFAULT_VIBRATE: 2 LED:Notification.DEFAULT_LIGHTS: 4 これらの値は組み合わせ可能。例えば7は音、振動、LEDを表します。 Android 8.0以降、このプロパティはチャネル設定に従います。 |
category | String | 通知カテゴリ、通知バーでのソートやフィルタリングに使用されます。 Notification.CATEGORY_ALARM、Notification#CATEGORY_CALLなど様々なカテゴリがあります。 |
sound | String | 通知に添付される音声ファイル。音声ファイルは事前にres/rawディレクトリに存在する必要があります。 Android 8.0以降、音声はチャネルに従います。通知に使用されるチャネルに音声が設定されていない場合、カスタム音声は有効になりません。 事前にチャネルに音声を設定し、後続の通知とchannelIdの音声を一致させて通知音効果の一貫性を維持することをお勧めします。 |
channelId | String | Android 8.0以降必須。事前に設定されていない場合、SDKが設定を支援します(EngagelabチャネルとアプリがフォアグラウンドにあるときのGoogleチャネルのみ)。 |
intentUri | String | 通知クリック後のクリックアクションのインテントURI。現在はactivityのみサポートされています。Intent.toURI() を使用してactivityジャンプを変換します。 |
badge | int | この通知によって追加されるバッジの数。累積され、値は0より大きい必要があります。1に設定することを推奨します。 HuaweiとXiaomiのみ有効です。 Xiaomiでは、通知をクリックするとバッジ数が自動的に1減ります。 Huaweiでは、通知をクリックしてもバッジ数は自動的に減りません。#setNotificationBadgeを使用して設定することを推奨します。 |
CustomMessage
- カスタムメッセージ
属性 | タイプ | 説明 |
---|---|---|
messageId | String | 必須。Engagelab messageId、メッセージ追跡と統計に使用されます。空にできません。 |
platform | byte | ベンダータイプ。デフォルトはEngagelab。 MTPushPrivatesApi.PLATFORM_DEFAULT : 0 Xiaomi: MTPushPrivatesApi.PLATFORM_XIAOMI : 1 Huawei: MTPushPrivatesApi.PLATFORM_HUAWEI : 2 Meizu: MTPushPrivatesApi.PLATFORM_MEIZU : 3 Oppo: MTPushPrivatesApi.PLATFORM_OPPO : 4 Vivo: MTPushPrivatesApi.PLATFORM_VIVO : 5 Honor: MTPushPrivatesApi.PLATFORM_HONOR : 7 Google: MTPushPrivatesApi.PLATFORM_GOOGLE : 8 |
platformMessageId | String | ベンダーメッセージID、ベンダーメッセージ追跡と統計に使用されます。 |
title | String | メッセージタイトル。 |
content | String | メッセージ内容。 |
contentType | String | メッセージタイプ。 |
extras | Bundle | キー/値形式の追加フィールド、両方ともString。 |
TagMessage
- タグメッセージ
属性 | タイプ | 説明 |
---|---|---|
sequence | int | ユーザー定義の操作シーケンス番号。操作結果と一緒に返され、操作の一意性を識別するために使用されます。 |
code | int | 操作結果。詳細は#codeを参照してください。 |
tags | String#addTag #deleteTag #updateTag #queryAllTag |
|
queryTag | String | タグ。以下の操作で返されます: #queryTag |
queryTagValid | boolean | タグ状態。以下の操作で返されます: #queryTag |
AliasMessage
- エイリアスメッセージ
属性 | タイプ | 説明 |
---|---|---|
sequence | int | ユーザー定義の操作シーケンス番号。操作結果と一緒に返され、操作の一意性を識別するために使用されます。 |
code | int | 操作結果。詳細は#codeを参照してください。 |
alias | String | エイリアス。以下の操作で返されます: #setAlias #getAlias |
PlatformTokenMessage
- プラットフォームトークンメッセージ
属性 | タイプ | 説明 |
---|---|---|
platform | byte | ベンダータイプ。デフォルトはEngagelab。 MTPushPrivatesApi.PLATFORM_DEFAULT : 0 Xiaomi: MTPushPrivatesApi.PLATFORM_XIAOMI : 1 Huawei: MTPushPrivatesApi.PLATFORM_HUAWEI : 2 Meizu: MTPushPrivatesApi.PLATFORM_MEIZU : 3 Oppo: MTPushPrivatesApi.PLATFORM_OPPO : 4 Vivo: MTPushPrivatesApi.PLATFORM_VIVO : 5 Honor: MTPushPrivatesApi.PLATFORM_HONOR : 7 Google: MTPushPrivatesApi.PLATFORM_GOOGLE : 8 |
token | String | ベンダーが返したトークン。 |
InAppMessage
- アプリ内メッセージ
属性 | タイプ | 説明 |
---|---|---|
messageId | String | 必須。Engagelab messageId、メッセージ追跡と統計に使用されます。空にできません。空の場合、メッセージは表示されません。 |
overrideMessageId | String | Engagelab overrideMessageId、メッセージ追跡と統計に使用されます。 |
target | String | アプリ内メッセージを表示するターゲットページパス。 |
imageUrl | String | アプリ内メッセージ画像のURL。 |
extras | String | パススルー用の追加情報。 |
content | String | アプリ内メッセージの具体的な内容。 |
expired | long | 有効期限。 |
delay | long | メッセージ表示の遅延時間。 |
interval | long | アプリ内メッセージ表示の間隔時間。 |
duration | long | アプリ内メッセージの表示時間。 |
msgTime | long | SDKがアプリ内メッセージを受信した時間。 |
コード
コード | 整数値 | 説明 |
---|---|---|
SUCCESS | 0 | 成功 |
NULL_TAG_AND_ALIAS | 6001 | 無効な設定 |
TIMEOUT | 6002 | タイムアウト、再試行を推奨。通常、ネットワークが不安定または初期化が完了していない場合に発生 |
INVALID_ALIAS | 6003 | エイリアス文字列が無効です。有効なエイリアスおよびタグは以下で構成されます:英字(大文字小文字区別)、数字、アンダースコア、中国語文字、特殊文字(2.1.6でサポート)@!#$&*+=.| |
TOO_LONG_ALIAS | 6004 | エイリアスが長すぎます。最大40バイト、中国語UTF-8は3バイトです |
INVALID_TAGS | 6005 | タグ文字列が無効です。有効なエイリアスおよびタグは以下で構成されます:英字(大文字小文字区別)、数字、アンダースコア、中国語文字、特殊文字(2.1.6でサポート)@!#$&*+=.| |
TOO_LONG_TAG | 6006 | タグが長すぎます。単一のタグは最大40バイト、中国語UTF-8は3バイトです |
TOO_MANY_TAGS | 6007 | 単一の操作でデバイスにバインドされるタグの数が制限を超えました。1回の操作で最大1000個までです。 |
TOO_LONG_TAGS | 6008 | 単一リクエスト内のタグ操作の長さが5000を超えました |
UNKNOWN_ERROR | 6009 | 不明なエラー |
INVALID_JSON | 6010 | 無効なJSON |
INVOKE_TOO_SOON | 6012 | タグ/エイリアス操作が頻繁すぎます |
CONNECT_NOT_ENABLE | 6013 | CONNECT_NOT_ENABLE |
INVALID_MOBILE_NUMBER | 6023 | 無効な携帯電話番号 |