小编Roo*_*oox的帖子

ionic 2 - 错误无法在Android Studio中找到已安装的Gradle版本

我创建了离子2项目并添加诊断cordova插件,如下所示:

ionic plugin add cordova.plugins.diagnostic

npm install --save @ionic-native/diagnostic
Run Code Online (Sandbox Code Playgroud)

并像这样添加android平台:

ionic platform add android@latest
Run Code Online (Sandbox Code Playgroud)

但是当使用ionic build android控制台构建时给出了这个错误:

Error: Could not find an installed version of Gradle either in Android Studio,
or on your system to install the gradle wrapper. Please include gradle 
in your path, or install Android Studio
Run Code Online (Sandbox Code Playgroud)

我尝试下载manualy gradle.3.3-all.zip并在platform/android/cordova/lib/builders/GradleBuilder.js中更改此distributionUrl var

 var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'https\\://services.gradle.org/distributions/gradle-3.3-all.zip'
Run Code Online (Sandbox Code Playgroud)

至:

var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'file:///E:/gradles/gradle-3.3-all.zip';
Run Code Online (Sandbox Code Playgroud)

但不工作和控制台给我最后一个错误.

我不知道如何为android @ latest版本添加gradle

cordova android-gradle-plugin cordova-plugins ionic2

128
推荐指数
10
解决办法
21万
查看次数

navigator.serviceWorker.controller在页面刷新之前为空

我使用angularjs并使用服务工作者接收推送通知.但navigator.serviceWorker.controller在页面刷新之前为空,我不知道如何解决这个问题

一些维修工作者的代码:

self.addEventListener('push', pwServiceWorker.pushReceived);
self.addEventListener('notificationclick', pwServiceWorker.notificationClicked);

// refresh caches
self.addEventListener('activate', function (event)
{
    event.waitUntil(
        caches.keys().then(function (cacheNames)
        {
            return Promise.all(
                cacheNames.map(function (cacheName)
                {
                    return caches.delete(cacheName);
                })
            );
        })
    );
});
Run Code Online (Sandbox Code Playgroud)

并在收到推送时向serviceworker中的客户端发送消息:

self.clients.matchAll().then(function(all) {
    console.log(all);
    all.forEach(function(client) {
        client.postMessage(data);
    });
});
Run Code Online (Sandbox Code Playgroud)

在mainController.js中给出如下消息:

 if (!navigator.serviceWorker || !navigator.serviceWorker.register) {
        console.log("This browser doesn't support service workers");
        return;
    }

    // Listen to messages from service workers.
    navigator.serviceWorker.addEventListener('message', function(event) {
        console.log("Got reply from service worker: " + event.data);
    });

    // Are we being controlled?
    if (navigator.serviceWorker.controller) {
        // …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs service-worker

10
推荐指数
1
解决办法
5612
查看次数

ionic 2 - inappbrowser"browser.on(...).subscribe不是函数"错误

我按照http://ionicframework.com/docs/native/in-app-browser/文档使用inappbrowser并尝试以下步骤:

1-安装

ionic cordova plugin add cordova-plugin-inappbrowser 

 npm install --save @ionic-native/in-app-browser
Run Code Online (Sandbox Code Playgroud)

2 - 将此插件添加到app.module.ts提供程序

3 - 添加到构造函数:

constructor(private iab: InAppBrowser) { }
Run Code Online (Sandbox Code Playgroud)

4-并在启动方法中使用它,如下所示:

import { InAppBrowser,InAppBrowserEvent} from '@ionic-native/in-app-browser';

launch(urlc){
      let url = 'https://example.com/';
      let browser = this.iab.create(url, '_blank', 'location=yes');
      browser.on('loadstart').subscribe((ev: InAppBrowserEvent) => {
          this.close_status=true;
      });
  }
Run Code Online (Sandbox Code Playgroud)

但是当服务和调用启动方法时,我看到了这个错误:

Runtime Error
browser.on(...).subscribe is not a function
Run Code Online (Sandbox Code Playgroud)

cordova ionic-framework cordova-plugins ionic2 ionic3

6
推荐指数
2
解决办法
6057
查看次数

angular 4 _ 如何动态更改谷歌地图 api 密钥

我在我的应用程序中使用谷歌地图 API,如下所示:

在 index.html 中使用 api 键导入 url :

<script src="https://maps.googleapis.com/maps/api/js?key=myKey"></script>
Run Code Online (Sandbox Code Playgroud)

并在组件中像这样声明谷歌:

declare let google: any;
Run Code Online (Sandbox Code Playgroud)

并在这样的组件中使用它:

this.map = new google.maps.Map(document.getElementById('googleMap'), this.mapProp);
Run Code Online (Sandbox Code Playgroud)

如何动态更改 index.html 中存在的 API 密钥?

google-maps google-maps-api-3 angular2-services angular angular7

6
推荐指数
1
解决办法
956
查看次数

在 chrome 中获取并显示来自 serviceworker 的推送数据

我使用 pushwoosh 在我的网络应用程序中接收推送通知。一切正常,并在 serviceworker 侦听器中收到推送消息,但我想从 serviceworker 提供推送消息数据并在另一个 js 类中处理它

main.js 像这样:

if ('serviceWorker' in navigator) {
  console.log('Service Worker is supported');
  navigator.serviceWorker.register('sw.js').then(function() {
    return navigator.serviceWorker.ready;
  }).then(function(reg) {
    console.log('Service Worker is ready :^)', reg);
      // TODO
  }).catch(function(error) {
    console.log('Service Worker error :^(', error);
  });
}

// get push message data in main.js and process it
Run Code Online (Sandbox Code Playgroud)

像这样的服务人员:

self.addEventListener('push', function(event) {
  console.log('Push message', event);

  var title = 'Push message';

  event.waitUntil(
    self.registration.showNotification(title, {
      'body': 'The Message',
      'icon': 'images/icon.png'
    }));
});
Run Code Online (Sandbox Code Playgroud)

javascript pushwoosh service-worker

5
推荐指数
1
解决办法
2776
查看次数

React-Native:当应用程序处于后台时更改状态

我创建了一个使用 React Native 的简单应用程序AppState

import React, {Component} from 'react'
import {AppState, Text , View} from 'react-native'


export default  class AppStateExample extends  React.Component {

  constructor(props){
    super(props);
    this.state = {
      name:'not change'
    }
  }

  componentDidMount() {
    AppState.addEventListener('change', this._handleAppStateChange);
  }

  componentWillUnmount() {
    AppState.removeEventListener('change', this._handleAppStateChange);
  }

  _handleAppStateChange = (nextAppState) => {

    if(AppState.currentState=='background'){
      console.log('background mode');
      this.setState({name:'back'});
    }
    if(AppState.currentState =='active'){
      //...
    }
  };


  render() {
    return (
      <View>
        <Text>State Name : {this.state.name}</Text>
      </View>
    );
  }

}
Run Code Online (Sandbox Code Playgroud)

当我尝试将应用程序从前台切换到后台,然后从后台切换到前台时,console.log('background mode');效果很好并且控制台打印'background mode'

不起作用 …

react-native

5
推荐指数
1
解决办法
1万
查看次数