尽管Google上有很多结果,但似乎没有人给出答案.我有一个Debian框,我这样做:
# curl https://localhost/api/v1/status --verbose
* About to connect() to localhost port 443 (#0)
* Trying ::1...
* connected
* Connected to localhost (::1) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
* Closing connection #0
curl: (35) error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Run Code Online (Sandbox Code Playgroud)
我无法通过未知协议的事情.我试过-ssl -sslv3,但他们让我无处可去.实际上,-sslv3让我略有不同的结果:
s# curl https://localhost/api/v1/status --verbose -sslv3
* About to connect() to localhost port 443 (#0)
* Trying ::1...
* connected
* …Run Code Online (Sandbox Code Playgroud) 我是Android开发和Java的新手.这是基本设置:我有一个启动画面,AsyncTask用于检查服务器可用性.在这个帖子之后,我在我的活动中做了一个回调.这比做工作更有意义,OnPostExecute()因为我想在不同的活动中重用这个任务.
但是,在我的回调中,我会检查状态是否正常.如果是,它应该启动下一个活动.但是从我的回调的上下文中,我不知道如何获得我的Activity引用,我需要它作为Intent的参数.
这是OnCreate下我的Activity中的代码:
//Check server status
CheckServiceTask t = new CheckServiceTask(new OnTaskCompleted<ShaggyServiceStatus>() {
@Override
public void onTaskCompleted(ShaggyServiceStatus result) {
Log.i(TAG, "Callback. Result: " + result.getStatus());
ProgressBar pb = (ProgressBar) findViewById(R.id.splash_progress);
pb.setVisibility(View.INVISIBLE);
if (result.getStatusCode() == 999){
TextView t = (TextView) findViewById(R.id.splash_status_text);
t.setText(result.getStatus());
return;
}
Intent i = new Intent(getActivity(), LoginActivity.class);
startActivity(i);
finish();
}
});
t.execute();
Run Code Online (Sandbox Code Playgroud)
失败的部分是getActivity().那个电话不可用.使用this抛出错误(我理解,因为我在上下文中OnTaskCompleted).
为了完整性,这是OnTaskCompleted的接口:
public interface OnTaskCompleted<T> {
public void onTaskCompleted(T result);
}
Run Code Online (Sandbox Code Playgroud)
这是CheckServiceTask类: …
我遇到了这个挑战:小提琴.简短的故事是,我希望在z顺序的中间有绿色块,而不必更改HTML.底部为黄色,中间为绿色,顶部为红色.
.parent {
background-color: yellow;
position: absolute;
top: 0;
left: 0;
height: 200px;
width: 200px;
z-index: 1;
}
.child {
background-color: red;
position: relative;
top: 10px;
left: 20px;
height: 50px;
width: 150px;
z-index: 100;
}
.other-guy {
background-color: green;
position: absolute;
top: 40px;
left: 100px;
height: 200px;
width: 200px;
z-index: 50;
}Run Code Online (Sandbox Code Playgroud)
<div class="parent">
Chillin in the background
<div class="child">
I really want to be on top.
</div>
</div>
<div class="other-guy"> I want to be in the middle! …Run Code Online (Sandbox Code Playgroud)我在谷歌或这里找不到任何相关信息.
我有一个div,一些文本和一些HTML如下:
<div id="test-div">
http://<strong>somewebsite.com</strong>/big/long/unfriendly/path/
</div>
Run Code Online (Sandbox Code Playgroud)
我想要做的是<wbr>在每个斜线之后添加一个.(因为该值不会另外包裹并且弄乱了我的桌子).在$('#test-div').html()遗嘱上做一个简单的替换也会弄乱强标签,所以这不是一个选择.
我想$('#test-div').contents()用过滤掉文本部分(递归)会起作用.但是我似乎无法编辑返回的各个位.我希望这会改变http://部分:
$('#test-div').contents().first().text("something");
Run Code Online (Sandbox Code Playgroud)
但它什么都没做.我知道我的导航正确,因为这样的事情:
$('#test-div').contents().first().wrap( "<b></b>" );
Run Code Online (Sandbox Code Playgroud)
确实有效.
为什么我不能改变文本位?(对最初问题更优雅的解决方案也会很棒)
我已将设置文件更改为JS文件,添加var tempSettings =到文件的开头,并将其添加到index.html中.这样它就会加载初始HTML,确保它在app.run运行时就会存在.然后,设置服务获取此tempSettings变量并将其放入服务中.要清理,我删除tempSettings指针.
新设置文件被调用 settings.js
var tempSettings = {
"environment": "development",
[...]
Run Code Online (Sandbox Code Playgroud)
添加到index.html:
<script src="settings.js"></script>
Run Code Online (Sandbox Code Playgroud)
服务:
myApp.service("settings", function(){
var settings = null;
this.initialize = function() {
settings = tempSettings;
tempSettings = undefined;
};
this.get = function() {
return settings;
}
});
Run Code Online (Sandbox Code Playgroud)
由于设置文件是异步加载的,因此有时会发生模块在加载之前尝试使用这些设置.我会告诉你最新的解决方案.我已将设置移动到服务中,这肯定更好.
当我谷歌如何在AngularJS应用程序中存储环境设置时,我遇到了使用Grunt或Gulp的选项(并且可能还有其他选项),但对我来说这个选项似乎更加明显.这意味着可能有充分的理由不使用它.这种存储设置的方式是个坏主意吗?
我在我的应用程序根目录中有一个名为settings.json的文件,它看起来像这样:
{
"settingsFile": true,
"environment": "development",
"logLevel": "debug",
"userApiBase": "http://localhost/covlelogin/web/api/",
"oAuth": {
"google":{
"endpoint": "https://accounts.google.com/o/oauth2/auth",
"clientId": "12345",
"scope": "email profile",
"state": "MyToken123",
"redirectUri": "http://localhost/loginadmin/web/oAuthRedirect",
"responseType": "code",
"approvalPrompt": "force"
}
} …Run Code Online (Sandbox Code Playgroud) 编辑24/11/2016: 我刚从Firebase支持小组收到消息。他们认为这是华硕的问题。我使用的设备是Asus ZenFone 2 Laser。这是他们的回应:
这里的问题是Google无法控制制造商如何自定义其android版本。如果Asus遵循Android准则,则通知应该可以正常工作(就像在其他设备上一样)。
我们发现的一件事是,某些手机将应用置于强制停止状态,这阻止了应用接收通知。
从您的测试结果来看,情况似乎并非如此。但是,华硕还有许多其他方法可以阻止通知正常工作,但是很遗憾,我们无法检查所有通知。
最好联系华硕支持并让我们知道是否有任何新闻。
由于这对我的客户来说是一个低优先级的问题,因此我暂时不做进一步探讨。不幸的是,我没有时间在其他设备上测试相同的问题。如果将来这种情况有所改变,我将相应地更新此问题。到现在为止,我将认为这尚未解决。我想知道其他品牌的手机是否存在相同的问题。
对于华硕用户,有一件事情要考虑:有些省电设置会禁用通知功能。
编辑30/09/2016: 我已经联系Firebase支持有关此问题。他们似乎同意亚瑟·汤普森所说的话:
有趣的是,我的应用似乎并未停止。运行adb shell dumpsys package | grep stopped我的包时返回:
User 0: installed=true hidden=false stopped=false notLaunched=false enabled=0
Run Code Online (Sandbox Code Playgroud)
这表明它尚未停止,仍然应该接收消息(根据非常有帮助的Firebase支持工程师的说法)。但是,该应用程序未收到消息。
编辑27/09/2016:
我已经notification在有效负载中省略了该data对象,而是将信息移到了该对象上。这不能解决问题。我想我对这个问题还不够清楚。问题是,当该应用程序被杀死(从最近退出)时,该服务将不再被调用或接收通知。
原始帖子
有类似的帖子在那里,但没有一个解决这个问题或提供解决方案。
我正在实施FCM以获取通知。(我是相当的FCM新)消息负载是两者的组合notification和data。当应用程序在前台运行时,服务会触发onMessageReceived()。当应用程序在后台运行时(即,我按下主页按钮),onMessageReceived()不会触发(按预期),而只是显示一条通知。我仍然可以在MyFirebaseMessagingService.onCreate()和上看到日志语句onDestroy(),这很棒。
现在,当我按下“最近使用的应用程序”按钮并从列表中刷出该应用程序以将其关闭时,我不再收到任何通知。onCreate()并且onDestroy()不再被称为。没有通知出现。我也希望在这种情况下出现一条通知。
有效负载示例:
{
"to":"token",
"priority":"high",
"notification": {
"body":"hello",
"title":"Message from Mom",
"click_action":"ACTIVITY_MAIN"
},
"data":{
"open":"chat"
}
}
Run Code Online (Sandbox Code Playgroud)
FCM服务:
public …Run Code Online (Sandbox Code Playgroud)