标签: google-cloud-messaging

GCM android PHP android推送通知

我的问题与使用PHP curl的android推送通知有关.问题是我向我的Android设备发送一个推送通知,但问题是我的一些设备不止一次获得该通知,有时20次,而有些只获得一次,因此排除了应用程序的错误.我真的不知道问题是什么.感谢您的预期响应/解决方案.请参阅下面的推送代码

function googlePush($DevID, $Message , $id)
{
// Set POST variables
$url = 'https://android.googleapis.com/gcm/send';
//  static $a=1;
    $DeviceID = array($DevID);
$Message = array("MSG" => $Message, "MSGCNT" => $Message, "message" => $Message, "id" => $id);

$fields = array(
    'registration_ids' => $DeviceID,
    'data' => $Message,
);

$headers = array(
    'Authorization: key=' . 'xxxxxxxxxxxxxxxxxxxxxxxx',
    'Content-Type: application/json'
);
// Open connection
$ch = curl_init();

// Set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); …
Run Code Online (Sandbox Code Playgroud)

android push-notification google-cloud-messaging

0
推荐指数
1
解决办法
3139
查看次数

无法在 Mac OSX 上设置 Maven

我是 Mac OSX 新手,正在运行 Yosemite。我正在尝试使用此官方指南来设置 Maven ,以便设置 Google Cloud Messaging 后端。这就是我所做的:

1)下载Maven zip(版本:apache-maven-3.3.9)并解压

2)正如指南所说,我需要将 bin 目录添加到我的 PATH 变量中。所以我在终端中执行了以下操作

export M2_HOME=/usr/local/apache-maven/apache-maven-3.3.9

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_60

export PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

终端没有返回任何响应。然而,当我检查 Maven 是否已安装时,使用:

mvn-版本

我收到一条消息说:

-bash:mvn:找不到命令

我究竟做错了什么?我是否正确按照步骤设置了 Maven?

编辑:

MVN Bin目录路径为:

/用户/Earthling/文档/项目/MobiProject/apache-maven-3.3.9

java macos bash maven google-cloud-messaging

0
推荐指数
1
解决办法
7654
查看次数

使用离子推送的多次推送通知

发送两个通知时,第二个通知将覆盖通知中心中的第一个通知.根据文档,这应该只在使用标签时发生:

"tag":指示每条通知消息是否在通知中心上生成新条目.如果未设置,则每个请求都会创建一个新通知.如果已设置,并且已显示具有相同标记的通知,则新通知将替换现有通知.

然而,无论我是否为标签设置了值,这种情况一直发生在我身上.

我甚至尝试设置一个随机标签&collapse_key(据我所知,在这种情况下我不应该相关,但我试了一下).仍然没有帮助.这是我发送的通知对象的示例:

{  
   "tokens":[  
      "my-device-token"
   ],
   "profile":"my-profile-tag",
   "notification":{  
      "message":"message",
      "android":{  
         "payload":{  
            "collapse_key":9918519,
            "tag":2825928
         }
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

android push-notification google-cloud-messaging ionic-framework firebase-cloud-messaging

0
推荐指数
1
解决办法
968
查看次数

Firebase Cloud Messaging:处理应用服务器中的令牌刷新

我正在尝试实现一个通知系统,您可以在其中订阅另一个用户(不是 Firebase 主题),并在该用户发布内容时获取推送通知。

为此,我决定使用设备组注册令牌,以便用户可以将推送通知发送到他/她登录的每个设备。

目前,用户可以订阅另一个用户,还可以使用通知键接收他登录的每个设备的推送通知。为此,我每次用户登录时都会获取设备的注册令牌,并使用以下结构将其存储在数据库(应用程序服务器)中。

用户

  • 用户 ID(主键)
  • 通知键名称
  • 通知键

设备

  • 用户 ID (FK)
  • 注册令牌

但是,我无法弄清楚如何管理应用程序服务器中的令牌刷新。

考虑这种情况:

1)user_1首次登录设备。

2) 使用registration_token_1创建设备组(在FCM 和应用程序服务器中)。

3)user_1卸载应用并重新安装(令牌刷新)。

4) user_1 重新登录。

5) App Server 将refresh_token_1添加到user_1,他现在有2 个令牌,旧的和新的。

6) user_1注销和user_2登录同一设备,refresh_token_1转移给user_2。

7) FCM 删除 user_1 的设备组,因为 user_1不再具有任何注册令牌。但 user_1 在应用服务器中仍然拥有 notification_key 和带有 Registration_token_1 的设备。

8) user_1 无法登录,因为应用程序服务器认为他已经拥有设备组并尝试将刷新令牌_1 添加到 FCM 中不存在的 notification_key,并收到错误代码 400“通知密钥不存在”。

我对此有几个问题:

如果刷新令牌,是否有办法从 FCM 检索旧令牌?这样,应用程序服务器可以用新令牌替换旧令牌,而无需将令牌与设备标识符配对,如果标识符在卸载/恢复出厂设置等情况下不存在,则这似乎不可靠

您能否推荐一种更好的方法来将用户(通知键)与应用程序服务器中的注册令牌进行映射?

编辑 我已经阅读了一些其他线程,并找到了一种可能的解决方案,其形式是将注册令牌与设备标识符配对,因此当刷新令牌时,我可以查找设备标识符并替换/删除令牌。现在,我不确定 iOS 和 Android 是否都具有持久标识符,这些标识符是否可以在应用程序卸载、数据擦除和恢复出厂设置之外存在……

firebase google-cloud-messaging firebase-cloud-messaging

0
推荐指数
1
解决办法
2255
查看次数

FirebaseMessagingService onMessageReceived 覆盖错误

班级:

class SubscriptionMessageService : FirebaseMessagingService() {

companion object {
    private val TAG = SubscriptionMessageService::class.java.simpleName
    private const val REMOTE_MESSAGE_SUBSCRIPTIONS_KEY = "currentStatus"
}

override fun onMessageReceived(remoteMessage: RemoteMessage?) {
    remoteMessage?.data?.let {
        val data = it
        if (data.isNotEmpty()) {
            var result: List<SubscriptionStatus>? = null
            if (REMOTE_MESSAGE_SUBSCRIPTIONS_KEY in data) {
                result = data[REMOTE_MESSAGE_SUBSCRIPTIONS_KEY]?.let {
                    SubscriptionStatus.listFromJsonString(it)
                }
            }
            if (result == null) {
                Log.e(TAG, "Invalid subscription data")
            } else {
                val app = application as SubApp
                app.repository.updateSubscriptionsFromNetwork(result)
            }
        }
    }
}
}
Run Code Online (Sandbox Code Playgroud)

错误:“onMessageReceived”不覆盖任何内容

Github 链接:https …

android in-app-purchase google-cloud-messaging

0
推荐指数
1
解决办法
1115
查看次数

Google Developer Console的哪些服务是免费使用的?

我想在我的应用程序中使用GCM(Google云消息传递),我发现我需要开发人员控制台.

我找到了这个:https://play.google.com/apps/publish/signup/

在这个网站上,它说我需要支付25美元才能注册,但在Android开发者网站上,我发现了另一个链接https://console.developers.google.com/project?utm_referrer=http:%2F%2Fdeveloper.android.com%2Fgoogle %2Fgcm%2Fgs.html

这是GCM免费还是我需要支付25美元?

android google-cloud-messaging

-1
推荐指数
1
解决办法
9323
查看次数

错误:无法访问未找到com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable的AbstractSafeParcelable类文件

错误:无法访问未找到com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable的AbstractSafeParcelable类文件

java android google-cloud-messaging android-studio

-1
推荐指数
1
解决办法
6325
查看次数

FCM(Firebase云消息传递)和GCM之间的区别?哪一个更适合Android推送通知?

我想在我的应用程序中使用推送通知,其他一些事情,比如我手动处理的服务器数据库同步,那么哪个是最好的选择呢?

我也可以在FCM中使用GCM API密钥吗?

FCM对于无限数量的邮件是免费的吗?

android firebase google-cloud-messaging firebase-cloud-messaging

-3
推荐指数
1
解决办法
2万
查看次数