在Watch上我发送了一个像这样的AppMessage
DictionaryIterator *iter;
app_message_outbox_begin(&iter);
Tuplet value = TupletInteger(MESSAGE_TYPE, MESSAGETYPE_REFRESH);
dict_write_tuplet(iter, &value);
app_message_outbox_send();
我按照the tutorial中的说明为我的应用设置了背景模式和协议。 在iOS中,我设置了这样的监听器:
[PBPebbleCentral defaultCentral].delegate = self;
self.watch = [PBPebbleCentral defaultCentral].lastConnectedWatch;
NSLog(@"Pebble name: %@", _watch.name);
NSLog(@"Pebble serial number: %@", _watch.serialNumber);
[_watch appMessagesAddReceiveUpdateHandler:^BOOL(PBWatch *watch, NSDictionary *update) {
NSLog(@"Update received!");
return YES;
}];
[_watch appMessagesAddReceiveAllUpdatesHandler:^BOOL(PBWatch *watch, NSUUID *uuid, NSDictionary *update) {
NSLog(@"AllUpdate received!");
return YES;
}];
[_watch appMessagesAddAppLifecycleUpdateHandler:^(PBWatch *watch, NSUUID *uuid, PBAppState newAppState) {
NSLog(@"AppLifecycleUpdate received!");
}];
我已经从手机发送消息到手表了。这样它的工作原理。但是电话上传入消息的听众不会被叫到。
在时钟上我得到APP_MSG_SEND_TIMEOUT
作为错误代码。我错了什么?
答案 0 :(得分:1)
你的手表应用程序中有src / js / pebble-js-app.js吗?我有同样的问题,当我删除这个生成的文件时,它开始工作。
答案 1 :(得分:0)
检查以确保您使用
appMessagesAddReceiveUpdateHandler:withUUID:
而不是
appMessagesAddReceiveUpdateHandler:
答案 2 :(得分:0)
注意放置听众的位置。例如,如果您使用的是WeatherDemo应用程序(由Pebble提供),则应在设置应用程序UUID后执行此操作。
// Test if the Pebble's firmware supports AppMessages / Weather:
[watch appMessagesGetIsSupported:^(PBWatch *watch, BOOL isAppMessagesSupported) {
if (isAppMessagesSupported) {
...
[_targetWatch appMessagesAddReceiveUpdateHandler:^BOOL(PBWatch *watch, NSDictionary *update) {
NSLog(@"Received message: %@", update);
return YES;
}];
} else {
....
要注意的另一件事是不要把它放在下面
- (void)pebbleCentral:(PBPebbleCentral*)central watchDidConnect:(PBWatch*)watch isNew:(BOOL)isNew
因为如果设备已经连接,则不会调用此函数。