Чтобы ответить на один аспект вопроса @user1544797 и в дополнение к ответу @user128536, вы можете позволить своему приложению отвечать за настройку значка уведомления и не полагаться на режим предварительного просмотра Mixpanel. Для этого вы должны перехватить трансляцию Mixpanel, создав свой собственный BroadcastReceiver
, который расширяет GCMReceiver
Mixpanel:
public class MixpanelGCMReceiver extends GCMReceiver {
@Override
public void onReceive(Context context, Intent intent) {
intent.putExtra("mp_icnm", "<your_icon_name>");
super.onReceive(context, intent);
}
}
Затем объявите свой BroadcastReceiver
в файле AndroidManifest.xml:
<receiver
android:name="<your_package_name>.MixpanelGCMReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="${applicationId}" />
</intent-filter>
</receiver>
Наконец, @user128536 прав, предупреждая вас, что Proguard испортит ваш значок уведомления, если им не управлять должным образом (и, к сожалению, Mixpanel не документирует, как ваше приложение должно обрабатывать этот случай). Однако, помимо Proguard, есть еще одна проблема, которую вам, возможно, придется решить, если вы используете applicationId, который отличается от вашего packageName (обычно при использовании вариантов продукта). В классе ResourceReader
из Mixpanel SDK вы можете увидеть этот комментарий:
MPLog.w(LOGTAG, "Can't load names for Android view ids from '" + localClassName + "', ids by name will not be available in the events editor.");
MPLog.i(LOGTAG, "You may be missing a Resources class for your package due to your proguard configuration, " +
"or you may be using an applicationId in your build that isn't the same as the package declared in your AndroidManifest.xml file.\n" +
"If you're using proguard, you can fix this issue by adding the following to your proguard configuration:\n\n" +
"-keep class **.R$* {\n" +
" <fields>;\n" +
"}\n\n" +
"If you're not using proguard, or if your proguard configuration already contains the directive above, " +
"you can add the following to your AndroidManifest.xml file to explicitly point the Mixpanel library to " +
"the appropriate library for your resources class:\n\n" +
"<meta-data android:name=\"com.mixpanel.android.MPConfig.ResourcePackageName\" android:value=\"YOUR_PACKAGE_NAME\" />\n\n" +
"where YOUR_PACKAGE_NAME is the same string you use for the \"package\" attribute in your <manifest> tag."
);
Как указано в комментарии выше, если вы окажетесь в такой ситуации, просто добавьте в файл AndroidManifest.xml следующий блок:
<meta-data
android:name="com.mixpanel.android.MPConfig.ResourcePackageName"
android:value="<your_package_name>" />
Вот и все, вы должны быть готовы к этому моменту ;)
person
ptitvinou
schedule
23.05.2017