【问题标题】:is it possible to send a push notification without using the alert attribute in a json using iOS?是否可以在不使用 iOS 的 json 中的 alert 属性的情况下发送推送通知?
【发布时间】:2014-04-13 04:54:54
【问题描述】:

我正在尝试发送没有“警报”属性的 json 格式。问题是,当我尝试删除警报属性时,通知不会出现。有什么办法可以处理这个吗?提前致谢

P.S 我尝试过使用动作,但它仍然没有出现(我认为这只有在 android 中才有可能)

【问题讨论】:

  • 请解释否决票

标签: ios json parse-platform


【解决方案1】:

是的,你可以做到。可以在没有警报的情况下发送推送通知。您甚至可以将您的应用程序注册为标记通知,在这种情况下,提供程序服务器甚至无法发送警报或声音。

通知负载

每个推送通知都带有一个有效负载。有效负载指定如何提醒用户注意等待下载到客户端应用程序的数据。通知有效负载允许的最大大小为 256 字节; Apple Push Notification Service 拒绝任何超过此限制的通知。请记住,通知的传递是“尽力而为”,不能保证。

对于每个通知,提供者必须编写一个严格遵守 RFC 4627 的 JSON 字典对象。该字典必须包含另一个由键 aps 标识的字典。 aps 字典包含一个或多个指定以下操作的属性:

向用户显示的警告消息

用于标记应用程序图标的数字

要播放的声音

请注意,它表示一个或多个属性。 alert 属性是可选的。您甚至可以使用空的 aps 字典发送通知(即仅发送自定义属性)。

以下示例显示了一个空的 aps 字典;因为缺少徽章属性,所以应用程序图标上显示的任何当前徽章编号都将被删除。 acme2 自定义属性是一个由两个整数组成的数组。

{

"aps" : {

},

"acme2" : [ 5,  8 ]

}

用户将看到的唯一警报是询问他/她是否允许推送通知的警报。只有在安装后首次启动应用程序时才会显示该警报。

在下面的示例中,您注册到非警报通知(仅限徽章和声音):

注册远程通知

- (void)applicationDidFinishLaunching:(UIApplication *)app {

 // other setup tasks here....

 [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

}



// Delegation methods

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken {

const void *devTokenBytes = [devToken bytes];

self.registered = YES;

[self sendProviderDeviceToken:devTokenBytes]; // custom method

}



- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {

NSLog(@"Error in registration. Error: %@", err);

}

希望这会对你有所帮助。

【讨论】:

  • 非常清楚的信息谢谢。尽管曾经从 json.xml 中取出了“alert”属性。发送到设备的实例将无法在通知中心提示?
  • 欢迎您,请解释您的场景您到底想要什么功能?
  • 其实我已经制定了发送push到android的格式,见下例: { "action": "com.sample.pAction", "header": "My Title", "letter": "My Message" } 但是,我可能无法使用这种格式,因为在 ios 中它可能需要一个“警报”才能在 ios 的下拉通知区域中呈现。
  • 您也可以通过发送带有空字符串的警报属性来做到这一点:{ aps = { "content-available" = 1; “警报”=“”; }; }
  • 也请检查此链接可能会对您有所帮助:stackoverflow.com/questions/19239737/…
猜你喜欢
  • 2018-08-01
  • 2020-06-15
  • 1970-01-01
  • 1970-01-01
  • 2012-05-22
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多