是否可以通过pyapns数据其他数据?例如,假设我有一个帖子模型。每个帖子都有一个post_id。我想发送带有推送通知的post_id。收到推送通知的用户将收到类似“Alex对您的帖子发表评论”的内容。
用户将看不到post_id。它对用户是隐藏的,但我仍然希望发送这些额外的数据,以便当用户点击推送通知时,它会将它们引导到正确的帖子。
这就是我在util.py中的内容:
import pyapns
import xmlrpclib
class PyapnsWrapper(object):
def __init__(self, host, app_id, apns_certificate_file, mode='production'):
self.app_id = app_id
pyapns.configure({'HOST': host})
pyapns.provision(app_id,
open(apns_certificate_file).read(),
mode)
def notify(self, token, message):
try:
pyapns.notify(self.app_id,
token,
{'aps':{'alert': message}})
except xmlrpclib.Fault, e:
print e
我怎么可能修改它以发送带有notify参数的额外字段?
答案 0 :(得分:1)
尝试替换
{'aps':{'alert': message}}
带
{'aps':{'alert': message},'post-id':post_id}
。
我不熟悉pyapns
,我不知道python,但APNS有效载荷格式允许向有效载荷添加自定义属性。我不确定我的语法是否准确(正如我所说的我不知道python),但你应该从中得到这个想法。
JSON有效负载应如下所示:
{
"aps" : {
"alert" : "Alex commented on your post.",
},
"post-id" : 435472
}
当用户点击通知并打开应用时,您将能够以这种方式访问自定义数据(notificationInfo
将包含post-id
键及其值:
- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSDictionary* notificationInfo =
[launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (notificationInfo) {
[self someProcessing:notificationInfo];
}
...
return YES;
}