如何在Mobile中获得One Signal唯一用户ID?

Par*_*dha 25 notifications android unique-id ios onesignal

我正在开发一个餐厅应用程序.我在我的应用程序中使用One Signal发送通知.在这里,当我下订单时,我需要为特定用户发送一个信号的唯一ID,以获得"您的订单已成功放置...正在进行中.请等待"的通知.为此,我需要用户的One Signal用户ID.我怎么才能得到它?我是One Signal的新手.请帮我.

Par*_*dha 42

通过使用OneSignal官方网站中的以下代码获得OneSignal的唯一ID.

OneSignal.idsAvailable(new OneSignal.IdsAvailableHandler() {
        @Override
        public void idsAvailable(String userId, String registrationId) {
            Log.d("debug", "User:" + userId);
            if (registrationId != null)
                Log.d("debug", "registrationId:" + registrationId);

        }
    });
Run Code Online (Sandbox Code Playgroud)

参考:

在官方网站获取代码

  • 不推荐使用上述android解决方案使用:OSPermissionSubscriptionState status = OneSignal.getPermissionSubscriptionState(); status.getSubscriptionStatus().getUserId(); (4认同)
  • 不适用于其最新版本 4.0.0。:( (2认同)

Amj*_*aig 14

上面的android解决方案已被弃用使用:

OSPermissionSubscriptionState status = OneSignal.getPermissionSubscriptionState();
status.getSubscriptionStatus().getUserId();
Run Code Online (Sandbox Code Playgroud)


Abd*_*shi 14

安卓Java

String userId = OneSignal.getDeviceState().getUserId();
Run Code Online (Sandbox Code Playgroud)

安卓科特林

val oneSignalUserID = OneSignal.getDeviceState()!!.userId
Run Code Online (Sandbox Code Playgroud)

iOS OneSignal 版本 3.6.0

guard let userID = OneSignal.getDeviceState().userId else { return }
Run Code Online (Sandbox Code Playgroud)

iOS 旧 OneSignal 版本

let status: OSPermissionSubscriptionState = OneSignal.getPermissionSubscriptionState()
    if let id = status.subscriptionStatus.userId {
    oneSignalPlayer_ID = id
    print("\nOneSignal UserId:", id)
}
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案效果很好。其他解决方案(包括已接受的解决方案)可能会被弃用。它们不适用于 Android Studio/Java。 (2认同)