标签: google-cloud-messaging

运行时推送通知(GCM)权限?

我已经读过,有必要在运行时向用户询问API 23及更高版本的某些权限.例如:android.permission.ACCESS_FINE_LOCATION.如果API为23或更高,是否有必要(甚至可能)要求在运行时使用GCM /推送通知的运行时权限?

我已经尝试requestPermissions在运行时使用该方法,但是当我将它与任何GCM /推送通知相关的权限一起使用时,它似乎不起作用(没有任何反应).

为此,我在我的Manifest中拥有以下权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<permission
    android:name="${applicationId}.permission.C2D_MESSAGE"
    android:protectionLevel="signature"/>
Run Code Online (Sandbox Code Playgroud)

用户知道的唯一权限是ACCESS_FINE_LOCATION从Play商店下载应用程序的时间.用户不应该选择是否允许推送通知?

任何帮助将不胜感激.

android push-notification google-cloud-messaging android-permissions

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

需要从GCM迁移到FCM吗?

谷歌刚刚宣布谷歌云消息传递现在是Firebase云消息传递.这对GCM的现有用户意味着什么?需要哪些迁移(如果有的话)?

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

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

在通知Android中加载来自网址的图片

在我的Android应用程序中,我想动态设置将从URL加载的通知图标.为此,我使用setLargeIcon了NotificationBuilder的属性receiver.我提到了许多链接并尝试了各种解决方案,但无法获得所需的输出.虽然我从url下载了该图像并在通知中设置了该位图,但它并未显示.相反,它将setSmallIcon图像显示为大图标.我不知道我哪里错了.我在这里发布我的代码.请帮我解决这个问题.谢谢.

码:

@SuppressLint("NewApi")
public class C2DMMessageReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if ("com.google.android.c2dm.intent.RECEIVE".equals(action)) {
            Log.e("C2DM", "received message");
            final String fullName = intent.getStringExtra("message");
            final String payload1 = intent.getStringExtra("message1");
            final String payload2 = intent.getStringExtra("message2");
            final String userImage = intent.getStringExtra("userImage");

            Log.e("userImage Url :", userImage); //it shows correct url

            new sendNotification(context)
                    .execute(fullName, payload1, userImage);
        }
    }

private class sendNotification extends AsyncTask<String, Void, Bitmap> {

        Context ctx;
        String message; …
Run Code Online (Sandbox Code Playgroud)

android bitmap android-notifications android-notification-bar google-cloud-messaging

44
推荐指数
6
解决办法
5万
查看次数

Android GCM:更多应用程序的相同发件人ID

是否可以为更多应用程序使用相同的发件人ID?现在我有18个应用程序(不同的语言和一些功能)使用相同的后端.现在我正在使用GCM实现推送通知.但后端团队只有一个谷歌项目 - 所有应用程序的SENDER ID.有人试过吗?这种情况可能吗?有什么缺点?

谢谢

android google-cloud-messaging

43
推荐指数
1
解决办法
1万
查看次数

GCM注册ID是否过期?

我知道C2DM注册过期,您应该定期刷新注册ID.这是GCM的情况吗?通过查看Android GCM指南中的以下代码(如下所示),看起来你只做了一次并且不需要刷新,但我没有看到明确写在任何地方,所以我只是想检查.

final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
  GCMRegistrar.register(this, SENDER_ID);
} else {
  Log.v(TAG, "Already registered");
}
Run Code Online (Sandbox Code Playgroud)

android android-notifications google-cloud-messaging

43
推荐指数
2
解决办法
4万
查看次数

使用GCM时获得GET_ACCOUNTS权限 - 为什么需要这样做?

我有一个应用程序,实现了推送通知.

我想了解为什么我们需要"GET_ACCOUNTS"(android.permission.GET_ACCOUNTS),同时实现GCM?一些用户对此权限提出了疑虑.我已经使用在清单此权限,因为它是在官方网站给出这里.

这个许可有多安全?如果我从我的清单中删除它,那么推送通知是否有效?

android push-notification google-cloud-messaging

43
推荐指数
3
解决办法
4万
查看次数

推送通知或Socket.io?或两者?

我正在为网络,Android和iOS开发聊天系统.做我的研究我发现GCM和APNS如何处理推送通知的差异.

如果我通过GCM向Android设备发送推送通知,设备能够决定是否通知用户有关它,或者如果它不是必需的,它不会告诉用户.它可能只是用户不需要通知的数据更新.另一方面,如果我通过APNS向iOS设备发送推送通知,则设备无法决定是否显示通知,必须显示通知.此外,当iOS设备收到通知时,通知数据必须包含将向用户显示的字符串.在Android上,设备可以生成该字符串.

因此,我想创建一个系统,对iOS和Android以及网站(基于API)的工作方式相同.那是我找到Socket.io的时候.Socket.io让我可以自由地向设备发送数据(无论是iOS还是Android),以便设备决定是否显示所做的更改(可能是用户更新,新消息,邀请或许多其他"事件").但是,在我的研究中,我发现了一些关于使用Socket.io的缺点.设备必须连接到套接字,以便信息在客户端和服务器之间流动,但现实世界中的智能手机始终连接和断开连接到不同的网络,这会破坏套接字连接.此外,通过在后台打开连接,服务器和客户端之间有一个乒乓球来验证连接是否仍然打开,最终消耗了megas(在我的国家,我们为每个使用的mega支付费用) ,我们还没有统一费率)和生活方式.我不确定这种消费是否重要.

在网络方面,它必须与Socket.io一起使用,所以这根本不是问题.

最后,我知道两种选择的优缺点,我发现我可以混合两种选择,这可能最终成为我的最佳选择.例如,当应用程序打开时,它使用Socket.io,当关闭时使用APNS或GCM(取决于设备操作系统).但是,这是一个好习惯吗?或者更好的是坚持使用1个解决方案而不是混合使用它们为什么?

非常感谢您花时间阅读本文,甚至更多地回答.

push-notification apple-push-notifications socket.io google-cloud-messaging

41
推荐指数
1
解决办法
1万
查看次数

GCM'错误:未注册'

我成功测试了我的GCM代码.

但完全相同的代码,我无法得到GCM推送并得到:

GCM错误:未注册.

android registration google-cloud-messaging

40
推荐指数
4
解决办法
5万
查看次数

Google Cloud Messaging - 在网络状态发生变化之前,有时无法收到消息

在开发一个与GCM集成的小项目时,我偶然发现了一个奇怪的问题.

有时当我开始观看日志以查看是否收到消息时,在我改变网络状态(IE最初在WiFi上,如果我关闭WiFi并转移到移动数据,消息到达)之前,消息似乎没有通过精细).在我改变网络状态后,消息开始完全正常,一旦我将网络状态改回到之前的状态(在这种情况下,WiFi),消息将继续被接收,这同样适用.

该项目本身包括启动启动的能力(启动时启动GCMBaseIntentService),这也完全正常,我确信应用程序/服务正在运行,因为我在发生此问题时手动启动应用程序(其中还检查是否正在运行的服务,如果它不运行它,并检查它是否已注册).

有没有其他人遇到过这个问题,或者有任何指示我如何解决这个问题?我没有看到的消息的时间之间的日志中有很大帮助什么都没有收到,当他们(改变网络状态后).我已经浏览了GCM文档,并且看不到由于超时(在设备本身上)或任何可能影响此问题的配置选项而未收到消息的任何提及.

感谢所有帮助 - 我可以提供源如果需要的话,虽然它很难从Android的SDK提供的演示程序偏离.

android android-networking google-cloud-messaging

39
推荐指数
2
解决办法
2万
查看次数

Android模拟器未接收推送通知

我在谷歌云上使用推送通知,但由于某种原因我无法在模拟器上接收推送通知.

但是,当我在真实设备上测试时,相同的应用程序会收到通知.

有没有其他人遇到这个或找到解决方案?模拟设备具有网络访问权限,并且是与真实设备相同的Android版本,因此我无法想到它应该无法正常工作的任何原因.

android push-notification google-cloud-messaging

37
推荐指数
5
解决办法
4万
查看次数