檢索用戶對象ID
var
ACreatedObject: TBackendEntityValue; // REST.Backend.MetaTypes
begin
BackendUsers.Users.LoginUser('donald','#duck99',ACreatedObject);
fUserObjectId:=ACreatedObject.ObjectID;
end
更新與用戶對象ID
安裝假設你在安裝的表有一欄「用戶」上解析爲一個指向_User類的指針。
內PushEventsDeviceRegistered事件:
var
JO,JOP:TJSonObject; // System.JSON
O:TBackendEntityValue; // REST.Backend.MetaTypes
begin
if PushEvents.InstallationValue.TryGetObjectID(fInstallationObjectId) then
begin
try
JO:=TJSONObject.Create;
JOP:=TJSONObject.Create;
JOP.AddPair('__type','Pointer');
JOP.AddPair('className','_User');
JOP.AddPair('objectId',fUserObjectId);
JO.AddPair('User',JOP);
BackendStorage.Storage.UpdateObject('_Installation',
fInstallationObjectId,JO,O);
finally
JO.Free;
end;
end
end;
要根據用戶名
注意,你可以通過創建JSON對象目標目標Push消息,但我已經使用了字符串與格式在這裏。
const
Target = '{"where":{"User":{"$select":{"query":'+
'{"__type":"Pointer","className":"_User","where":'+
'{"username":"%s"}},"key":"objectId"}}}}';
begin
BackendPush.Target.Text:=Format(Target,['donald']);
BackendPush.Message:='Gratz on the Election Result';
BackendPush.Push;
end
非本地變量/聲明
以下德爾福巴斯組分在設計時創建的。
ParseProvider: TParseProvider;
PushEvents: TPushEvents;
BackendUsers: TBackendUsers;
BackendStorage: TBackendStorage;
BackendPush: TBackendPush;
下面的類(或全局)變量被稱爲:
fUserObjectId:string; // Must be set before push registration is activated.
fInstallationObjectId:string;
注:原代碼是完全測試,但我已經剪切/粘貼(和編輯,以去除不相關東西)所以原諒我,如果有任何剪切/粘貼錯誤。
這次不知道我是否正確地得到了這個問題,但是如何將設備註冊到特定頻道(f.i.用戶名)然後發送到這個頻道? –
雖然跟着@Uwe Raabe給我的帶領 - 我找到了答案。 安裝ID隱藏在PushEvents對象中,這裏是需要在PushEvents對象的DeviceRegistered事件中執行的代碼。: '如果PushEvents.InstallationValue.TryGetObjectID(fInstallationObjectId)then' 然後將以下更新安裝對象: 'JOP.AddPair( '__類型', '指針'); JOP.AddPair('className','_ User'); JOP.AddPair('objectId',fUserObjectId); JO.AddPair('User',JOP); BackendStorage.Storage.UpdateObject('_ Installation',fInstallationObjectId,JO,O);' –
@ChristopherBurke很高興您找到了解決方案,並且非常歡迎。你知道你可以回答你自己的問題嗎? http://stackoverflow.com/help/self-answer 如果你這樣做,你的答案會更容易閱讀,你可能會得到進一步的答案投票。 – BIBD