Outsystems - Mobile

Outsystems Mobile Cordova Apps

アプリケーションのインストルメンテーションを開始する前に、アプリを作成してappKeyがあることを確認してください。

インストール

モジュールを開きます Extensibility Configurations pyzeプラグインを追加し、インストールして初期化するためのjsonノードを追加します。

{
    "plugin":{
        "identifier":"pyze-outsystems",
        "variables":[{
            "name":"ANDROID_PAK",
            "value":"YOUR_ANDROID_PYZE_APP_KEY"
        },{
            "name":"IOS_PAK",
            "value":"YOUR_IOS_PYZE_APP_KEY"
        }]
    }
}

カスタムイベント

カスタムイベントでは、アプリ内でのユーザーのユニークなアクションを簡単に追跡することができます。

詳細なイベントの概要については、API & eventsを参照してください。

イベント

pyze.cordova.PyzeEvents.postCustomEvent("Event Name");

これにより、ユーザーがいつアクションを実行したかを追跡し、そのイベントがどれくらいの頻度で発生しているかを簡単にカウントすることができます。

属性を持つイベント

属性とは、イベントにアタッチできるキーと値のペアのことです。どのイベントでも最大99個のアトリビュートを持つことができます。インストルメンテーションを可能な限り最小限にして有用なものにするためには、弊社のベストプラクティスに従うことを強くお勧めします。一般的なアプリケーションでは、イベントよりも多くの属性を持つべきです。

var customAttribute = {};
customAttribute.color = "Red";
pyze.cordova.PyzeEvents.postCustomEventWithAttributes("Event Name",customAttribute);

タイムドイベント

ユーザーがアクションを完了するまでの時間を計ることは、Pyze の一般的な使用例です。SDkには、タイマーを開始し、アクションの完了時にカスタムイベントを送信できるようにすることで、これを処理する機能が組み込まれています。

  • startTimerForEvent - 名前を指定してタイマーを開始する
  • postTimedEvent - 同じ名前を参照してタイマーを終了します。ミリ秒単位の時間が自動的にこのイベントに添付されます。
  • postTimedEventWithAttributes - 同じ名前を参照し、同様に任意の属性を添付してタイマーを終了します。ミリ秒単位の時間が自動的にこのイベントに添付されます。
//Start timer for event
pyze.cordova.PyzeEvents.startTimerForEvent("Screen Load Time");

//Post timed event. 
//Note : The event name attribute for the `startTimerForEvent` and  `postTimedEvent` should match.
pyze.cordova.PyzeEvents.postTimedEvent("Screen Load Time");

//Post timed event with attributes
var customAttributes = {};
customAttributes["device"] = "Nokia 4.2";
customAttributes["location"] = "CA";
pyze.cordova.PyzeEvents.postTimedEventWithAttributes("Screen Load Time", customAttributes);

シーンアクティビティのトラッキング

シーンの詳細を追跡するには、SceneFlow イベントを使用してシーン遷移を追跡します。

pyze.cordova.PyzeSceneFlow.postSecondsOnScene("Login",durationOnTheScene);

プロフィール

プロファイルは、Pyzeにユーザーに関するデータを追加するための強力な方法です。プロファイルを使用して、ある時点(イベント)に固有のデータではなく、特定のユーザーに関連付けられたデータを追加することができます。

ユーザーがアプリにログインしたら、setUserProfileを呼び出してPyzeにユーザーを識別します。ユーザーが識別された後に発生したイベントはすべて、このユーザーに帰属します。このメソッドは、セッションの最初のログイン時に一度だけ呼び出す必要があります。

オプションでプロファイル属性を含めることができます。

Pyzeの組み込みプロファイル属性はpyze UIで特別な扱いを受けますが、受信したデータに基づいてカスタム属性のデータ型を判別しようとします。ビルトイン属性とカスタム属性の間には、適用されるフォーマット以外の違いはありません。

//Create Pyze Profile Attributes object
var pyzeProfileAttributes = {
   "email_id"        : "xyz@abc.com",
   "date_of_birth"   : "1984-06-01",
   "first_name"      : "John",
   "last_name"       : "Jacobs"
}
//Create Custom Profile Attributes object
var customProfileAttributes = {
   "age"       : 29,
   "pincode"   : "23200",
   "city"      : "XYZ"
}
//Call the setUserProfile API
pyze.cordova.PyzeIdentity.setUserProfile(userId,pyzeProfileAttributes,customProfileAttributes);

PPyzeのプロフィール属性

Pyze ユーザープロファイル フィールド名 データの種類/説明
background (文字列) ユーザーの背景、経歴または履歴データ
country (文字列) 国コードは ISO-3166-1 alpha-2 規格で 送信する必要があります。
current_location (オブジェクト) フォーマッ ト。{“longitude”. -33.991894, “緯度”. 25.243732}
date_of_first_use (ユーザーが最初にアプリを使用した日付) ISO 8601形式またはyyyy-MM-dd’T’HH:mm:ss.SSZ形式の文 字列。
date_of_last_use (ユーザーが最後にアプリを使用した日付) ISO 8601形式の文字列、またはyyyy-MM-dd’T’T’HH:mm:ss.SSZ形 式の文字列。
date_of_birth (生年月日) “YYYY-MM-DD"形式の文字列。
email_id (文字列) 電子メール ID
email_subscribe 文字列) 使用可能な値 は、“opt_in”(メールメッセージの受信を明示的に承認)、“opt_out”(メールメッセージの受信を明示的に拒否)、“subscribed”(オプトインもオプトアウトもしていない)です。
email_hard_bounced ハードバウンスが発生した場合に自動的に更新されます (true またはfalse)
email_spam_reported ユーザーがISP経由でメールをスパムとしてマークした場合、自動的に更新されます(trueまたはfalse)
facebook_id (文字列) facebook ID
first_name (文字列) ユーザのファーストネーム
gender 文字列)「M」、「F」、「O」(その他)、「N」(該当しない)、「P」(言いたくない)、「U」(不明
home_city (文字列) ユーザーの出身地
image_url (文字列) ユーザーに関連付けられる画像の URL
language (文字列) ISO-639-1 標準で送信する言語を要求します。
last_name (文字列) ユーザの姓
marked_email_as_spam_at (文字列) ユーザーの電子メールがスパムとしてマークされた日付。ISO 8601形式、またはyyyy-MM-dd’T’HH:mm:ss.SSSZ形式でなければなりません。
phone (文字列) 電話番号
push_subscribe (文字列) 利用可能な値 は、“opted_in”(明示的にプッシュ メッセージを受信するように登録され ている)、“unsubscribed”(明示的にプッシュメッセージをオプトアウトしている)、“subscribed”(オプトインもオプトアウトもしていない)です。
push_tokens app_id とトークン文字列を持つオブ ジェクトの配列。オプションで、この トークンが関連付けられているデバ イスの device_id を指定することがで きます。アプリ識別子、“token”. “abcd”, “device_id”. “optional_field_value”}]。device_id が 指定されていない場合は、ランダム に生成されます。
time_zone (文字列) タイムゾーンはIANAタイム ゾーンデータベース(例: “America/New_York “や “Eastern Time (US & Canada)")に従って送信 されなければなりません。有効な値 のみが尊重されます。
twitter_id (文字列)Twitter ID

既存のユーザープロファイルの更新

既に設定されているユーザプロファイルの属性を更新するには、以下のAPIを使用します。

注意 : setUserProfileを呼び出す前にこのAPIを呼び出さないでください。

//Create Pyze Profile Attributes object
var pyzeProfileAttributes = {
   "email_id"        : "xyz2@abc.com",
   "date_of_birth"   : "1984-07-01",
   "first_name"      : "John M",
   "last_name"       : "Jacobs"
}
//Create Custom Profile Attributes object
var customProfileAttributes = {
   "age"       : 29,
   "pincode"   : "232001",
   "city"      : "XYZ2"
}
//Call the updateUserProfileAttributes API
pyze.cordova.PyzeIdentity.updateUserProfile(pyzeProfileAttributes,customProfileAttributes);

ユーザーのログアウト

ユーザがログアウトした際にこの API を呼び出します。このコールの後に送信されるイベントには ID は付与されず、匿名のユーザに帰属します。

pyze.cordova.PyzeIdentity.resetUserProfile(); 

ユーザーのプライバシー

Pyzeは、エンドユーザーがデータ収集からオプトアウトしたり、ユーザーのデータを忘れるようにPyzeシステムに指示したりするためのAPIを提供しています。

setUserOptOut

エンドユーザーがデータ収集からオプトアウトできるようにします。オプトアウトはTrueかFalseかを切り替えることができます。

pyze.cordova..setUserOptOut(true) 

ユーザーデータの収集を再開するには、値を false に設定します。

削除ユーザー

エンドユーザがデータ収集からオプトアウトし、Pyzeシステム内のユーザを削除することができます。一度削除したユーザーは元に戻すことができませんので、確認することをお勧めします。

pyze.cordova..deleteUser(true) 

IOSのプッシュ通知

AppleはApple Push Notification Service(APNS)を提供しており、アプリパブリッシャーがプッシュ通知でユーザーにリーチできるようにしています。

1. P12 証明書の生成

  • apple developerアカウントのCertificates, Identifiers & Profilesページに移動します。
  • 識別子」を選択し、「YOUR_APP_IDENTIFIER」に移動します。
  • 機能」で「プッシュ通知」を選択し、「設定」を選択します。
  • 今すぐ開発/プロダクションSSL証明書の下で、証明書の作成を選択します。
  • ここに記載されているように、証明書署名要求をアップロードします。https://help.apple.com/developer-account/#/devbfa00fef7)
  • 生成された証明書をダウンロードして、Keychain Accessに追加します。
  • ここで、先ほどインポートした証明書を選択し、「エクスポート」を選択します。
  • パスワードを入力し、.p12を任意の場所に保存します。

2. プロバイダとしてPyzeを設定します。

アプリのユーザーに代わってPyzeがプッシュ通知を送信できるようにするには、iOSのプッシュ証明書をPyzeに提供してください。

  • growth.pyze.comにログイン
  • ナビゲーションペインの[設定]をクリックします。
  • ドロップダウンリストから鍵を提供するアプリを選択します。

  • 左メニューのプッシュ通知を選択します。
  • .p12形式のPush通知証明書をアップロードし、p12パスワード(証明書作成時に生成したパスワード)を指定し、プロビジョニングモードを指定します。使用している証明書の種類に応じて、「開発」または「本番」を指定します。

  • 1日と1週間のノルマ制限を選択
  • 保存をクリックします。

3. プッシュ通知を有効にする

  • アプリケーションターゲットの下にあるケイパビリティに移動し、ケイパビリティのPush NotificationsとBackground Modesを追加します。
  • Background Modes]で[Remote notifications]にチェックを入れます。

4. AppDelegateの変更

AppDelegateを以下のように更新します。

@import Pyze;
#import <UserNotifications/UserNotifications.h>

@import CoreMotion;

//Let AppDelegate inherit UNUserNotificationCenterDelegate
@interface ALAppDelegate () <UNUserNotificationCenterDelegate>
@end

@implementation ALAppDelegate

//Initialize Pyze
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [Pyze initialize:@"PYZE_APP_KEY" withLogThrottling: PyzelogLevelMinimal];
    return YES;
}

//Register for remote notification
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:(UNAuthorizationOptionAlert +UNAuthorizationOptionSound) completionHandler:^(BOOL granted, NSError * _Nullable error) {}];
    [UNUserNotificationCenter currentNotificationCenter].delegate = self;
    [[UNUserNotificationCenter currentNotificationCenter] setNotificationCategories:[PyzeNotification getPyzeDefaultNotificationCategories]];
    [[UIApplication sharedApplication] registerForRemoteNotifications];
    [PyzeNotification initWithLaunchOptions:launchOptions];
    return YES;
}

//Set remote notification token to Pyze
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    [Pyze setRemoteNotificationDeviceToken:deviceToken];
}

//Notify Pyze when push received.
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
    [Pyze processReceivedRemoteNotification:userInfo withState:[[UIApplication sharedApplication] applicationState] withCompletionHandler:completionHandler];
}

//Let pyze handle the remote notification action
-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler{
    [PyzeNotification handlePushNotificationResponseWithUserinfo:response.notification.request.content.userInfo actionIdentifier:response.actionIdentifier];
    completionHandler();
}

//Enable app to view notification in foreground
-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler {
    completionHandler(UNNotificationPresentationOptionAlert);
}

@end

import Pyze
import UserNotifications

//Let AppDelegate inherit UNUserNotificationCenterDelegate
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {

    //Initialize Pyze
    func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        Pyze.initialize("PYZE_APP_KEY", withLogThrottling: .PyzelogLevelMinimal)
        return true
    }

    //Register for remote notification
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        UNUserNotificationCenter.current().delegate = self;
        UNUserNotificationCenter.current().requestAuthorization(options:[.badge, .alert, .sound]) { granted, error in }
        UNUserNotificationCenter.current().setNotificationCategories(PyzeNotification.getPyzeDefaultNotificationCategories() as! Set<UNNotificationCategory>);
        UIApplication.shared.registerForRemoteNotifications();
        PyzeNotification.initWithLaunchOptions(launchOptions);
        return true
    }

    //Set remote notification token to Pyze
    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        Pyze.setRemoteNotificationDeviceToken(deviceToken);
    }

    //Notify Pyze when notification received
    func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
        Pyze.processReceivedRemoteNotification(userInfo, with: application.applicationState, withCompletionHandler: completionHandler)
    }

    //Let pyze handle the remote notification action
    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
        PyzeNotification.handlePushResponse(withUserinfo: response.notification.request.content.userInfo, actionIdentifier: response.actionIdentifier)
        completionHandler()
    }

    //Enable app to view notification in foreground
    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler(.alert);
    }
}

5. アプリのリッチプッシュ通知を有効にする

アプリがプッシュ通知メッセージ内で画像やGIFを受信できるようにします。

  • ファイル] -> [新規作成] -> [ターゲット]に移動し、通知サービス拡張子を作成します。
  • 製品名を入力し、必要な言語を選択します。
  • プロジェクトとしてアプリケーションに埋め込むを選択してください。
  • 上記の拡張機能を追加すると、XCodeはNotificationServiceクラスを作成します。その内容を以下のコードで置き換えてください。

#import "NotificationService.h"

@interface NotificationService ()

@property (nonatomic, strong) void (^contentHandler)(UNNotificationContent *contentToDeliver);
@property (nonatomic, strong) UNMutableNotificationContent *bestAttemptContent;

@end

@implementation NotificationService

- (NSURL *) attachmentFileURLWithTempLocation:(NSURL *)location name:(NSString *)fileName {
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;
    NSArray * domainDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [domainDirectories objectAtIndex:0];
    NSString *attachmentLocalFilePath = [documentsDirectory stringByAppendingPathComponent:@"/Pyze/"];
    if(![fileManager fileExistsAtPath:attachmentLocalFilePath]) [fileManager createDirectoryAtPath:attachmentLocalFilePath withIntermediateDirectories:NO attributes:nil error:&error];
    attachmentLocalFilePath =  [attachmentLocalFilePath stringByAppendingFormat:@"/%@",fileName];
    if([fileManager fileExistsAtPath:attachmentLocalFilePath]) {
        [fileManager removeItemAtPath:attachmentLocalFilePath error:&error];
        if (error) NSLog(@"Error in removing file : %@", error.debugDescription);
    }
    [fileManager moveItemAtPath:[location path] toPath:attachmentLocalFilePath error:&error];
    if (error) NSLog(@"Error in moving file to location : %@", error.debugDescription);
    NSURL *mediaFileURL = [NSURL fileURLWithPath:attachmentLocalFilePath];
    return mediaFileURL;
}

- (NSURLSessionDownloadTask *) loadAttachmentsWithURLString:(NSString *)urlString {
    NSURL *mediaURL = [NSURL URLWithString:urlString];
    NSURLSessionDownloadTask *task = [[NSURLSession sharedSession] downloadTaskWithURL:mediaURL completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {
          if (!error) {
              NSURL *mediaFileURL = [self attachmentFileURLWithTempLocation:location name:[response suggestedFilename]];
              UNNotificationAttachment *attachment = [UNNotificationAttachment attachmentWithIdentifier:[response suggestedFilename] URL:mediaFileURL options:nil error:&error];
              if (attachment) self.bestAttemptContent.attachments = @[attachment];
              self.contentHandler(self.bestAttemptContent);
          }
      }];
    return task;
}

#pragma mark - UNNotificationServiceExtension delegate

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
    self.contentHandler = contentHandler;
    self.bestAttemptContent = [request.content mutableCopy];
    self.bestAttemptContent.title = self.bestAttemptContent.title;
    self.bestAttemptContent.subtitle = self.bestAttemptContent.subtitle;
    NSString *mediaUrlString = request.content.userInfo[@"mediaUrl"];
    NSURLSessionDownloadTask *task = [self loadAttachmentsWithURLString:mediaUrlString];
    [task resume];
}

- (void)serviceExtensionTimeWillExpire {
    // Called just before the extension will be terminated by the system.
    // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
    self.contentHandler(self.bestAttemptContent);
}

@end

import UserNotifications

class NotificationService: UNNotificationServiceExtension {

    var contentHandler: ((UNNotificationContent) -> Void)?
    var bestAttemptContent: UNMutableNotificationContent?

    override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
        self.contentHandler = contentHandler
        bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
        defer {
            contentHandler(bestAttemptContent ?? request.content)
        }
        guard let attachment = request.attachment else { return }
        bestAttemptContent?.attachments = [attachment]
    }
    
    override func serviceExtensionTimeWillExpire() {
        // Called just before the extension will be terminated by the system.
        // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
        if let contentHandler = contentHandler, let bestAttemptContent =  bestAttemptContent {
            contentHandler(bestAttemptContent)
        }
    }
}

extension UNNotificationRequest {
    var attachment: UNNotificationAttachment? {
        guard let attachmentURL = content.userInfo["mediaUrl"] as? String, let imageData = try? Data(contentsOf: URL(string: attachmentURL)!) else {
            return nil
        }
        return try? UNNotificationAttachment(data: imageData, options: nil)
    }
}

extension UNNotificationAttachment {
    convenience init(data: Data, options: [NSObject: AnyObject]?) throws {
        let fileManager = FileManager.default
        let temporaryFolderName = ProcessInfo.processInfo.globallyUniqueString
        let temporaryFolderURL = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(temporaryFolderName, isDirectory: true)
        try fileManager.createDirectory(at: temporaryFolderURL, withIntermediateDirectories: true, attributes: nil)
        let imageFileIdentifier = UUID().uuidString + ".jpg"
        let fileURL = temporaryFolderURL.appendingPathComponent(imageFileIdentifier)
        try data.write(to: fileURL)
        try self.init(identifier: imageFileIdentifier, url: fileURL, options: options)
    }
}

プッシュ通知

GoogleはFirebase Cloud Messagingサービス(FCM)を提供し、アプリパブリッシャーがプッシュ通知でユーザーにリーチできるようにしている。

pyzeでFirebaseの資格情報を設定する

Firebaseコンソールにログイン

1.プロジェクトを選択し、プロジェクト名の横にある設定アイコンをクリックします。

2.クラウド メッセージング タブで、レガシー サーバー キーと送信者 ID を検索します。

Pyzeアカウントにログイン

1.設定ページで、ドロップダウンメニューからアプリを選択します。

2.アプリの設定ページで、左側のペインからプッシュ通知の設定に移動します。

3.サーバーキーと送信者IDを入力し、アプリが1日と1週間に送信できるプッシュメッセージの最大数を制限します。

FCM プッシュ通知をアプリプロジェクトに統合する

ルートレベルの build.gradle ファイルに以下のルールを追加し、google-services プラグインを含めるようにします。

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:---Latest-Version---'
    }
}

モジュールのGradleファイル(通常はapp/build.gradle)で、ファイルの一番下にプラグインを適用する行を追加して、Gradleプラグインを有効にします。

apply plugin: 'com.android.application'

android {
    // ...
}

dependencies {
    // ...
}

// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'

以下の依存関係をアプリのbuild.gradleファイルに追加します。

dependencies {
    compile "com.google.firebase:firebase-messaging:---Latest-Version---"
}

最新版はいつでもBintrayから入手できます。

Android.Manifestファイルで、Application Tagの間に以下を追加します。

<receiver android:name="com.pyze.android.push.PyzePushTrackingReceiver" android:exported="true"/>
<service
    android:name="com.pyze.android.push.fcm.FcmPushListenerService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

アプリケーションに google-services.json を追加します。

カスタム通知画像

カスタム通知アイコン画像(デフォルトではアプリアイコンが使用されます)を指定するには、pyze_notification_iconpyze_notification_icon_transperentという名前のプロジェクトのdrawableなフォルダに2つのアイコン画像を配置します。

プッシュ通知処理オプション

Pyze SDK は、基本的なプッシュメッセージとリッチプッシュメッセージの登録と表示をデフォルトで処理します。しかし、表示をカスタマイズしたり、何らかのアクションを実行したい場合など、Push Notificationsの登録を自分で行いたい場合があるかもしれません。

組み込みの表示を使用する

1.プッシュ受信イベントの登録

Pyze.registerForPushNotification(IPyzePushListener listener);

2.プッシュメッセージを受信したら、以下のメソッドを呼び出してメッセージを表示します。

Pyze.showPushNotification(PyzePushMessage pushMessage);

3.使用法

Pyze.registerForPushNotification(new IPyzePushListener() {
    @Override
    public void onPushNotificationReceived(PyzePushMessage pyzePushMessage) {
        //Perform some operation and then ask Pyze to display the notification
        Pyze.showPushNotification(pyzePushMessage);
    }
});

独自のカスタム表示を使用する

1.プッシュ受信イベントの登録

Pyze.registerForPushNotification(IPyzePushListener listener);

2.使用法

Pyze.registerForPushNotification(new IPyzePushListener() {
    @Override
    public void onPushNotificationReceived(PyzePushMessage pyzePushMessage) {
        //Perform internal app operation to your app eg: downloading content in the
        // background.
    }
});

高度な機能

登録を手動で処理するか、FCMのセットアップを自分で実装しているが、Pyzeのプッシュ通知機能を利用したい場合は、以下の方法で設定してください。

登録トークンをPyzeに渡す
@Override
public void onTokenRefresh() {
    super.onTokenRefresh();
    ...
    ...
    Pyze.setPushToken(FirebaseInstanceId.getInstance().getToken());
}

受信したプッシュメッセージがPyzeからのものであれば、プッシュメッセージを渡して以下のメソッドを呼び出します。で述べたように自分で処理するか、以下のようにPyzeに処理を任せることができます。

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);
    if(remoteMessage.getData().get("pnty").equals("pyze")){
        PyzePushMessage message = new PyzePushMessage(remoteMessage.getData());
        //Handle displaying push notification manually or through Pyze
        Pyze.showPushNotification(message);
    }
}

アプリ内通知

アプリ内通知は、アプリを使用しているユーザーがアプリを使用した際に、アプリビジネスがユーザーに連絡を取ることを可能にします。アプリ内通知はpyze sdkに組み込まれており、追加の依存関係はありません。企業はDynamic FunnelsやIntelligence Explorerから手動で、Growth Automationからワークフローやキャンペーンに基づいて自動的にユーザーに連絡することができます。アプリ内通知は、新しいメッセージをチェックし、通知でモーダルをポップアップさせたい場所はどこでも、次のmethedを呼び出すCampaignsから送信することができます。

showInAppNotification(callback);

デバッグとロギング

プラットフォーム固有の情報については、iosandroid のドキュメントを参照してください。

API リファレンス

APIのリファレンスはこちらからご覧いただけます。

最終更新 2021-01-10