使用Django通过Pyapns(iOS推送通知)发送其他数据

时间:2013-04-24 20:36:25

标签: ios django push-notification apple-push-notifications

是否可以通过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参数的额外字段?

1 个答案:

答案 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;
}