我正在开发一款餐厅应用。在我的应用程序中,我使用One Signal发送通知。当我下订单时,我需要发送一个特定用户的One Signal唯一标识符,以便接收成功下单的通知:“您的订单已成功下单...正在处理,请稍候”。为此,我需要该用户的One Signal用户ID。我怎样才能获取它呢?我是One Signal的新手。请帮助我。
我正在开发一款餐厅应用。在我的应用程序中,我使用One Signal发送通知。当我下订单时,我需要发送一个特定用户的One Signal唯一标识符,以便接收成功下单的通知:“您的订单已成功下单...正在处理,请稍候”。为此,我需要该用户的One Signal用户ID。我怎样才能获取它呢?我是One Signal的新手。请帮助我。
@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);
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import androidx.annotation.Nullable;
import com.onesignal.OSSubscriptionObserver;
import com.onesignal.OSSubscriptionStateChanges;
import com.onesignal.OneSignal;
public class OneSignal_PlayerID extends Activity implement OSSubscriptionObserver {
private static String TAG = "OneSignal_PlayerID";
private static final String ONESIGNAL_APP_ID = "xxx-xxx-xxx-xxx";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
OneSignal.initWithContext(this);
OneSignal.setAppId(ONESIGNAL_APP_ID);
OneSignal.addSubscriptionObserver(this);
}
@Override
public void onOSSubscriptionChanged(OSSubscriptionStateChanges stateChanges) {
if (stateChanges.getTo().isSubscribed()){
String playerId = stateChanges.getTo().getUserId();
if (playerId!=null){
Log.i(TAG,"OneSignal Player ID : "+playerId);
}
}
}
}
public void onCreate() {
...
OneSignal.initWithContext(this);
OneSignal.setAppId(ONESIGNAL_APP_ID);
// Use One Signal User ID
OneSignal.getDeviceState().getUserId()
...
}
public class MainActivity extends Activity implements OSSubscriptionObserver {
protected void onCreate(Bundle savedInstanceState) {
OneSignal.addSubscriptionObserver(this);
}
public void onOSSubscriptionChanged(OSSubscriptionStateChanges stateChanges) {
if (!stateChanges.getFrom().getSubscribed() &&
stateChanges.getTo().getSubscribed()) {
new AlertDialog.Builder(this)
.setMessage("You've successfully subscribed to push notifications!")
.show();
// get player ID
stateChanges.getTo().getUserId();
}
Log.i("Debug", "onOSSubscriptionChanged: " + stateChanges);
}
}
val oneSignalUserID = OneSignal.getDeviceState()!!.userId
String UUID = OneSignal.getPermissionSubscriptionState().getSubscriptionStatus().getUserId()
除非SubscriptionStatus被更改,否则此操作将返回null。请点击下面的链接了解如何从getSubscriptionStatus的JSONObject中获取OneSignal userId。
var userId = OneSignal.shared.getPermissionSubscriptionState().then((userObject) => userObject.subscriptionStatus.userId).toString();
所有上述方法在安卓设备上对我都无效。 从最新版本开始,我找到了这个解决方案。
var userId = OneSignal.getDeviceState().then((value) => {
var deviceInfo= JSON.stringify(value);
console.log(deviceInfo.userId)
})
对于像我这样的人,可以使用上面的代码来获取唯一的用户ID。