作業中Apple Watch Notifications :-したがって、(オブジェクトLibから)通知インターフェイスにボタンを追加すると、エラーは次のようになります。
ボタンは通知インターフェイスではサポートされていません
PushNotificationPayload.apns
にはWatchKit Simulator Actions
がありますこのように:
"WatchKit Simulator Actions":
[
{
"title": "View",
"identifier": "firstButtonAction"
}
],
シミュレーターはこれを私に示します
今私の質問は、サーバーからView
を送信するときに、このPushNotification
ボタンをどのように処理できるかということです。
aps
ファイルにアクションボタンが含まれている場合、Apple Watch、
指定されたキーを使用して通知ディクショナリでサーバーから送信する方法は?
アクションボタンのBGカラーを変更するには?
aps
ではなくデバイスthe Apple Watch
のActionButton
を含むサンプルSimulator
ファイルを教えてください。
WatchKit Simulator Actions
キーをWatchKit Actions
キーに変更してテストしましたが、アクションボタンが表示されません。
Answerの@vivekDasが示唆しているように、私はaps
を次のように置き換えて確認しました。
"alert" : {
"body" : "Acme message received from Johnny Appleseed",
"action-loc-key" : "VIEW",
"action" : [
{
"id" : "buttonTapped",
"title" : "View"
}
]
}
しかし、Xcodeのシミュレーターはアクションボタンを表示します。
これはデバイスApple Watch
で実行される可能性があると思います、これは...?
これについて私に何を提案しますか。
私はこれに2時間苦労しているので、実際のAPNS Servを介して、本番環境の通知ボタンに対してこれを行う方法です。
1)appDelegateの親アプリでカテゴリに登録します。
- (void)registerSettingsAndCategories {
// Create a mutable set to store the category definitions.
NSMutableSet* categories = [NSMutableSet set];
// Define the actions for a meeting invite notification.
UIMutableUserNotificationAction* acceptAction = [[UIMutableUserNotificationAction alloc] init];
acceptAction.title = NSLocalizedString(@"Repondre", @"Repondre commentaire");
acceptAction.identifier = @"respond";
acceptAction.activationMode = UIUserNotificationActivationModeForeground; //UIUserNotificationActivationModeBackground if no need in foreground.
acceptAction.authenticationRequired = NO;
// Create the category object and add it to the set.
UIMutableUserNotificationCategory* inviteCategory = [[UIMutableUserNotificationCategory alloc] init];
[inviteCategory setActions:@[acceptAction]
forContext:UIUserNotificationActionContextDefault];
inviteCategory.identifier = @"respond";
[categories addObject:inviteCategory];
// Configure other actions and categories and add them to the set...
UIUserNotificationSettings* settings = [UIUserNotificationSettings settingsForTypes:
(UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound)
categories:categories];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
}
2)Apnsサーバーからカテゴリを追加します(私にとっては「応答」)
{"aps":{"alert":"bla","category":"respond","badge":2}}
3)WatchKitExtentionで、データが渡されます:
- (void)handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)remoteNotification{
if ([identifier isEqualToString:@"respond"]) {
//Do stuff Here to handle action...
}
}
4)親アプリのappDelegate:
- (void) application:(UIApplication *)application
handleActionWithIdentifier:(NSString *)identifier
forRemoteNotification:(NSDictionary *)userInfo
completionHandler:(void (^)())completionHandler {
completionHandler();
}
警告!親アプリでもこのアクションを処理する必要があります(通知をパンダウンすると、iPhoneでも応答ボタンが表示されるためです。:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {