Skip to main content

APNS (iOS) 和 GCM (Android) 的推送通知

项目描述

版本 特拉维斯 连体工作服 执照

APNS (iOS) 和 GCM (Android) 的推送通知。

快速开始

使用 pip 安装:

pip install pushjack

无论是使用APNS还是GCM,pushjack 都为每个提供客户端。

APNS

使用APNSClient类发送通知:

from pushjack import APNSClient

client = APNSClient(certificate='<path/to/certificate.pem>',
                    default_error_timeout=10,
                    default_expiration_offset=2592000,
                    default_batch_size=100,
                    default_retries=5)

token = '<device token>'
alert = 'Hello world.'

# Send to single device.
# NOTE: Keyword arguments are optional.
res = client.send(token,
                  alert,
                  badge='badge count',
                  sound='sound to play',
                  category='category',
                  content_available=True,
                  title='Title',
                  title_loc_key='t_loc_key',
                  title_loc_args='t_loc_args',
                  action_loc_key='a_loc_key',
                  loc_key='loc_key',
                  launch_image='path/to/image.jpg',
                  extra={'custom': 'data'})

# Send to multiple devices by passing a list of tokens.
client.send([token], alert, **options)

访问响应数据。

# List of all tokens sent.
res.tokens

# List of errors as APNSServerError objects
res.errors

# Dict mapping errors as token => APNSServerError object.
res.token_errors

覆盖 error_timeout、expiration_offset 和 batch_size 的默认值。

client.send(token,
            alert,
            expiration=int(time.time() + 604800),
            error_timeout=5,
            batch_size=200)

发送低优先级消息。

# The default is low_priority == False
client.send(token, alert, low_priority=True)

获取过期令牌。

expired_tokens = client.get_expired_tokens()

关闭 APNS 连接。

client.close()

对于 APNS 沙箱,请改用APNSSandboxClient

from pushjack import APNSSandboxClient

GCM

使用GCMClient类发送通知:

from pushjack import GCMClient

client = GCMClient(api_key='<api-key>')

registration_id = '<registration id>'
alert = 'Hello world.'
notification = {'title': 'Title', 'body': 'Body', 'icon': 'icon'}

# Send to single device.
# NOTE: Keyword arguments are optional.
res = client.send(registration_id,
                  alert,
                  notification=notification,
                  collapse_key='collapse_key',
                  delay_while_idle=True,
                  time_to_live=604800)

# Send to multiple devices by passing a list of ids.
client.send([registration_id], alert, **options)

Alert 也可以是带有数据字段的字典。

alert = {'message': 'Hello world', 'custom_field': 'Custom Data'}

警报还可以包含通知负载。

alert = {'message': 'Hello world', 'notification': notification}

发送低优先级消息。

# The default is low_priority == False
client.send(registration_id, alert, low_priority=True)

访问响应数据。

# List of requests.Response objects from GCM Server.
res.responses

# List of messages sent.
res.messages

# List of registration ids sent.
res.registration_ids

# List of server response data from GCM.
res.data

# List of successful registration ids.
res.successes

# List of failed registration ids.
res.failures

# List of exceptions.
res.errors

# List of canonical ids (registration ids that have changed).
res.canonical_ids

有关更多详细信息,请参阅https://pushjack.readthedocs.io上的完整文档。

变更日志

v1.6.0 (2019-03-15)

  • apns:删除 TLS 版本标志并在创建 APNS 套接字连接时默认为ssl.PROTOCOL_TLS 。谢谢坦纳·斯蒂拉特

v1.5.0 (2018-07-29)

v1.4.1 (2018-06-18)

  • apns:删除对令牌长度的限制,因为不正确地假设令牌总是 64 个字符长。

v1.4.0 (2017-11-09)

  • apns:添加异常APNSProtocolErrorAPNSTimeoutError。感谢Jakub Kleň

  • apns:向APNSClient.send添加重试机制。感谢Jakub Kleň

    • default_retries参数添加到APNSClient初始化。默认为5

    • retries参数添加到APNSClient.send。默认情况下将使用APNSClient.default_retries除非明确传入。

    • 如果重试后无法发送,则会引发APNSTimeoutError

  • apns:修复批量APNSClient.send中的错误,该错误导致返回的错误中消息标识符的错误。感谢Jakub Kleň

  • apns:将最大有效负载截断选项添加到APNSClient.send。感谢Jakub Kleň

    • default_max_payload_length参数添加到APNSClient初始化。默认为0,禁用最大有效负载长度检查。

    • max_payload_length参数添加到APNSClient.send。默认情况下将使用APNSClient.default_max_payload_length除非明确传入。

    • max_payload_length设置时,消息将被截断以适应长度限制,方法是修剪“消息”文本并附加“...”。

v1.3.0 (2017-03-11)

  • apns:优化从 APNS 反馈读取,以便读取的字节数基于标头和令牌长度。

  • apns:读取数据后显式关闭与 APNS 反馈服务的连接。

  • apns:通过mutable_content参数向APNSClient.send()添加对可变内容字段(Apple 通知服务扩展)的支持。谢谢艾哈迈德赫德尔

  • apns:通过thread_id参数添加对线程 id字段(通知中心中的组标识符)的支持APNSClient.send()。谢谢艾哈迈德赫德尔

v1.2.1 (2015-12-14)

  • apns:修复空 APNS 通知的实现,并允许发送带有{"aps": {}}的通知。谢谢朱利叶斯 Seporaitis

v1.2.0 (2015-12-04)

  • gcm:通过low_priority关键字参数向 GCM 消息添加对优先级字段的支持。默认行为是所有消息都具有“高”优先级。这与 GCM 消息相反,但反映了默认优先级为"high"的 APNS 模块中的行为。

v1.1.0 (2015-10-22)

  • gcm:向 GCM 消息添加对通知字段的支持。

  • gcm:当发送给单个收件人时,将registration_ids字段替换为to字段,因为单个收件人不推荐使用registration_ids字段。

v1.0.1 (2015-05-07)

v1.0.0 (2015-04-28)

  • apns:添加APNSSandboxClient用于向 APNS 沙箱服务器发送通知。

  • apns:将消息属性添加到APNSResponse

  • pushjack:添加内部日志记录。

  • apns:修复 APNS 错误检查以在没有数据返回时正确处理读取。

  • apns:如果从 APNS 服务器收到致命错误(例如无效主题、无效负载大小等),则在迭代期间停止 APNS 发送。

  • apns/gcm:使 APNS 和 GCM 客户端保持与服务器的活动连接。

  • apns:使 APNS 始终返回APNSResponse对象,而不是仅在遇到错误时引发APNSSendError 。重大变化

  • apns/gcm:去掉APNS/GCM模块发送功能,只支持客户端接口。(重大变化

  • apns:从APNSClient 中删除配置参数并使用如下映射的单个方法参数:(重大更改

    • APNS_ERROR_TIMEOUT => default_error_timeout

    • APNS_DEFAULT_EXPIRATION_OFFSET => default_expiration_offset

    • APNS_DEFAULT_BATCH_SIZE => default_batch_size

  • gcm:从GCMClient 中删除配置参数并使用如下映射的单个方法参数:(重大更改

    • GCM_API_KEY => api_key

  • pushjack:删除pushjack.clients模块。(重大变化

  • pushjack:删除pushjack.config模块。(重大变化

  • gcm:将 GCMResponse.payloads 重命名GCMResponse.messages。(重大变化

v0.5.0 (2015-04-22)

  • apns:添加新的 APNS 配置值APNS_DEFAULT_BATCH_SIZE并设置为100

  • apns:将batch_size参数添加到可用于覆盖APNS_DEFAULT_BATCH_SIZE的 APNS发送

  • apns:使 APNS多个通知批量发送到单个有效负载中。以前,为每个令牌执行单独的套接字写入。现在,套接字写入基于APNS_DEFAULT_BATCH_SIZE配置值或batch_size函数参数值进行批处理。

  • apns:当收到错误响应时,使 APNS在失败的令牌之后发送恢复发送。

  • apns:当收到一个或多个错误响应时,使 APNS发送引发APNSSendError 。APNSSendError包含错误、所有尝试的令牌、失败的令牌和成功的令牌的聚合。(重大变化

  • apns:将APNS发送优先级参数替换为low_priority=False。(重大变化

v0.4.0 (2015-04-15)

  • apns:改进 APNS 中的错误处理,以免遗漏错误。

  • apns:改进批量发送期间对 APNS 套接字连接的处理,以便在丢失时重新建立连接。

  • apns:使 APNS 套接字读/写非阻塞。

  • apns:使 APNS 套接字框架封装更容易理解。

  • apns/gmc:删除 APNS 和 GCM send_bulk功能。修改发送以支持批量通知。(重大变化

  • apns:删除APNS_MAX_NOTIFICATION_SIZE作为配置选项。

  • gcm:删除GCM_MAX_RECIPIENTS作为配置选项。

  • gcm:从 GCM 发送函数中删除请求参数。重大变化

  • apns:从 APNS 发送函数中删除sock参数。重大变化

  • gcm:返回 GCM 规范 id 的命名元组。

  • apns:为 APNS 过期令牌返回 namedtuple 类。

v0.3.0 (2015-04-01)

  • gcm:将restricted_pa ​​ckage_name和dry_run字段添加到GCM 发送。

  • gcm:为所有 GCM 服务器错误响应添加例外。

  • apns:使apns.get_expired_tokensAPNSClient.get_expired_tokens接受可选的sock参数以提供自定义套接字连接。

  • apns:如果无法读取证书文件,则引发 APNSAuthError而不是APNSError 。

  • apns:提高APNSInvalidPayloadSizeError而不是APNSDataOverflow。(重大变化

  • apns:引发 APNSInvalidTokenError而不是APNSError

  • gcm:如果未设置GCM_API_KEY ,则引发 GCMAuthError 。

  • pushjack:重命名几个函数参数:(重大更改

    • gcm :数据警报

    • gcm:token / tokensregistration_id / registration_ids

    • gcm:调度程序/调度程序到GCMRequest /请求

    • 客户端:registration_iddevice_id

  • gcm:返回GCMClient.send/send_bulk的GCMResponse对象。(重大变化

  • gcm:为gcm.send/send_bulk返回requests.Response对象。(重大变化

v0.2.2 (2015-03-30)

  • apns:修复title-loctitle-loc-argslaunch-image的有效负载密钥分配。以前,使用'_'代替'-'

v0.2.1 (2015-03-28)

  • apns:修复apns.receive_feedback中不正确的变量引用。

v0.2.0 (2015-03-28)

  • pushjack:当config是类对象和Config的子类时,修复客户端中配置的处理。

  • apns:使apns.send/send_bulk接受额外的警报字段:titletitle-loctitle-loc-argslaunch-image

  • gcm:如果未设置GCM_API_KEY ,则使gcm.send/send_bulk引发GCMError异常。

  • gcm:如果没有作为一个传入,则将 gcm 有效负载创建转换为 dict数据。然后将数据的原始值设置为{'message': data}。(重大变化

  • gcm:使 gcm 有效负载创建不为可选关键字参数设置默认值。(重大变化

v0.1.0 (2015-03-26)

  • pushjack:将pushjack.settings模块重命名为pushjack.config。(重大变化

  • apns/gcm:允许将配置设置覆盖传递到create_gcm_configcreate_apns_configcreate_apns_sandbox_config

  • pushjack:使用自定义方法覆盖Configupdate()方法,该方法的功能与from_object()类似,只是它接受dict代替。

v0.0.1 (2015-03-25)

  • 第一次发布。

执照

麻省理工学院许可证 (MIT)

版权所有 (c) 2015 Derrick Gilland

特此免费授予任何人获得本软件和相关文档文件(“软件”)的副本,以不受限制地处理本软件,包括但不限于使用、复制、修改、合并的权利、发布、分发、再许可和/或出售本软件的副本,并允许向其提供本软件的人这样做,但须符合以下条件:

上述版权声明和本许可声明应包含在本软件的所有副本或大部分内容中。

本软件按“原样”提供,不提供任何形式的明示或暗示保证,包括但不限于对适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任承担任何责任,无论是在合同、侵权或其他方面,由本软件或本软件的使用或其他交易引起或与之相关。软件。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

pushjack-1.6.0.tar.gz (39.8 kB 查看哈希)

已上传 source

内置分布

pushjack-1.6.0-py2.py3-none-any.whl (23.5 kB 查看哈希

已上传 py2 py3