使用此链接生成用于推送通知的pem文件,但我无法理解以下步骤...
在服务器上安装SSL证书和密钥
您应该在运行提供程序代码的服务器计算机上安装先前获得的SSL分发证书和私有加密密钥,并从中与沙箱或生产版本的APN连接.为此,请完成以下步骤:
打开Keychain Access实用程序,然后单击左窗格中的"我的证书"类别.
找到要安装的证书并公开其内容.您将看到证书和私钥.
选择证书和密钥,选择"文件">"导出项目",然后将其导出为个人信息交换(.p12)文件.
以Ruby和Perl等语言实现的服务器通常能够更好地处理个人信息交换格式的证书.要将证书转换为此格式,请完成以下步骤:
在KeyChain Access中,选择证书并选择"文件">"导出项目".选择"个人信息交换(.p12)"选项,选择保存位置,然后单击"保存".
启动终端应用程序并在提示符后输入以下命令:openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes.
将.pem证书复制到新计算机并将其安装在适当的位置.
ssl-certificate push-notification apple-push-notifications ios
我对Google Cloud Messaging有疑问......
我将GCM发送给Google以获取3个注册ID,然后Google回复说已成功发送了2个注册ID而没有注册ID,因为注册ID错误!
但它没有告诉我哪个注册ID尚未发送...
现在我的问题是:如何解析Google GCM响应以获取尚未发送的注册ID?谷歌是否有API或其他东西,以便我可以给它"multicat_id",它告诉我哪个注册ID有问题?
任何帮助都会非常感激,我只是很困惑:)
我有一个发送GCM推送通知的服务器应用程序.每发送1000个收件人都会返回一条消息,告诉我每个注册ID的状态.有些人会有错误代码.是否有一个来自Google的文档告诉我我应该如何处理这些代码以及所有可能的错误代码是什么?我的Google foo没有发现任何事情.
我怎么能展平Stream的Map(同类型)s到一个Map用Java 8?
Map<String, Long> toMap(Stream<Map<String, Long>> stream) {
return stream. ???
}
Run Code Online (Sandbox Code Playgroud) 此问题最初是指Google Cloud Messaging(GCM),但现在它也适用于取代GCM的新Firebase云消息传递(FCM).
我想知道如何在包含"通知"字典时计算GCM有效负载的大小.
我一直在尝试针对Android的Google Cloud Messaging服务.文档的某些部分说您可以发送最多4KB的数据,并在此处说"通知消息最多可以有2kb的负载".
做一些测试我可以发送带有4KB数据的"数据"有效载荷的消息,服务器接受它们没有按预期的错误.
但是,使用"通知"有效负载我发现我可以发送超过2KB数据的消息,并且服务器没有返回错误.我预计这样的消息会太大了.
我发现"通知"有效负载与"数据"有效负载共享允许的4KB,但不是以相同的方式.在"数据"有效负载中,您可以通过添加键和值的大小来计算大小."通知"有效负载占用的空间大于密钥大小和包含的值.
当包含"通知"字典时,如何预先计算有效载荷的大小?
在Java 8中是否可以编写如下内容:
List<A> aList = getAList();
List<B> bList = new ArrayList<>();
for(A a : aList) {
bList.add(a.getB());
}
Run Code Online (Sandbox Code Playgroud)
我认为它应该是以下几个方面的组合:
aList.forEach((b -> a.getB());
Run Code Online (Sandbox Code Playgroud)
要么
aList.forEach(bList::add);
Run Code Online (Sandbox Code Playgroud)
但我不能混合这两个来获得所需的输出.
我在我的项目中包含了AndroidRate库
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
...
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
implementation 'com.android.support:multidex:1.0.2'
implementation 'com.android.support:support-annotations:27.0.2'
implementation 'com.android.support:support-compat:27.0.2'
implementation 'com.android.support:appcompat-v7:27.0.2'
implementation 'com.google.android.gms:play-services-base:11.6.2'
implementation 'com.google.android.gms:play-services-cast:11.6.2'
implementation 'com.google.firebase:firebase-core:11.6.2'
implementation 'com.google.firebase:firebase-crash:11.6.2'
implementation 'com.google.firebase:firebase-appindexing:11.6.2'
implementation 'com.vorlonsoft:androidrate:1.0.7'
debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.4'
releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'
}
Run Code Online (Sandbox Code Playgroud)
对于下面的代码,我得到:
警告:com.MyCompany.MyApp.MyAppClass:找不到引用的类java.lang.invoke.LambdaMetafactory
警告:有两个未解析的类或接口引用.
警告:处理任务java.io.IOException时发生异常:请先纠正上述警告.
错误:任务执行失败':mobile:transformClassesAndResourcesWithProguardForFree_Release'.
作业失败,请参阅日志了解详情
AppRate.with(this)
.setStoreType(StoreType.GOOGLEPLAY)
.setInstallDays((byte)1) // default 10, 0 means install day.
.setLaunchTimes((byte)3) // default 10
.setRemindInterval((byte)1) // default 1
.setShowLaterButton(true) // default true …Run Code Online (Sandbox Code Playgroud) 我正在学习Java 8中的lambda表达式.有人可以向我解释如何将lambda表达式与只有一种方法的抽象类一起使用(如果可能的话)?
例如,这是抽象类:
public abstract class ClassA {
public abstract void action();
}
Run Code Online (Sandbox Code Playgroud)
我有另一个类,它的构造函数中有一个实例ClassA:
public ClassB {
public ClassB(String text, ClassA a){
//Do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
所以我想知道如何写这样的东西:
ClassB b = new ClassB("Example", new ClassA(() -> System.out.println("Hello")));
Run Code Online (Sandbox Code Playgroud)
显然这个语句不起作用,但有没有办法在这里使用lambda表达式?如果有,我做错了什么?
我是一名Web开发人员(PHP).我想使用PHP搜索到Windows Phone 7的推送通知,但结果总是.NET.
请有人可以帮助我.
更新:如何一次发送多个设备?因为延迟时间大约是1秒,所以如果我要推送1000个设备,我可能需要1000秒才能等待.
如果数据库查询返回空,抛出异常的正确方法是什么?我正在尝试使用该.orElseThrow()方法,但它不会编译:
Meeting meeting = meetingRepository.findByMeetingId(meetingId).orElseThrow(new MeetingDoesNotExistException(meetingId));
Run Code Online (Sandbox Code Playgroud)
编译器说:
"他的方法orElseThrow(Supplier)中的Optional类型不适用于参数(MeetingRestController.MeetingDoesNotExistException)
是否可以使用lambda表达式执行此操作?
CrudRepository:
import java.util.Optional;
import org.springframework.data.repository.CrudRepository;
public interface MeetingRepository extends CrudRepository<Meeting, Long>{
Optional<Meeting> findByMeetingId(Long id);
}
Run Code Online (Sandbox Code Playgroud)
例外:
@ResponseStatus(HttpStatus.CONFLICT) // 409
class MeetingDoesNotExistException extends RuntimeException{
public MeetingDoesNotExistException(long meetingId){
super("Meeting " + meetingId + " does not exist.");
}
}
Run Code Online (Sandbox Code Playgroud)