小编Gil*_*Gil的帖子

几个小时后,Android SDK从GCM收到NotRegistered错误

问题

我正在编写和Android SDK,它应该从SDK服务器端接收GCM推送消息.成功推送消息发送几个小时后,GCM服务器返回NotRegistered错误:

{
    "multicast_id":6205350692941230304,
    "success":0,
    "failure":1,
    "canonical_ids":0,
    "results":
    [
        {
            "error":"NotRegistered"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

registrationId在客户端并没有改变,而在服务器端与该令牌更新.

我该如何解决这个registrationId问题?有两个听众 - 一个在SDK中,一个在应用程序中 - 一个问题?

建筑

我的Android SDK regId在初始化时注册GCM ,并将该id发送到支持SDK的服务器.

拥抱应用程序可能(通常会)注册regId自己的GCM .另一个regId可能被发送到拥抱应用程序的服务器.

senderIdSDK和应用程序的不同.

履行

表现

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> ...

    <receiver
        android:name="com.xxxx.xxxxx.xxxxx"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        </intent-filter>
    </receiver>
Run Code Online (Sandbox Code Playgroud)

注册码

protected String doInBackground(Void... params) {
    String msg = "";
    try {
        if (gcm == null) {
            gcm = GoogleCloudMessaging.getInstance(mContext);
        }
        regid …
Run Code Online (Sandbox Code Playgroud)

sdk android google-cloud-messaging

12
推荐指数
1
解决办法
3077
查看次数

在Android应用程序中禁用Volley日志

问题

我正在开发一个SDK,使用Volley库进行http(s)调用.

我能够使用自定义的Log类包装器隐藏我的应用程序日志,并且我想禁用每个日志级别的打印Volley,因为它可能会暴露HTTPS发送的敏感信息.

我知道您可以使用proguard来禁用应用程序的日志记录,但我还希望能够从服务器端切换日志记录以调试特定方案.

我试过了什么

我看一下源代码,看起来VolleyLog类中的DEBUG标志只改变了日志级别,但是ERROR在日志中保持调用,所以它不适合我.

是否可以隐藏所有Volley日志?

logging android android-volley

7
推荐指数
1
解决办法
2939
查看次数

通过ACTION_SEND在Android中共享流式视频网址

我需要通过第三方应用程序(如Youtube,Gmail等)共享视频网址(不是YouTube).我的服务器上有.mp4或.m3u8文件的链接,我在VideoView上成功显示,但我也有我希望通过ACTION_SEND分享同一活动的分享按钮.

我测试过:

        Intent share = new Intent(Intent.ACTION_SEND);
        share.setType("text/plain");
        share.putExtra(Intent.EXTRA_STREAM, Uri.parse(mVideoUrl));
        startActivity(Intent.createChooser(share, "Share Video"));
Run Code Online (Sandbox Code Playgroud)

它确实启动了共享选择器,但我不能在Youtube上分享这个,因为他们期望收到视频类型而不是链接.共享链接也是一个糟糕的选择,因为它并不认为它是一个视频.

如果我用这个:

        Intent share = new Intent(Intent.ACTION_SEND);
        share.setType("video/*");
        share.putExtra(Intent.EXTRA_STREAM, Uri.parse(filePath));
        startActivity(Intent.createChooser(share, "Share Video")); 
Run Code Online (Sandbox Code Playgroud)

虽然filePath是存储在外部存储中的视频文件的绝对路径,但它确实在YouTube,Gmail,Facebook等上共享真实的视频文件.

但我的问题是我的视频文件大小可能超过300MB,因此将文件下载到设备然后共享可能会耗费内存,当然下载文件需要花费一些时间.

那么有没有办法分享链接,让第三方应用程序视为视频并将其嵌入到他们的应用程序中,或者我唯一的选择是下载视频,保存在存储中然后共享(这是更糟糕的选择)或者分享它作为文本链接?

还有其他我不熟悉的选项是通过YouTube,Gmail等分享流媒体视频而无需将真实文件下载到设备吗?

youtube video android sharing

7
推荐指数
0
解决办法
1651
查看次数

Android:ExoPlayer - 从视频中获取当前帧编号

我正在开发一个Android视频应用,我需要在暂停模式下获取正在显示的视频的当前帧编号.

我需要向我的服务器发送当前在视频中暂停的帧编号并获取有关该帧/时间的项目列表,现在我发送当前暂停时间(以毫秒为单位),但它不能很好地工作,因为服务器根据时间比较发送到其计算的特定帧的时间,但有时比较不准确.

我知道如果你使用MediaMetaDataRetriever,你可以从该帧获得一个位图,我做了它,但它返回位图图像,我需要的是一个索引.我正在使用ExoPlayer(我需要MP4和HLS的功能,如果这很重要).

有没有办法从视频中获取该信息?

android ffmpeg video-streaming exoplayer

6
推荐指数
1
解决办法
1780
查看次数

使用ExoPlayer支持播放速度

Exoplayer是否支持视频(MP4和HLS)中的播放速度变化?

如果没有,有没有人建议如何实现这种功能?

mp4 android audiovideoplayback exoplayer

5
推荐指数
0
解决办法
1150
查看次数

Firebase Auth - 暴力攻击预防

我们有一个 Android 和 iOS 应用程序,我们使用电子邮件/密码、Facebook 和 Google 帐户实施了 Firebase 身份验证。

我们如何知道 Firebase 是否能够阻止黑客多次运行带有随机电子邮件和密码的脚本以最终侵入我们的系统?

我们在 Firebase 控制台上发现了这一点 -

管理注册配额

为了保护您的项目免遭滥用,我们限制您的应用程序可以从同一 IP 地址进行的新电子邮件/密码和匿名注册的数量。您可以在此处请求并安排对此配额的临时更改。

当前每小时配额:100

但无法在网络上找到任何其他内容,而且这对于 SIGN_IN 方法来说也不是那么清楚,而不仅仅是上面写的 SIGN_UP 。

任何帮助表示赞赏。

security android ios firebase firebase-authentication

5
推荐指数
1
解决办法
3314
查看次数

奥利奥后台服务

在我们的应用程序中,我们使用多个服务和意图服务来进行 BLE 通信、麦克风录音等。

我们注意到了新的背景限制和限制(是的,我知道我们确实很晚才注意到)。我已经更改了使用 ContextCompat.startForegroundService() 函数的实现,并将 startForeground() 与文档中所述的通知一起使用。

但我们看到,当应用程序被终止时,前台服务也会在几分钟后终止。它应该发生吗?仅当应用程序在后台时,前台服务才应继续工作吗?

另外,如果是这种情况,电池优化功能有何作用?使服务仅在后台运行?当应用程序处于后台并且启用此功能时,服务是否仍然可以被杀死?

我已经阅读了很多有关它的文档,但我仍然对应用程序被终止时的服务状态感到困惑。

我们不介意显示这些服务的通知,但我们仍然希望它继续“无休止”地工作。

android background-process foreground-service android-8.0-oreo

2
推荐指数
1
解决办法
1694
查看次数