我是firebase的新手,我正在学习它,就像一个学习走路的小孩.到目前为止,我已经设法使用firebase框架为我的手机生成的令牌向我自己的手机发送消息.现在这里变得棘手(在我看来).onTokenRefresh()在FirebaseInstanceIdService扩展服务中调用了一个方法.因为它被称为刷新,然后我假设它会改变.我想知道何时创建此令牌以及何时更改它?
如果它发生变化,假设我发送的消息带有令牌"A"的设备,该设备现在处于脱机状态,因此它将排队.现在,当设备上线时,它会将令牌"刷新"为"B".现在,由于消息应该传递给令牌"A",因此永远不会传递消息.我该如何处理这种情况?
我想尝试使用谷歌的FCM消息服务发送消息,正如文档所说,http请求应该是这样的:
https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA
{ "data": {
"score": "5x1",
"time": "15:10"
},
"to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我不知道Authorization应该是什么价值,当我删除这个标题并发出请求时,我得到错误401:Unauthorized.我认为这必须是某种api密钥或者其他东西,但我在我的项目中找不到它.谁能帮我?
PS:出于测试目的,我目前正在使用此站点向我的设备发送消息
android push-notification firebase google-cloud-messaging firebase-cloud-messaging
我正在创建一个使用 goolg 的 firebase 作为其推送通知服务的应用程序。我只是使用推送通知服务器,不想使用它的其他服务(例如数据库、身份验证等)。
在我的应用程序中,注册的用户可以拥有多个设备,因此可以拥有多个 firebase 令牌。onRefreshToken调用时出现问题。我应该知道用户正在使用哪个设备并在我的数据库中更新该特定设备的令牌。所以我应该知道每个设备的唯一标识符,该标识符在设备的生命周期中不会改变。
我想知道是否有更好的方法来解决这个问题,如果没有,我对 android 唯一 ID 感到非常困惑。这两个选项Settings.Secure.ANDROID_ID可能有一些问题(所以我不确定我是否应该使用它)并且TelephonyManger.getDeviceId()有时返回 null 并且对于没有 sim 插槽的设备(例如平板电脑)。
那你建议我怎么做?
我正在尝试编写一个简单的chrome扩展来更改DOM中表的值.这里重要的是网页使用ajax命令来构建和更改此表的内容.(首先,没有任何内容然后单击一个链接,并使用ajax请求(没有页面重新加载),将创建一个表,然后通过单击其他链接,将修改此表.
这是我用来监听表格变化的代码:
var target = document.querySelector('#my-table');
var observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
alert('The table has appeared');
});
});
var config = {
attributes: true,
childList: true,
characterData: true,
subtree: true
};
observer.observe(target, config);
observer.disconnect();
Run Code Online (Sandbox Code Playgroud)
问题是,当我按下页面中的一个链接使表格发生变化时,什么都不会发生.当我检查chrome的控制台调试我的工作时,我看到它在页面加载后立即给了我这个错误:
Uncaught NotFoundError:无法在'MutationObserver'上执行'observe':提供的节点为null
我真的迷路了,不知道该怎么办.有人有什么建议吗?ps:这是我的扩展程序的清单文件:
"manifest_version": 2,
"name": "MyExtension",
"description": "Testing the Content Script api",
"version": "1.0",
"content_scripts": [
{
"matches": ["www.myWebsite.com"],
"js": ["script.js"]
}
],
"browser_action": {
"default_icon": "icon.png"
}
}
Run Code Online (Sandbox Code Playgroud) 我对 android 的 google 地图 api 完全陌生,我想知道是否可以将地图显示的区域限制在一个国家/地区。我的意思是我的目标用户仅在我自己的国家/地区,当应用程序逻辑仅在这个国家/地区时,向他们展示整个世界既没有用也没有逻辑。
有任何想法吗?
ps:如果在 google 的 api 中不可能,有没有办法用另一个提供地图服务的源的另一个 api 来做到这一点?
我今天在设计中遇到了一个奇怪的行为。让我先向您展示我的代码,然后再讨论它
*,
*:after,
*::before {
-moz-box-sizing: border-box;
box-sizing: border-box;
}
body,
html {
height: 100%;
padding: 0;
}
#all-content,
#content-outer,
#content-inner {
height: 100%;
position: relative;
}
#content-inner {
overflow-y: scroll;
}
.block {
display: inline-block;
font-size: 0;
background-color: yellow;
width: 50px;
height: 50px;
border: 3px solid black;
}Run Code Online (Sandbox Code Playgroud)
<div id="all-content">
<div id="content-outer">
<div id="content-inner">
<div id="main-field">
<div class="block">text</div>
<div class="block">text</div>
<div class="block">text</div>
<div class="block">text</div>
</div>
</div>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
问题是,在这段代码中,#main-field元素上应用了一个奇怪的顶部填充。有两种方法可以解决此问题。要么对类应用line-height : 50px规则.block,要么将字体大小更改为非零的值。我想知道为什么会发生这种情况,因为我从未遇到过像这种行为这样奇怪的事情。
初始化字符串C#就像这样简单:
string str = Console.Read();
Run Code Online (Sandbox Code Playgroud)
使用此方法,我不需要知道用户输入的字符串的大小.但我在C++中找不到这样的方法.我希望我的字符串被定义为char *input,我不想知道字符串的大小.
我怎样才能实现我的目标?
我想在每次 Activity 进入屏幕时请求用户的位置(我认为这里唯一的选择是 Activity 的onResume()方法),并且我想(并且应该)支持 Android 6 的新运行时权限模型。
我正在使用PermissionDispatcher库,它工作得很好。问题是正如这个问题所暗示的,如果我调用一个在方法中请求权限的函数onResume()并且用户拒绝该权限,它将陷入无限循环。
但我的问题是,由于我想获取用户在活动的每次出现时的位置,除了使用该方法之外,我想不出其他方法onResume()(因此,如果用户拒绝权限,就会陷入无限循环)。
这是我的代码示例:
@NeedsPermission(Manifest.permission.ACCESS_FINE_LOCATION)
void startLocationUpdate() {
mLocationLoadingDialog.show();
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
}
@OnShowRationale(Manifest.permission.ACCESS_FINE_LOCATION)
void showRationalForFineLocation(final PermissionRequest request) {
new AlertDialog.Builder(this)
.setMessage("this app needs your permission to get your location")
.setPositiveButton("ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
request.proceed();
}
})
.setNegativeButton("no way", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
request.cancel();
exitApp();
}
})
.setCancelable(false) …Run Code Online (Sandbox Code Playgroud) android ×5
firebase ×3
html ×2
java ×2
c++ ×1
css ×1
font-size ×1
google-maps ×1
javascript ×1
visual-c++ ×1