看起来Apple已经具有通过在aps有效负载中包含loc-key来本地化PUSH通知的内置功能。但是,我不相信Parse的iOS SDK允许您使用sendPushInBackground自己设置该密钥。有没有办法使用Parse本地化PUSH而不首先路由到我自己的服务器?
答案 0 :(得分:2)
PFQuery *pushQuery = [PFInstallation query];
[pushQuery whereKey:@"user" equalTo:author];
NSString *key = @"PUSH_LOC_KEY_SEND_TO_AUTHOR";
NSArray *args = @[name]
NSDictionary *data = @{
@"alert": @{@"loc-key": key,
@"loc-args": args},
@"badge": @"Increment",
@"sound": @"default"
};
PFPush *push = [[PFPush alloc] init];
[push setQuery:pushQuery];
[push setData:data];
然后在Localizable.strings(Base)中添加:
"PUSH_LOC_KEY_SEND_TO_AUTHOR" = "%@ sent you a message";
在Localizable.strings(法语)中添加:
"PUSH_LOC_KEY_SEND_TO_AUTHOR" = "%@ vous envoyé un message";
请注意,在用户授权应用程序之后,您应该将当前用户对象添加到安装中,以便我们可以PFQuery他(如上所示):
PFInstallation *installation = [PFInstallation currentInstallation];
installation[@"user"] = [PFUser currentUser];
[installation saveEventually];
答案 1 :(得分:0)
与PFPush一起使用的数据字典中的警报键可以设置为字典而不是字符串。
对于将来发现这一点的人,我看起来像这样:
NSDictionary *data = [NSDictionary dictionaryWithObjectsAndKeys:
@{@"loc-key":@"NEW_MESSAGE_PUSH", @"loc-args":@[sender.name]}, @"alert",
@"default", @"sound",
@"Increment", @"badge",
sender.pid, @"senderID",
nil];