---
sourceDocument: オーストラリア API リファレンス
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ja-JP/api-reference

 Release :

    - australia

ft:locale :

    - ja-JP

ft:publication_title :

    - オーストラリア API リファレンス

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# Androidアプリケーションでのプッシュ通知の設定

# Androidアプリケーションでのプッシュ通知の設定 {#ariaid-title1}

* リリースバージョン: Australia
* 
* 更新日 2026年03月12日
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 所要時間：6分

プッシュ通知を設定するために ServiceNow® インスタンスで実行する必要があるタスクに加えて、 Android アプリケーションに特定のコードを含める必要もあります。

## NowSDK NowPushService の作成 {#mobsdk-and-setup-push-app__section_hyb_zxp_prb}

アプリケーションで最初に行う必要があることの 1 つは、NowSDK NowPushService を取得することです。次のスニペットのようなコードをメインコード本文の早い段階で追加します。

    /**
     * Helper class used to handle different Now service instances.
     */
    @Singleton
    class SdkManager @Inject constructor() {

        private var nowPushService: NowPushService? = null

        /**
         * Create the NowPushService once in the lifetime of the application inside the Application
         * class or another manager class that will be injected into other classes via dagger/hilt.
         * NowPushService should be created after initializing the NowSDK
         */
        suspend fun getNowPushService(): NowPushService? {
            if (nowPushService != null) return nowPushService

            return NowPushSDK.makePushService(URL("https://instance-name.service-now.com")).getOrThrow()
                .also { this.nowPushService = it }
        }
    }

NowPushSDK.makePushService() メソッドの詳細については、「[NowPushSDK:makePushService(instanceURL: URL)](https://servicenow-prod.fluidtopics.net/AQsEMMzD54NfXZpKu_FSfw#NPushSDK-makePushService_S_O_O "NowPush サービスを作成します。")」を参照してください。

## プッシュトークンを登録する {#mobsdk-and-setup-push-app__section_kyr_4cq_prb}

Google Firebase は、プッシュ通知を受信するデバイスとアプリケーションを識別する一意のプッシュトークンを提供します。アプリケーションがプッシュ通知を受信できるようにするには、 NowPushService を使用してこのトークンを登録する必要があります。Androidアプリケーションに次のような関数を追加します。PushAppNameをAndroidアプリケーションの名前に変更してください。このアプリケーションは、 ServiceNow® インスタンスに登録する必要があります。

    FirebaseMessaging.getInstance().token.addOnCompleteListener {task ->
      val token = task.result

      if (!task.isSuccessfull || token == null) {
        throw Exception("Unable to fetch token"))
      }

      pushService.registerPushToken(token, "PushAppName", {
          Log.v(TAF, "Successfully registered push token")
      }, { e ->
          Log.e(TAG, "Error registrating push", e)
      })
    }

registerPushToken() メソッドの詳細については、「[NowPushService - registerPushToken(pushToken: String, pushApp: String, successCallback: Runnable, errorCallback: Consumer\<Throwable\>)](https://servicenow-prod.fluidtopics.net/lnfjChiEYPVoBdE5SZoOGg#NPushServ-registerPushToken_S_S_O_O "現在のAndroidデバイスおよび指定されたアプリケーションのプッシュ通知を識別するために使用する一意のFirebaseServiceNowトークンを インスタンスに登録します。")」を参照してください。

## プッシュトークンを登録解除

ユーザーがログアウトするときなど、ユーザーがアプリケーションを終了するたびに、プッシュトークンの登録を解除する必要があります。プッシュトークンを登録解除するには、次のコードスニペットのようなコードを使用します。PushAppNameをAndroidアプリケーションの名前に変更してください。

    pushService.unregisterPushToken(token, "PushAppName", {
          Log.v(TAG, "Successfully unregistered push token")
    }, { e ->
          Log.e(TAG, "Error unregistering push", e)
    })

unregisterPushToken() メソッドの詳細については、「[NowPushService - unregisterPushToken(pushToken: String, pushApp: String, successCallback: Runnable, errorCallback: Consumer\<Throwable\>)](https://servicenow-prod.fluidtopics.net/lnfjChiEYPVoBdE5SZoOGg#NPushServ-unregPushToken_S_S_O_O "指定された Firebase プッシュトークンを関連する ServiceNow インスタンスで登録解除します。")」を参照してください。

## FirebaseMessagingService を実装する

アプリケーション内に `FirebaseMessagingService` を実装する必要があります。このサービスをセットアップして実装するには、 [Android Firebase ドキュメント](https://firebase.google.com/docs/cloud-messaging/android/receive)の手順に従ってください。

セットアップが完了したら、 onMessageReceived() メソッドをオーバーライドし、 RemoteMessage を `NowPushService` に渡します。`NowPushService` は通知を認識すると、それを処理し、アプリケーションが処理する通知オブジェクトを返します。現在、実装されている通知は `NowPushVirtualAgent` だけです。不明な通知は、 `NotSupportedPushError` オブジェクトを返します。

    //Custom coroutineScope created in the Firebase service class
    private val serviceCoroutineScope = CoroutineScope(Dispatchers.IO)

    override fun onMessageReceived(remoteMessage: RemoteMessage) {
      serviceCoroutineScope.launch {
        val result = handleNowPush(remoteMessage)

        if (result.isSuccess) {
          when (val push = result.getOrNull()) {
            is NowPushVirtualAgent -> handleVirtualAgentPush(push)
          }
        } else {
          // Not a NowPush. Handle host app push notification message here
        }
      }
    }

    private suspend fun handleNowPush(remoteMessage: RemoteMessage): Result<NowPushPayload> {
      val nowPushService = sdkManager.getNowPushService()

      return suspendCoroutine { cont ->
        nowPushService?.handlePush(remoteMessage,
          { cont.resume(Result.success(it)) }, { cont.resumeWithException(it) })
      }
    }

handlePush() メソッドの詳細については、「[NowPushService - handlePush(remoteMessage: RemoteMessage, successCallback: Consumer\<NowPushPayload\>, errorCallback: Consumer\<Throwable\>)](https://servicenow-prod.fluidtopics.net/lnfjChiEYPVoBdE5SZoOGg#NPushServ-handlePush_S_O_O "プッシュ通知要求を処理します。")」を参照してください。

さらに、 onNewToken(token: String) をオーバーライドする必要があります。「プッシュトークンの登録」セクションで行ったことと同様に、必ずトークンを pushService.registerPushToken()に渡します。

