gpt4 book ai didi

delphi - 推送到特定用户

转载 作者:行者123 更新时间:2023-12-03 15:57:48 26 4
gpt4 key购买 nike

使用 Delphi 10 Seattle 编写,将“推送器”定位为 Windows,将接收器定位为 iO(目前)。目的是能够将消息推送给特定用户,而无需依赖广播和客户端过滤。

到目前为止,我已经实现了以下目标:1. 向我的 iOS 应用程序发送广播推送2. 以用户身份登录我的 iOS 应用程序3. 在我的安装记录中为 User -> _User

创建一个指针

这就是我在德尔福所能得到的。据我了解,我必须在登录时更新安装记录以反射(reflect)登录用户的安装。

我不知道如何在 Delphi 的 Parse/BAAS 对象中做到这一点。似乎缺少的是我无法获取登录用户的安装 ID。我想如果可以的话我可以通过 TBackendStorage 类更新它。

如有任何帮助,我们将不胜感激。

我已将此问题交叉发布到 Embarcadero 论坛和社区网站。

最佳答案

检索用户对象 ID

var
ACreatedObject: TBackendEntityValue; // REST.Backend.MetaTypes
begin
BackendUsers.Users.LoginUser('donald','#duck99',ACreatedObject);
fUserObjectId:=ACreatedObject.ObjectID;
end

使用用户对象 ID 更新安装

假设您在 Parse 上的安装表中有一列“User”作为指向 _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 对象创建目标,但我在这里使用了带格式的字符串。

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

非局部变量/声明

以下 Delphi BaaS 组件是在设计时创建的。

ParseProvider: TParseProvider;
PushEvents: TPushEvents;
BackendUsers: TBackendUsers;
BackendStorage: TBackendStorage;
BackendPush: TBackendPush;

引用了以下类(或全局)变量:

fUserObjectId:string; // Must be set before push registration is activated.
fInstallationObjectId:string;

注意:原始代码已经过全面测试,但是我已经剪切/粘贴(并进行了编辑以删除不相关的内容),所以如果有任何剪切/粘贴错误,请原谅我。

关于delphi - 推送到特定用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34925056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com