Android 应用已停止向 Facebook 分析发送任何事件

Android app has stopped send any events to Facebook Analytics

对不起,如果我的英语不好!

有人遇到过关于 Facebook 活动的问题吗?我在 Android 上有一个应用程序,它发布在 Google Play 中。最近我升级了它,然后我发现我的应用程序已停止向 Analytics 发送任何事件。我的更改与 facebook SDK 无关。我刚刚更改了一些有关某些按钮工作逻辑的代码。

然后我尝试创建一个新的测试应用程序并检查它是否将事件发送到 Analytics。起初它有效,但几分钟后出现了同样的问题。第二天是一样的.. 我没有看到分析中的任何事件。 我检查了应用中集成SDK的步骤,一切正常。

启动应用程序时日志中出现一些错误:

11556-11580/com.pattern.eventstest E/GraphResponse: {HttpStatus: 400, errorCode: 100, subErrorCode: 33, errorType: GraphMethodException, errorMessage: Unsupported get request. Object with ID '147657836189003' does not exist, cannot be loaded due to missing permissions, or does not support this operation. Please read the Graph API documentation at https://developers.facebook.com/docs/graph-api}

但是,如果我没看错的话,这是因为应用程序带有 fb 授权按钮,但我没有在我的应用程序中使用它。

在 gradle 中,我尝试实现 'com.facebook.android:facebook-android-sdk:4.36.0''com.facebook.android:facebook-android-sdk:[4,5)',两者都不起作用。

有人知道发生了什么事吗?

gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.pattern.eventstest"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    implementation 'com.android.support:appcompat-v7:27.0.2'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'junit:junit:4.12'
    implementation 'com.facebook.android:facebook-android-sdk:[4,5)'
    implementation group: 'commons-codec', name: 'commons-codec', version: '1.11'
    implementation 'org.jsoup:jsoup:1.10.3'
}

清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.pattern.eventstest">

    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
    </application>

</manifest>

字符串:

<resources>
    <string name="app_name">Events Test</string>
    <string name="facebook_app_id">147657836189003</string>
    <string name="fb_login_protocol_scheme">fb147657836189003</string>
</resources>

MainActivity:

package com.pattern.eventstest;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.facebook.appevents.AppEventsLogger;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        fbAppEvent(this, "onCreate");
    }
    public static void fbAppEvent(Context context, String name) {
        String actName = "app: " + name;
        try {
            AppEventsLogger logger = AppEventsLogger.newLogger(context);
            logger.logEvent(actName);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

脸书上:

请确保您的活动名称与以下正则表达式匹配:

/^[0-9a-zA-Z_][0-9a-zA-Z _-]{0,39}$/

特别是,你这里有一个错误:

  String actName = "app: " + name;

不允许使用冒号。还允许我建议使用枚举来指示您的应用程序的不同操作,而不是字符串。请记住,每个应用最多可以发送 1000 个自定义事件名称。