Apple Watch 通知负载

Posted

技术标签:

【中文标题】Apple Watch 通知负载【英文标题】:Apple Watch Notification Payload 【发布时间】:2015-03-31 04:03:59 【问题描述】:

我想给Apple Watch的通知添加值(当前屏幕使用硬编码数据):

我要为这些字段添加值:“金额”、“时间”和“时间”。如何添加从 PushNotificationPayload.apns 文件中获取此值并将其显示在通知中?

这是 PushNotificationPayload.apns 文件:


"aps": 
    "alert": 
        "body": "New Transaction\n\n",
        "title": "Optional title"
    ,
    "category": "newTransactionCategory"
,

"WatchKit Simulator Actions": [
                               
                               "title": "Details",
                               "identifier": "transactionDetailsButtonAction"
                               
                               ],

"customKey": "Use this file to define a testing payload for your notifications. The aps dictionary specifies the category, alert text and title. The WatchKit Simulator Actions array can provide info for one or more action buttons in addition to the standard Dismiss button. Any other top level keys are custom payload. If you have multiple such JSON files in your project, you'll be able to select them when choosing to debug the notification interface of your Watch App."

【问题讨论】:

【参考方案1】:

这些是步骤,

创建一个新类,它是WKUserNotificationInterfaceController 的子类。

从情节提要中,选择您的动态界面场景以进行通知(如果您尚未创建它,请在您的静态场景的属性检查器中启用“具有动态界面”)并在身份检查器中设置上面创建的自定义类。

现在修改你的 PushNotificationPayload.apns 文件内容如下,


    "aps": 
        "alert": 
            "body": "New Transaction\n\n",
            "title": "Optional title"
        ,
        "category": "newTransactionCategory"
    ,

    "WatchKit Simulator Actions": [
                                   
                                   "title": "Details",
                                   "identifier": "transactionDetailsButtonAction"
                                   
                                   ],

    "Amount": "USD 20",
    "At": "Mc Donalds",
    "When": "Today",

当收到远程通知时,将在您的自定义通知接口类中调用此方法,您将收到字典“remoteNotification”中的自定义键,您需要使用该键在此处设置标签文本。

-(void)didReceiveRemoteNotification:(NSDictionary *)remoteNotification withCompletion:(void (^)(WKUserNotificationInterfaceType))completionHandler 
    NSLog(@"remoteNotification Dictionary %@",remoteNotification);

    completionHandler(WKUserNotificationInterfaceTypeCustom);

最后是调试:

    在顶部选择您的目标并选择编辑方案

    点击底部的重复方案并提供您的自定义名称,例如“NOTIFICATION-Mywatchkitapp”等...

    然后,选择 WatchKit Interface to Dynamic Notification、Notification Payload to your PushNotificationPayload.apns 文件并为此目标运行。

【讨论】:

嗨@DH14-S L,我想试试你的解决方案。但是,目前我在运行自定义长视图通知时遇到问题。我在这里发布了错误:***.com/questions/29341051/… 确保 Storyboard 和 Payload 中的 'category' 键是正确的。然后检查您是否没有在“willActivate”上编写任何长时间运行的代码。 不幸的是,它仍然没有解决错误。 :( 即使创建一个新项目并设置一个启用了自定义通知的新 watchkit 目标也会给出该错误......这太令人沮丧了...... 问题。我对测试 apns 的各种类别感到满意。但我很好奇来自服务器的真实通知将如何传递。即,如果服务器是 C++(或其他)服务器,从服务器获取通知到实际设备的机制是什么?只是带有我们开发证书的 Apple 服务器?我们如何通过 TestFlight(或其他方法)测试真实世界的通知? 我的.apns文件是这样设置的,但是在watch kit通知接口方法didReceive(notification:)中,通知不包含AmountAtWhen。有什么建议吗?

以上是关于Apple Watch 通知负载的主要内容,如果未能解决你的问题,请参考以下文章

Apple Watch 通知 - 点击通知

如何在没有 Apple Watch 应用的情况下向 Apple Watch 发送通知

触发 Apple Watch 通知

Apple Watch 中的本地通知

applewatch打开后台快捷

如何在 Watch Simulator 中测试 Apple Watch 可操作通知?