Delphi - 应用程序运行时处理推送通知?

时间:2016-04-15 14:10:52

标签: ios delphi firemonkey

这是我们在XCode处理它们的方式:

- (void)application:(UIApplication *)application
   didReceiveRemoteNotification:(NSDictionary *)userInfo
{
  NSString *message = nil;
  id alert = [userInfo objectForKey:@"alert"];
  if ([alert isKindOfClass:[NSString class]]) {
    message = alert;
  } else if ([alert isKindOfClass:[NSDictionary class]]) {
    message = [alert objectForKey:@"body"];
  }
  if (alert) {
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Title"
                                       message:@"AThe message."  delegate:self
                             cancelButtonTitle:@"button 1"
                             otherButtonTitles:@"button", nil];
    [alertView show];
    [alertView release];
  }

如果iOS应用程序已经以相同方式运行但使用Delphi 10 Seattle,我们如何捕获推送通知?

2 个答案:

答案 0 :(得分:0)

注意:可悲的是我无法测试这个,因为我现在没有Mac,但这应该可行

FMX.Platform.iOS内你会找到

ApplicationDidReceiveRemoteNotification

方法,因此它在Delphi中实现

procedure TApplicationDelegate.applicationDidReceiveRemoteNotification(
  Sender: UIApplication; ANotification: NSDictionary);
begin
  PlatformCocoa.ReceivedRemoteNotification(ANotification);
end;

然后,您可以将通知作为NSDictionary获取,然后您可以从NSDictionary中读取值,以便以您想要的方式处理

你也可以在关于方法调整的一个问题上引用Remy的answer,告诉应用程序使用你的版本ApplicationDidReceiveRemoteNotification而不是源代码中的那个< / p>

答案 1 :(得分:0)

仅限iOS

在表单上删除TEMSProvider组件 在表单上删除TPushEvents组件
TPushEvents.Provider绑定到TEMSProvider

代码中的

设置TPushEvents.Active := True或启用它的AutoActivate属性

TPushEvents有一个名为PushEvents1PushReceived的事件处理它