iOS推送通知自定义格式

时间:2013-04-05 12:57:33

标签: ios push-notification

我是所有iOS推送通知域的新用户。我已经尝试使用以下代码进行基本推送通知,它完美无缺。我正在使用“使用JdSoft.Apple.Apns.Notifications;”实现这一目标。这是代码:

Notification alertNotification = new Notification(testDeviceToken);

alertNotification.Payload.Alert.Body = "Hello World";           
alertNotification.Payload.Sound = "default";
alertNotification.Payload.Badge = 1;

这将以下列结构将输出提供给iPhone:

{
    aps =     {
        alert = "Hello World";
        badge = 1;
        sound = default;
    };
}

我现在需要添加自定义标签,如下所示:

{
    "aps":   {
        "alert": "Hello World",
        "sound": "default",
    "Person":     {
            "Address": "this is a test address",
            "Name": "First Name",
            "Number": "023232323233"
          
    }  
  }
}

我发现很难在“aps”中获得“人物”。我还知道您可以使用以下代码添加自定义属性:

alertNotification.Payload.AddCustom(“Person”,Newtonsoft.Json.JsonConvert.SerializeObject(stat));

但是上面的代码没有添加“aps”标签。请告诉我如何实现?

3 个答案:

答案 0 :(得分:38)

不允许在 aps 标记内放置自定义标记。以下是有关文件的说明:

  

提供者可以在Apple保留的aps命名空间之外指定自定义有效负载值。自定义值必须使用JSON结构化和原始类型:字典(对象),数组,字符串,数字和布尔值。

因此,在您的情况下,您应该执行以下操作:

{
    "aps": {
        "alert": "Hello World",
        "sound": "default"
    },
    "Person": {
        "Address": "this is a test address",
        "Name": "First Name",
        "Number": "023232323233"
    }
}

因此,您可以通过在主JSON中查找它的键来读取自定义有效内容,而不是在“aps”中:

NSLog(@"%@",notification['Person']['Address']);

以上将输出:

  

这是一个测试地址

您可以找到有关自定义有效内容的更多信息,以及Apple docs中的一些示例。

此致 赫里斯托斯

答案 1 :(得分:2)

您可以添加标题字幕正文和许多其他键作为

{
  "aps": {
    "alert": {
      "title": "Hey!? Checkout my custom notification",
      "subtitle": "Custom notification subtitle",
      "body": "Description of custom notification"
    },
    "sound": "default",
    "category": "CustomPush",
    "badge": 1,
    "mutable-content": 1
  },
  "Employee": {
    "Name": "John Doe",
    "Designation": "Manager"
  }
} 

Employee 是自定义有效负载,您可以在其中根据需要设置自己的数据

答案 2 :(得分:0)

我正在使用Push Sharp库。

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

    super.onViewCreated(view, savedInstanceState)
    MaskedTextChangedListener.installOn(
        binding.editCpf, // insted of simply edit_cpf
        "[000].[000].[000]-[00]",
        object : MaskedTextChangedListener.ValueListener {
            override fun onTextChanged(maskFilled: Boolean, extractedValue: String, formattedValue: String) {
                Log.d("TAG", extractedValue)
                Log.d("TAG", maskFilled.toString())
            }
        }
    )

}