假设我有一Dog
堂课.
在里面我有一个Map<String,String>
和一个值是Breed
.
public class Dog {
String id;
...
public Map<String,String>
}
Run Code Online (Sandbox Code Playgroud)
我想获得Map
的List
S:
HashMap<String, List<Dog>> // breed to a List<Dog>
Run Code Online (Sandbox Code Playgroud)
我宁愿使用Stream
而不是迭代它.
我该怎么做?
我知道很多地方都有这个,但我无法弄清楚这一点.我使用Urban Airship进行推送通知.一切似乎都很好,除了当我的应用程序在后台时 - didReceiveRemoteNotification
没有被调用.它在前台工作 - 我能够正确处理消息.如果从通知中心点击消息,我可以从启动选项获取消息.但是在后台,它发送的消息 - iOS显示警报 - didReceiveRemoteNotification
未被调用.当我点击我的应用程序图标(而不是从通知中心内)时,应用程序会到达前台,我不知道通知存在.有任何想法吗?
我一直在阅读很多关于影响某些人的GCM问题的帖子.似乎在一些设备/路由器/运营商中,通知遭受延迟.我的路由器经历过这个问题:WIFI上的消息有很多延迟,但是当我禁用WIFI并连接到移动网络时,消息就会立即出现.
似乎可以通过Android应用程序完成解决方法.像增加心跳使GCM连接保持活跃等等.
任何人都可以告诉我们我们应该做些什么来避免延误?我们如何通过Android应用程序保持与GCM的连接?代码示例(以及在何处以及如何使用它)将非常有用.
这篇文章解释了这个问题.它说"我们可以通过每两分钟从GCM服务器(这是免费的)ping一直保持连接".我们怎么做?
非常感谢
以下应用似乎可以解决问题.令人惊讶的是,第一个不需要任何许可,第二个是互联网连接,第三个仅适用于root电话:
https://play.google.com/store/apps/details?id=at.pansy.droid.gcmWifiFix
https://play.google.com/store/apps/details?id=com.elotro.pushheartbeat
https://play.google.com/store/apps/details?id=com.andqlimax.pushfixer
android push-notification wifi android-wifi google-cloud-messaging
我正在通过Fiddler测试推送GCM
头:
User-Agent: Fiddler
Authorization: key=AIzaSyAkXfcuLLCZ-5n18wwO6XeJ13g-z9ja
Host: android.googleapis.com
Content-Length: 286
Run Code Online (Sandbox Code Playgroud)
身体:
{"registration_ids":["APA91bHyn8YHcH_vSuOo7_A0PMgF5SU1K0FebOFGKXYTqpN5x4eD0tVBvzQLn749TVcczN5gSjB1wqf5AzYfxFI_qskA1Nzipf-9MfdEom1PI1vkFqKIg9B8vZvPLOLozE7jaRzELuyDzpFRbO3Xh5lT-KDA"],"collapse_key":"8b990f5a-78fc-4bad-b242-ffc740a750fb","data":{"message":"message to device"}}
Run Code Online (Sandbox Code Playgroud)
我有一个错误
Error=MissingRegistration
Run Code Online (Sandbox Code Playgroud)
我的问题在哪里?所有ID都是正确的.
我正在尝试GCM
在我的应用程序中工作(在我们的工作时间更改时或在我们有任何促销活动时通知用户),但Cannot resolve symbol 'GoogleCloudMessaging'
在尝试使用Google Cloud Messaging API时我一直收到错误消息.
我正在使用新发布的Android工作室IDE来编写代码.
这是我的GcmBroadcastReciever.java代码:
import android.R;
import android.app.Activity;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class GcmBroadcastReceiver extends BroadcastReceiver
{
static final String TAG = "GCMDemo";
public static final int NOTIFICATION_ID = 1;
private NotificationManager mNotificationManager;
Context ctx;
GoogleCloudMessaging gcm; // I get the error here
@Override
public void onReceive(Context context, Intent intent) {
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context); //error
ctx = context;
String messageType = …
Run Code Online (Sandbox Code Playgroud) java android push-notification google-cloud-messaging android-studio
请考虑以下代码:
List<Locale> locales = Arrays.asList(
new Locale("en", "US"),
new Locale("ar"),
new Locale("en", "GB")
);
locales.stream().filter(l -> l.getLanguage() == "en");
Run Code Online (Sandbox Code Playgroud)
我如何获得的大小locales
ArrayList
后申请filter
的,因为locales.size()
给我的尺寸前申请filter
?
在Java中是否有办法将函数应用于a的所有元素Stream
而不破坏Stream
链?我知道我可以打电话forEach
,但那个方法会返回一个void
,而不是一个Stream
.
我意识到有一个问题是允许多个服务器使用相同的SSL证书将推送通知发送到同一个应用程序,但我的问题是不同的.
假设单个iOS应用程序的开发人员希望允许多个提供程序向其应用程序发送推送通知,但希望控制哪些提供程序有权将APN发送到他的应用程序(并且能够从任何一个提取者撤消该权限)他们).
如果所有提供商都拥有相同的证书,为了阻止其中一个提供者发送APN,他必须全部阻止它们(通过撤销推送SSL证书,并获得一个新证书).是否有可能从同一个应用程序的Apple多个推送SSL证书?
这样就可以为每个提供商分配一个唯一的证书,这将允许阻止单个提供商而不会阻止其他提供商.
在Apple Provisioning Portal上,似乎没有可能为同一个应用程序和相同的环境(开发/生产)创建多个Push SSL证书,但我想确定是否无法完成.
ssl-certificate push-notification apple-push-notifications ios
我想知道我们一次可以发送给用户的苹果推送通知数量是否有限制?换句话说,我可以使用APNS服务一次发送100,000个推送通知吗?
我遇到了一个奇怪的问题 - 我在我的应用程序中使用GCM已经有很长一段时间了,一切都运行得很好.然而,发布谷歌Play前,我从改变了我的应用程序包的名字com.android.testapp
来com.android.recognition
并在此之后GCM停止工作.起初我得到错误GCM sender id not set on constructor
并通过覆盖修复它getSenderIds(Context context)
,但现在我无法获得注册ID.以下是来自logcat的消息:
我怎样才能解决这个问题?当我切换到新包时,我将清单文件中的所有内容更改为新包:
<receiver
android:name="com.google.android.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.android.recognition" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
那背后的问题是什么?可以重命名应用程序包导致这个还是有另一个原因?
java ×5
android ×4
ios ×3
java-8 ×3
java-stream ×2
android-wifi ×1
arrays ×1
chaining ×1
hashmap ×1
json ×1
lambda ×1
wifi ×1
xamarin.ios ×1