我已经按照 使用Azure通知中心向Android发送推送通知教程 的指导,使用Azure Notification Hub将推送通知功能添加到了我的Android应用程序中。
之前,我曾尝试使用另一个教程,使用Azure Notification Hub的Google云消息传递服务,但是只有当我从Android Studio将应用程序发送到我的设备时,才能收到推送通知。但是,当我构建签名APK并在设备上安装它时,没有推送通知传递。
昨天一整天我都在尝试解决这个问题(禁用ProGuard,尝试不同的API密钥等),今天早上我决定重新开始。那时,我意识到当用户从Cloud Console中单击GCM时,Google现在会将用户引导至Firebase Cloud Messaging。所以,我使用上述教程和Google FCM将推送通知功能添加到了我的应用程序中。
它非常好用...但是,当我创建签名APK并安装它时,而不是从Android Studio将应用程序发送到我的设备时,我无法收到推送通知。Azure显示推送已成功发送,但没有任何传递。
在我的推送处理程序中,我有一个日志记录到控制台,如下所示的onReceive方法。当我从Android Studio运行应用程序时,这个方法被很好地调用,并且推送按预期进行。但是,当我创建签名apk并从中运行时,onReceive方法不会被调用,也没有推送进来。
我的cURL请求看起来像这样,就像教程展示的一样。
之前,我曾尝试使用另一个教程,使用Azure Notification Hub的Google云消息传递服务,但是只有当我从Android Studio将应用程序发送到我的设备时,才能收到推送通知。但是,当我构建签名APK并在设备上安装它时,没有推送通知传递。
昨天一整天我都在尝试解决这个问题(禁用ProGuard,尝试不同的API密钥等),今天早上我决定重新开始。那时,我意识到当用户从Cloud Console中单击GCM时,Google现在会将用户引导至Firebase Cloud Messaging。所以,我使用上述教程和Google FCM将推送通知功能添加到了我的应用程序中。
它非常好用...但是,当我创建签名APK并安装它时,而不是从Android Studio将应用程序发送到我的设备时,我无法收到推送通知。Azure显示推送已成功发送,但没有任何传递。
在我的推送处理程序中,我有一个日志记录到控制台,如下所示的onReceive方法。当我从Android Studio运行应用程序时,这个方法被很好地调用,并且推送按预期进行。但是,当我创建签名apk并从中运行时,onReceive方法不会被调用,也没有推送进来。
@Override
public void onReceive(Context context, Bundle bundle) {
Log.d("TAG","TRIGGERED");
ctx = context;
String nhMessage = bundle.getString("message");
String nhTitle = bundle.containsKey("title") ? bundle.getString("title") : "Title";
String nhBadge = bundle.containsKey("badge") ? bundle.getString("badge") : null ;
sendNotification(nhMessage,nhTitle,nhBadge);
if (Main.isVisible) { Main.mainActivity.ToastNotify(nhMessage); }
}
有人可以帮助我吗?我错过了什么吗?难道是因为我直接安装了APK?必须从Google Play下载吗?除此之外,我不知道还可能是什么原因。
更新
根据Nikita G的建议,我按照使用cURL从命令行发送测试推送的说明进行操作。
我收到的响应如下(看起来像是成功消息),但是我的设备上没有收到推送通知。
{"multicast_id":6722521883082447284,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1473693614087201%06fb35f0f9fd7ecd"}]}
我的cURL请求看起来像这样,就像教程展示的一样。
curl --header "Authorization: key=XXXXXXXXXXXX" --header "Content-Type: application/json" https://android.googleapis.com/gcm/send -d "{\"registration_ids\":[\"fs...Tw:APA...SzXha\"]}"
更新
我刚刚注意到,不仅在使用已签名的APK时会出现此问题。在Android Studio中,如果我使用“生成APK”选项生成APK文件,也会出现此问题。
然后使用位于myappfolder/app/build/output/apk/的app-debug.apk文件安装,但推送通知仍然无法正常工作。只有通过Android Studio中的Run选项向设备发送时才能正常工作。