IOS——消息推送机制(二)

本文介绍了APNs推送消息的限制与配置,包括如何发送长消息、指定声音、管理Badge计数及本地化消息等,并探讨了如何根据推送内容进行应用内跳转。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 常见问题FAQ

我能推送长消息吗?

   不能,APNs限制了每个notification的payload最大长度是256字节,超长的消息是不能发送的。

推送怎么加声音提醒

   消息推送是可以指定声音的。譬如你可以对正面的反馈使用欢快的声音,对负面的反馈使用低沉一点的声音,都可以达到别出心裁让人眼前一亮的目的。
   你需要先放一些aiff、wav或caf音频文件到app的资源文件中,然后在推送的时候指定不同的音频文件名就可以了。

                

推送的Badge是怎么回事

    推送并不一定会导致应用图标上红色数字增加,是否显示这一数字,显示成多少,都取决于开发者自己。
   在发送推送消息的时候,我们可以选择是否递增这一数字;如果不选择这一项,那么消息推送并不会导致应用图标上红色数字的出现。

   

   好,现在问题来了,这个数字如果搞出来了,怎么让它消失掉呢?
   其实我们只需要在任何时候设置 UIApplication.applicationIconBadgeNumber 属性为0,就可以让这个数字消失掉。
   一般我们会选择在应用启动的时候(application:didFinishLaunchingWithOptions:方法中),或者干脆一点,在应用每次被切换到前台的时候(applicationWillEnterForeground:方法中),调用这一行代码,即可立刻清除掉Badge数字了。

AVOS Cloud平台发出去的通知格式究竟是什么样子的

   对于每一条推送消息,都包含一个payload,通常是组成了一个JSON的Dictionary,这其中必不可少的是aps属性,它对应的value也是一个Dictionary,包含下面一些内容:

  • alert消息(文本或Dictionary)
  • 应用图标上的红色数字
  • 播放的声音文件名
       在由推送激活的app打开事件中,application:didFinishLaunchingWithOptions:的options参数就是这个大的Dictionary对象。

    {
        aps =     {
            alert = "hello, everyone";
            badge = 2;
            sound = default;
        };
    }

       这里要注意的时alert部分,它的值可以是一个String(文本消息),也可以是一个JSON的Dictionary。当它是文本消息的时候,系统就会把这些文字显示到一个alertview中;若它也是由一个JSON Dictionary组成的话,其格式如下:

  • body
  • action-loc-key
  • loc-key
  • loc-args
  • launch-image
       body部分就是alertView中将要展现出来的文本消息,loc-属性主要是用来实现本地化消息,launch-image只是app主bundle里的一个图片文件的名称,一般来说我们不指定这一属性。

    如何显示本地化的消息

       有两种办法可以实现推送消息的本地化:
       1.在推送的payload中使用loc-key和loc-args来指定进行本地化,这样Provider方只需要按照统一的格式来发送即可,消息的解析和组装则由客户端来完成。
       2.如果推送的payload里面不包含loc-key/loc-args信息,那么Provider方就需要自己做本地化处理,然后给不同的device发送不同的消息,为了做到这一点,还需要app在上传device token的时候也把用户的语言设置信息传回来。
    目前,因为AVOS Cloud主要就是瞄准中国大陆市场和海外中文用户,所以我们在推送上还不提供多语言支持。

    应用该怎么响应推送消息

       上面说的处理流程,只能简单展示一下远程消息,激活用户让他们重新回到app中来。但是有时候,我们希望带给用户更好的使用体验,譬如如果我们告诉用户:张三刚刚评论了你的照片。这时候用户如果点击action按钮进入app,我们是展示具体的评论页面为好,还是展示通常的启动页面然后让用户自己去找张三的评论好?我想负责任的开发者都会选择前者:)

       要做到灵活响应不同类型的通知消息,我们需要在通知的payload中增加更多信息,而不能仅仅只有alert出来的文字信息。对于AVOS Cloud消息推送平台来讲,就需要开发者使用更高级功能的JSON格式。譬如我们发送这样的json字符串:
    {"action":{"type":4},"alert":"hello, everyone”} 最终在app内会收到这样的UserInfo Dictionary:

    {
        action =     {
            type = 4;
        };
        aps =     {
            alert = "hello, everyone";
            badge = 4;
        };
    }
       “hello, everyone”会显示到alertView中,但是整个Dictionary会通过launchOptions传递给application: didFinishLaunchingWithOptions: 方法,这样我们在程序里面就可以对不同的消息实现不同的跳转了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值