我在当前的Watch App中实现了动态和静态通知。如果动态通知中有任何操作,我甚至可以使用- (void)handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)remoteNotification
方法接收事件。
我在动态通知界面的情况下使用以下方法设置UI。但是,静态的情况并非如此。
- (void)didReceiveRemoteNotification:(NSDictionary *)remoteNotification withCompletion:(void (^)(WKUserNotificationInterfaceType))completionHandler {
NSLog(@"%@",remoteNotification);
completionHandler(WKUserNotificationInterfaceTypeCustom);
}
修改
我在appdelegate中添加了以下代码以注册通知。
UIUserNotificationType userNotificationTypes = (UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound);
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:userNotificationTypes categories:nil];
[application registerUserNotificationSettings:settings];
[application registerForRemoteNotifications];
答案 0 :(得分:1)
我会针对您的Watch App的扩展代表调查以下委托方法,以回答您的两个问题:
- (void)handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)remoteNotification
周长:
NSString
)如果应用程序启动时没有点击其中一个通知按钮,或等于您设置为通知操作按钮的标识符,如果用户通过点击一个启动应用程序通知的动作按钮。回答问题1: 当用户启动应用程序时,如果已实施,则会调用此方法,并允许您根据用户的选择重新配置应用程序。
回答问题2:
有效负载具有Apple Notification Payload字典的传统结构。 aps
密钥包含alert
信息和badge
信息。然后您的自定义数据将附加到整个字典。要访问它,如果使用密钥“testKey”配置有效负载字典,则可以使用remoteNotification[@"testKey"]
访问它。
<强>更新强>
根据Apple的说法,静态通知“不得包含控件,表格,地图或其他交互元素”,因为如果无法及时启动交互式通知,则只能将其用作后备。来源:Apple watchOS Developer Library。
来源和/或其他资源:
Apple Developer: WK InterfaceController Class Reference