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

时间:2016-04-02 06:17:48

标签: android ios notifications onesignal unique-id

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

13 个答案:

答案 0 :(得分:41)

使用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);

        }
    });

参见:

Getting code in Official Site

答案 1 :(得分:13)

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

var p1 = needle('get', 'https://server.com/posts/12');
var p2 = needle('get', 'https://server.com/posts/13');
//...
Promise.all([p1,p2]).then((data)=>{
  // here you will get the response of all of your requests in array data
});

答案 2 :(得分:4)

对于android,您可以使用getPermissionSubscriptionState方法和addSubscriptionObserver从原生Android SDK的3.5.0+版本开始获取userIDs aka playerIDs。

有关使用getPermissionSubscriptionState的更多信息,请参阅:https://documentation.onesignal.com/docs/android-native-sdk#section--getpermissionsubscriptionstate-

要添加订阅观察者,请参阅:https://documentation.onesignal.com/docs/android-native-sdk#section--addsubscriptionobserver-

Github上有一个Native Android示例: https://github.com/OneSignal/OneSignal-Android-SDK

它位于标有AndroidStudio

的Examples文件夹中

对于iOS,您可以使用getPermissionSubscriptionState方法和addSubscriptionObserver从本机iOS SDK的2.5.0版本开始获取playerID。

有关使用getPermissionSubscriptionState的更多信息,请参阅:https://documentation.onesignal.com/docs/ios-native-sdk#section--getpermissionsubscriptionstate-

要添加订阅观察者,请参阅:https://documentation.onesignal.com/docs/ios-native-sdk#section--addsubscriptionobserver-

在Github上的Swift中有一个iOS示例项目可能会有所帮助:https://github.com/OneSignal/OneSignal-iOS-SDK/tree/master/Examples

答案 3 :(得分:3)

iOS

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

答案 4 :(得分:0)

@Lakshmi Reddy

在iOS中,你可以这样做:

OSPermissionSubscriptionState* status = [OneSignal getPermissionSubscriptionState];
    status.permissionStatus.hasPrompted
    status.permissionStatus.status
//                                                            <- OneSignal idsAvailable is deprecated.it's the alternative
    status.subscriptionStatus.subscribed
    status.subscriptionStatus.userSubscriptionSetting
    status.subscriptionStatus.userId
    status.subscriptionStatus.pushToken
NSLog(@"Push Token - %@",status.subscriptionStatus.pushToken);
NSLog(@"Push User ID - %@",status.subscriptionStatus.userId);

答案 5 :(得分:0)

完整的解决方案:

import android.app.Application;
import com.onesignal.OneSignal;

public class ApplicationClass extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // OneSignal Initialization
        OneSignal.startInit(this)
                .inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)
                .unsubscribeWhenNotificationsAreDisabled(true)
                .init();
        String UUID = OneSignal.getPermissionSubscriptionState().getSubscriptionStatus().getUserId();
    }
}

答案 6 :(得分:0)

String UUID = OneSignal.getPermissionSubscriptionState().getSubscriptionStatus().getUserId()

除非更改SubscriptionStatus,否则此方法返回null。请点击下面的链接,以了解如何从getSubscriptionStatus的JSONObject获取OneSignal userId。

https://stackoverflow.com/a/65107184/1906738

答案 7 :(得分:0)

如果您使用的是 OneSignal 2.6.1 及更高版本:

dataframe*

答案 8 :(得分:0)

以上所有内容在 android 中都不适合我。 从最新版本开始,我得到了这个解决方案。

var userId = OneSignal.getDeviceState().then((value) => {
  var deviceInfo= JSON.stringify(value);
  console.log(deviceInfo.userId)
})

对于像我这样的任何人都可以使用上面的代码来获取唯一的 UserId。

答案 9 :(得分:0)

OneSignal 4.1 Android String playerId = OneSignal.getDeviceState().getUserId(); 获取玩家 ID

答案 10 :(得分:0)

将此添加到您的应用程序类

public void onCreate() {
   ...
   OneSignal.initWithContext(this);
   OneSignal.setAppId(ONESIGNAL_APP_ID);

   // Use One Signal User ID
   OneSignal.getDeviceState().getUserId()
   ...

}

答案 11 :(得分:0)

在 Kotlin 中使用以下代码。

val oneSignalUserID = OneSignal.getDeviceState()!!.userId

答案 12 :(得分:0)

Android Java

String userId = OneSignal.getDeviceState().getUserId();

Android Kotlin

val oneSignalUserID = OneSignal.getDeviceState()!!.userId

iOS

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