1

是否可以通过 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

我怎么可能修改它以发送带有通知参数的额外字段?

4

1 回答 1

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;
}
于 2013-04-24T20:55:14.027 回答