首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以使用Pebble.js和CloudPebble显示设置页面并与电话进行通信?

是否可以使用Pebble.js和CloudPebble显示设置页面并与电话进行通信?
EN

Stack Overflow用户
提问于 2015-05-31 15:33:32
回答 2查看 144关注 0票数 1

是否有可能在手机上获得用户的输入并对其做一些操作,然后仅使用Pebble.js和CloudPebble将一些结果显示在鹅卵石手表上?

在这种情况下,我想我需要PebbleKit JS或PebbleKit Android/iOS来在手机和手表之间进行通信。对吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-31 20:54:22

Pebble.js是使用PebbleKit JS构建的,因此您可以使用PebbleKit JS完成的任何操作都可以在Pebble.js中完成,包括设置页面。

票数 1
EN

Stack Overflow用户

发布于 2015-06-30 15:01:54

要使用CloudPebble,您必须对配置页面进行一些更改。首先,您将在网络上托管页面,就像使用常规应用程序一样。但是,对于Pebble.js和CloudPebble测试,您需要使用从CloudPebble传递给您的return_to查询字符串值来将配置数据发送回模拟器。

下面是一个示例(在顶部的脚本部分的配置网页上)

代码语言:javascript
复制
function getQuerystring(key, default_) {
  if (default_ == null) default_ = "";
  key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
  var regex = new RegExp("[\\?&]" + key + "=([^&#]*)");
  var qs = regex.exec(window.location.href);
  if (qs == null)
    return default_;
  else
    return qs[1];
}

// set this value from the "options" query string value.
// This is the value of the options that you'll receive from your app
var optionsString = getQuerystring("options", "{username:''}");
var options = JSON.parse(optionsString);

// get the return to value from query string. Set it to blank if it's not there
var returnTo = getQuerystring("return_to","");

function sendConfigData() {

    var options = { username: txtUsername.value };
    if (returnTo != '') {
        document.location = returnTo + JSON.stringify(options);
    }
    else {
        document.location = 'pebblejs://close#' + encodeURIComponent(JSON.stringify(options));
    }
}

function cancel() {
    if (returnTo != '') {
        document.location = returnTo;
    }
    else {
        document.location = "pebblejs://close";
    }
}

然后,在表单中设置submit按钮以调用适当的函数。

代码语言:javascript
复制
<input type="text" id="txtUsername" placeholder="User Name" />
<input type="button" value="Save" onclick="sendConfigData()" />
<input type="button" value="Cancel" onclick="cancel()" />

在配置web表单的底部,放置以下JavaScript:

代码语言:javascript
复制
txtUsername.value = options.username;

在app.js文件中的CloudPebble中,下面是如何调用配置屏幕:

代码语言:javascript
复制
var options = { username : 'default' };
var OPTIONS_SETTING_KEY = 0;

function showConfiguration(){
  console.log("showing configuration");
  Pebble.openURL('http://yourwebsite.com/PebbleConfig?options=' + encodeURIComponent(JSON.stringify(options)));
}

Pebble.addEventListener("showConfiguration", function() {
  showConfiguration();
});

Pebble.addEventListener("webviewclosed", function(e) {
  console.log("configuration closed");
  // webview closed
  //Using primitive JSON validity and non-empty check
  console.log('response: ' + e.response);
  if (e.response.charAt(0) == "{" && e.response.slice(-1) == "}" && e.response.length > 5) {
    options = JSON.parse(decodeURIComponent(e.response));
    // Write a key with associated value
    localStorage.setItem(OPTIONS_SETTING_KEY, JSON.stringify(options));

    console.log("Options = " + JSON.stringify(options));
  } else {
    console.log("Cancelled");
  }
});

var optionString = localStorage.getItem(OPTIONS_SETTING_KEY);
if(optionString === null || optionString === ''){
  console.log('Using default username');
}
else {
  options = JSON.parse(optionString);
  console.log('Set username: ' + options.username);
}

现在,您可以在整个应用程序中使用您的选项。当您将此应用程序部署到应用程序商店生产时,网页将检测到return_to查询字符串丢失,并使用适当的关闭机制(document.location = 'pebblejs://close#' + encodeURIComponent(JSON.stringify(options));)并将配置发送回您的手表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30559207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档