当我尝试更新我的应用程序时 - 在审核过程中出现错误。隐式 PendingIntent 漏洞的修复 - https://support.google.com/faqs/answer/10437428。在我的应用程序中,我正在创建 PendingIntent - 用于 Firebase 推送通知:
内部类 FCMService 扩展了 FirebaseMessagingService
@Override
public void onMessageReceived(@NotNull RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Intent intent = new Intent(this, ApplicationActivity.class);
intent.setAction("com.google.firebase.MESSAGING_EVENT");
intent.setPackage(getApplicationContext().getPackageName());
Map<String, String> data = remoteMessage.getData();
for (Map.Entry<String, String> entry : data.entrySet()) {
String value = entry.getValue();
String key = entry.getKey();
if (key.equals(ApplicationActivity.LINK_URL) ||
key.equals(ApplicationActivity.FLOCKTORY_LINK_URL)) {
intent.putExtra(ApplicationActivity.FLOCKTORY_LINK_URL, value);
if (remoteMessage.getNotification() != null && remoteMessage.getNotification().getTitle() != null) {
intent.putExtra(ApplicationActivity.HMS_PUSH_TITLE, remoteMessage.getNotification().getTitle());
}
}
}
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, …Run Code Online (Sandbox Code Playgroud) java android google-play huawei-mobile-services huawei-push-notification
我收到“推送令牌失败,com.huawei.hms.common.ApiException:6003:证书指纹错误”。我不知道这里发生了什么事。
huawei-mobile-services huawei-developers huawei-push-notification
我正在使用以下代码片段,但是我仍然无法获取 pushToken。
private void obtainToken() {
// get token
new Thread() {
@Override
public void run() {
try {
String appId = AGConnectServicesConfig.fromContext(MainActivity.this).getString("client/app_id");
pushtoken = HmsInstanceId.getInstance(MainActivity.this).getToken(appId, "HCM");
if(!TextUtils.isEmpty(pushtoken)) {
Log.i(TAG, "get token:" + pushtoken);
}
} catch (Exception e) {
Log.i(TAG,"getToken failed, " + e);
}
}
}.start();
}
Run Code Online (Sandbox Code Playgroud) android push push-notification huawei-mobile-services huawei-push-notification
是否可以在没有初始化的情况下初始化 HMS agconnect-services.json并在运行时提供密钥?
使用类似的服务 (Fcm),我们可以初始化一个应用程序:
val builder = FirebaseOptions.Builder()
.setApiKey(apiKey)
.setGcmSenderId(senderId)
.setProjectId(project)
.setApplicationId(appId)
FirebaseApp.initializeApp(context, builder.build())
Run Code Online (Sandbox Code Playgroud)
因此,您无需json解析文件即可使用它。
是否有类似的解决方案使用HMSand AppGallery?
顺便说一句,我正在尝试实现PushKit
我实现了华为Push Kit。onNewToken 在应用程序启动后调用。我想使用 onMessageReceived。
当我向客户端发送推送通知时,推送通知出现在 android 上,但 onMessageReceived 未触发。
我将以下代码添加到 Android Manifest
<service
android:name=".HmsMessageSrv"
android:enabled="true" android:exported="false">
<intent-filter>
<action android:name="com.huawei.push.action.MESSAGING_EVENT" />
</intent-filter>
</service>
<meta-data
android:name="push_kit_auto_init_enabled"
android:value="true" />
Run Code Online (Sandbox Code Playgroud)
我的简单课程是;
public class HmsMessageSrv extends HmsMessageService {
@Override
public void onNewToken(String s) {
super.onNewToken(s);
Log.i("HmsMessageService", s);
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Log.i("HmsMessageService", "onMessageReceived");
}
}
Run Code Online (Sandbox Code Playgroud)
如何在收到推送通知时触发 onMessageReceived 函数。
android push-notification huawei-mobile-services huawei-developers huawei-push-notification
我最近在华为手机上试用了我的应用程序。
问题是 PushKit 不返回令牌并且getToken结果为空。
在我得到的日志中GetTokenTask receive a empty token, please check HmsMessageService.onNewToken receive result.,但也没有给出令牌onNewToken。
检索令牌的代码:
GlobalScope.launch(context = Dispatchers.IO) {
try {
val appId = AGConnectServicesConfig.fromContext(this@MainActivity).getString("client/app_id")
val token = HmsInstanceId.getInstance(this@MainActivity).getToken(appId, "HCM")
Pulp.debug("Huawei", "Token received") {
"token" to token
}
} catch (e: java.lang.Exception) {
Pulp.error("Huawei", "Failed to fetch token", e) {
"Cause" to (e.message ?: "Empty")
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果也不例外。但是令牌是空的(请参阅日志的最后一行)。
中的代码HMSService:
override fun onNewToken(token: String?) {
super.onNewToken(token)
Pulp.debug("Huawei", "(onNewToken): Huawei messaging …Run Code Online (Sandbox Code Playgroud) 我正在香港与react-native 合作,但我的目标国家是中国。我需要在中国处理推送通知 不管怎样,可以帮我在没有 GCM 的情况下推送 Android 和华为的通知吗?谢谢大家!
android push-notification react-native huawei-mobile-services huawei-push-notification
最新版本的 Push Kit (5.3.0.304) 在针对 Android 12 进行编译时显示错误:
安装失败,原因是:“INSTALL_PARSE_FAILED_MANIFEST_MALFORMED:installPackageLI期间解析失败:/data/app/vmdl520427088.tmp/base.apk(在二进制XML文件行#349):com.huawei.hms.support.api.push.PushMsgReceiver:目标S+(版本 10000 及更高版本)要求在存在意图过滤器时定义 android:exported 的显式值'
出现此错误的原因是 Android 12 要求所有意图过滤器包含 android:exported 属性。这在 Android 12 更改页面上公开:https://developer.android.com/about/versions/12/behavior-changes-12#exported
包含此更改的 Push Kit 版本的大致发布日期是多少?
android push-notification kotlin huawei-mobile-services huawei-push-notification
添加“com.huawei.agconnect”插件后,我的 flutter 项目无法构建:
失败:构建失败并出现异常。
出了什么问题:任务“:app:processDebugResources”执行失败。执行 com.android.build.gradle.internal.tasks.Workers$ActionFacade 时发生失败
Android 资源链接失败 C:\Users\denbo.gradle\caches\transforms-2\files-2.1\2f7fef5146433a886db0a4b7a0dabd3c\push-5.1.1.301\AndroidManifest.xml:9:5-11:55: AAPT: 错误: 资源 attr/ ??? (又名 com.example.app:attr/???)未找到。
我的 android/build.gradle
buildscript {
ext.kotlin_version = '1.3.61'
repositories {
google()
jcenter()
maven { url 'https://developer.huawei.com/repo/' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.2.0'
classpath 'com.huawei.agconnect:agcp:1.4.2.301'
}
}
allprojects {
repositories {
google()
jcenter()
maven { url 'https://developer.huawei.com/repo/' }
}
}
Run Code Online (Sandbox Code Playgroud)
android/app/build.gradle
//stuff
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.huawei.agconnect'
Run Code Online (Sandbox Code Playgroud) android push-notification flutter huawei-mobile-services huawei-push-notification
我正在尝试读取通知的有效负载,但该事件不会触发。它适用于数据消息,但似乎没有注意到通知。
安卓清单:
<service
android:name="com.huawei.hms.push.react.RNHmsMessageService"
android:exported="true">
<intent-filter>
<action android:name="com.huawei.push.action.MESSAGING_EVENT" />
</intent-filter>
</service>
<receiver android:name="com.huawei.hms.push.react.RNReceiver"/>
<meta-data
android:name="push_kit_auto_init_enabled"
android:value="true" />
Run Code Online (Sandbox Code Playgroud)
RNHms消息服务
public void onMessageReceived(RemoteMessage message) {
Log.i(TAG, "onMessageReceived is called");
if (message == null) {
Log.e(TAG, "Received message entity is null!");
return;
}
Log.i(TAG, "getCollapseKey: " + message.getCollapseKey()...
RemoteMessage.Notification notification = message.getNotification();
if (notification != null) {
Log.i(TAG, "\n getImageUrl: " + notification.getImageUrl()...
}
Boolean judgeWhetherIn10s = false;
// If the messages are not processed in 10 seconds, the app needs to use …Run Code Online (Sandbox Code Playgroud) android react-native huawei-mobile-services huawei-push-notification