小编Era*_*ran的帖子

带登录系统的GCM

我目前正在使用登录系统将GCM实现到应用程序中.我想根据登录到应用程序的用户(一个设备,多个用户)向应用程序发送通知.我经历了这些过程.

  1. 以"用户A"身份登录
  2. 注册GCM(获取注册ID)发送到服务器端
  3. 向用户A发出广播通知
  4. 注销取消注册
  5. 以"用户B"身份登录
  6. 注册GCM(获取注册ID - 偶尔返回与用户A相同的注册ID,有时返回不同的注册ID-)
  7. 向用户A发送GCM推送通知(即使用户取消注册)

我不确定如何让应用程序识别登录到设备的用户并仅将通知推送给该特定用户.而不是用户B登录并获得用户A的通知.任何评论和答案将非常感谢!如果您需要检查我项目中的特定代码,请告诉我们.

android push-notification google-cloud-messaging

9
推荐指数
1
解决办法
3263
查看次数

用户通知 - 如何从GCM恢复丢失的notification_id?

notification_key按照这里描述生成s .

假设由于某些错误我无法存储它,所以我尝试重新注册.
这次我收到400错误的消息"notification_key already exists".
这看起来很奇怪,特别是与将设备注册到GCM相比,您可以根据需要注册多次,并始终获得状态为200的相同注册ID.
现在我无法再次注册,我也无法取消注册,因为我没有notification_id.

有没有办法notification_key从GCM 获得以前生成的?
或者是用不同的方式再次注册的唯一方法notification_key_name

android push-notification android-notifications google-cloud-messaging

9
推荐指数
2
解决办法
1343
查看次数

使用forEach迭代varArgs

我可以在varArgs上使用forEach()stream()吗?

   protected void getSomeIds (List<String>... varArgs) {
     for(List lst:varArgs) {
     System.out.println("This works");
    }
   //Following does not compile 
    varArgs.forEach();
   // nor 
    varArgs.stream();
   }
Run Code Online (Sandbox Code Playgroud)

java java-8

9
推荐指数
1
解决办法
7195
查看次数

是否可以在java 8中添加日志记录到removeIf?

我使用的是Java 8.

以下代码工作正常:

public void testMethod(List<String> prop1, EmailJson randomModel) {
    prop1.stream().forEach(s -> randomModel.getSomeList()
            .removeIf(model -> model.getSomeProp().equalsIgnoreCase(s)));
}
Run Code Online (Sandbox Code Playgroud)

如果条件为真,是否可以记录消息?

我正在寻找类似的东西:

public void testMethod(List<String> prop1, EmailJson randomModel) {
    prop1.stream().forEach(s -> randomModel.getSomeList()
            .removeIf(model -> model.getSomeProp().equalsIgnoreCase(s))
                    - > if this is true then log some action);
}
Run Code Online (Sandbox Code Playgroud)

java collections java-8 java-stream

9
推荐指数
2
解决办法
697
查看次数

规范注册ID和消息ID格式

  1. 我有理解Canonical Registration Id并将其归还给Google的问题.我故意注册了我的Android应用程序两次(进行测试Canonical Registration Id),但是当我尝试向两者发送消息时,Registration Ids我没有得到谷歌的回报Canonical Registration Id.

  2. 另外,我想知道Google返回的消息ID的格式是什么意思.我可以在日志中看到它似乎由三部分组成<something>:<something2>%<something3>.知道他们的意思吗?第三部分是否识别设备?

    [INFO com.bipper.filters.PushUpdatesFilter] [messageId = 0:1349819220154718%921c249a6e2555b5] [INFO com.bipper.filters.PushUpdatesFilter] [messageId = 0:1349819220242456%921c249a6e2555b5]

android push-notification google-cloud-messaging

8
推荐指数
1
解决办法
7960
查看次数

iterable.forEach()和iterable.stream().forEach()之间的区别

看起来我可以list.forEach(a -> a.stuff())直接在我的收藏中调用,而不是list.stream().forEach(a -> a.stuff()).我何时会使用另一个(parallelStream()旁边......)?

java lambda java-8 java-stream

8
推荐指数
1
解决办法
1934
查看次数

推断类型不符合上限

我正在做一个项目,我必须否定PPM文件(图像)的像素.

我实现了我的否定函数:

public PPMImage negate() 
{
    RGB[] negated = new RGB[pixels.length];
    System.arraycopy(pixels, 0, negated, 0, pixels.length);
    RGB[] negatedArr = Arrays.stream(negated).parallel().map(rgb -> rgb.neg(maxColorVal)).toArray(size -> new RGB[size]);
    return new PPMImage(width, height, maxColorVal, negatedArr);
}
Run Code Online (Sandbox Code Playgroud)

neg(maxColorVal)函数被定义为这样的:

public void neg(int maxColorVal) 
{
    R = maxColorVal - R;
    G = maxColorVal - G;
    B = maxColorVal - B;
}
Run Code Online (Sandbox Code Playgroud)

当我编译代码时,我收到以下错误:

error: incompatible types: inferred type does not conform to upper bound(s)
RGB[] negatedArr = Arrays.stream(negated).parallel().map(rgb -> rgb.neg(maxColorVal)).toArray(size -> new RGB[size]);

inferred: void
upper …
Run Code Online (Sandbox Code Playgroud)

java java-8

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

为什么我的TreeMap没有排序?

我使用了TreeMap键是a的位置String,值是类型Integer.当我输出Map对象时,它不按排序顺序打印.

这是我使用的代码:

TreeMap<String, Integer> m = new TreeMap<String, Integer>();
m.put("Hello", 1);
m.put("world", 2);
m.put("Zertt", 5);
m.put("Hello", 1);
m.put("world", 2);
System.out.println("map : " + m);
Run Code Online (Sandbox Code Playgroud)

我希望输出像这样排序:

map:{Hello = 1,world = 2,Zertt = 5}

但相反,我得到了这个:

map:{Hello = 1,Zertt = 5,world = 2}

java treemap

8
推荐指数
1
解决办法
3122
查看次数

使用lambda表达式由值类的成员搜索TreeMap

我有一个与Java 8中的lambda表达式相关的问题.

考虑以下Message课程:

  public class Message implements MessageBase 
  {  
      private String id;
      private String message;
      private String author;
      private Long timestamp;

      public Message()
      {
          this.id=null;
          this.message=null;
          this.author=null;
          this.timestamp= null;
      }

      public Message(String id, String message,String author,Long timestamp)
      {
          this.id=id;
          this.message=message;
          this.author=author;
          this.timestamp= timestamp;
      }

      public String getId() 
      {
          return id;
      }

      public void setId(String id) 
      {
          this.id = id;
      }

      public String getMessage() 
      {
          return message;
      }

      public void setMessage(String message) 
      {
          this.message = message;
      }

      public String …
Run Code Online (Sandbox Code Playgroud)

java collections lambda java-8 java-stream

8
推荐指数
1
解决办法
299
查看次数

如何在java 8中获取findFirst()的索引?

我有以下代码:

ArrayList <String> entries = new ArrayList <String>();

entries.add("0");
entries.add("1");
entries.add("2");
entries.add("3");

String firstNotHiddenItem = entries.stream()
                    .filter(e -> e.equals("2"))
                    .findFirst()
                    .get();
Run Code Online (Sandbox Code Playgroud)

我需要知道第一个返回元素的索引是什么,因为我需要在条目内编辑它ArrayList.据我所知,get()返回元素的值,而不是引用.我应该使用

int indexOf(Object o)
Run Code Online (Sandbox Code Playgroud)

代替?

java java-8 java-stream

8
推荐指数
2
解决办法
5237
查看次数