同一个应用中的多个GCM发件人

时间:2016-07-08 13:03:11

标签: google-cloud-messaging gcmlistenerservice

我使用以下代码为多个发件人ID生成RegisterId。

public class RegistrationIntentService extends IntentService {
   @Override
   public void onHandleIntent(Intent intent) {
     InstanceID instanceID = InstanceID.getInstance(this);
     String senderIDs = "SENDER_ID_1,SENDER_ID_2";
     String token = instanceID.getToken(senderIDs, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
     }
}

我引用了这段代码,

https://github.com/layerhq/documentation/blob/master/android/guides/push-integration.md

https://developer.layer.com/docs/android/guides

但我得到了“INVALID SENDER”例外。

请帮我解决此问题。

1 个答案:

答案 0 :(得分:2)

GCM允许多方向同一个应用程序发送消息。

例如,假设您的应用程序是一个包含多个贡献者的文章聚合,并且您希望他们每个人在发布新文章时能够发送消息。此消息可能包含URL,以便应用程序可以下载文章。 GCM不必将所有发送活动集中在一个位置,而是让您能够让每个贡献者发送自己的消息。

为了实现这一目标,您需要做的就是让每个发件人生成自己的项目编号。然后在请求注册时在发件人字段中包含这些ID,以逗号分隔。最后,与您的合作伙伴共享注册ID,他们将能够使用自己的身份验证密钥向您的应用程序发送消息。

此代码段说明了此功能。发件人在逗号分隔列表中作为意图额外传递:

Intent intent = new Intent(GCMConstants.INTENT_TO_GCM_REGISTRATION);
intent.setPackage(GSF_PACKAGE);
intent.putExtra(GCMConstants.EXTRA_APPLICATION_PENDING_INTENT,
PendingIntent.getBroadcast(context, 0, new Intent(), 0));
String senderIds = "968350041068,652183961211";
intent.putExtra(GCMConstants.EXTRA_SENDER, senderIds);
ontext.startService(intent);

注意有100个多个发件人的限制。

您可以查看此邮件,了解有关多个发件人的详细信息:https://stuff.mit.edu/afs/sipb/project/android/docs/google/gcm/demo.html