我创建了一个小型Android应用程序,它应该创建唯一的userIds
。
我正在考虑使用FirebaseInstanceId.getId()
,因为documentation says
返回唯一标识应用程序实例的稳定标识符
但app
在这种情况下的含义是什么?
app
是否意味着使用FirebaseInstanceId
的“真正的”Android或iOS应用?或者它是指“Firebase App
”还是更好的Firebase Project
?
我可以假设生成的id
在我的Firebase项目中是唯一的,并且可以FirebaseDatabase
作为userId
存储,或者我应该以另一种方式创建唯一的userId
?
答案 0 :(得分:4)
您可以推断,在这种情况下,“app”表示设备上的特定应用安装。查看javadocs for FirebaseInstanceId,并记下实例ID何时可以更改的规则。安装/卸载和清除应用数据是用户对其设备上的应用进行操作的结果。请注意,此值可能会更改,因此可能不适合Firebase之外的用途。
Firebase使用此值来标识可以接收云消息的应用。它不代表特定用户。用户可以在多个设备上安装相同的APK,使用单个帐户登录其中的每个设备。如果您想向该用户发送云消息,应该将该应用程序的哪个实例发送到哪个设备上?您可能想要发送给所有人。这就是实例id发挥作用的地方。为了保持应用程序的一致行为,无论为用户安装了多少次,您都需要每个唯一安装的实例ID,以便将消息定向到所有这些。
要识别特定用户,您应该使用Firebase Authentication,并假设他们每次都要登录同一个帐户,因此您可以存储一个UID来引用该帐户人。将多个实例ID关联到单个用户通常是为了向该用户进行有针对性的消息传递。
答案 1 :(得分:1)
我在2个不同的应用上使用了2种不同的方法,
第一个: 使用设备IMEI(你需要请求READ_PHONE_STATE权限),
然后,您的Firebase结构将类似于 -
export class BoolModel {
public BooleanValue: Boolean;
}
FormToModel(f: FormGroup) {
var model = new BoolModel();
model.BooleanValue = f.controls['isBoolean'].value ? true : false;
return model;
}
OR ,更好的方法是使用Firebase Auth UID, 每个用户,一旦他使用Name& Pass / Google登录/ Facebook登录等连接到您的应用程序..获取一个名为UID的唯一ID,以实现您将使用的UID
/uniqueImei1/Database1..(games/notes etc..)
/uniqueImei2/Database2..(games/notes etc..)
然后,你的火力架结构 -
String UID = FirebaseAuth.getInstance().getCurrentUser().getUid();
For more information about option 2, Click here.
你真的应该使用选项2,祝你好运:)