IBM MobileFirst - 添加推送清单权限的原生 Android 应用程序
Posted
技术标签:
【中文标题】IBM MobileFirst - 添加推送清单权限的原生 Android 应用程序【英文标题】:IBM MobileFirst - Native Android Application adding push manifest permissions 【发布时间】:2015-07-26 04:02:45 【问题描述】:我对此处找到的 IBM MobileFirst GMS 推送通知的权限部分感到困惑。 (第 5 节)
https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-7-0/notifications/push-notification-native-android-applications/
我已经逐字添加了所有这些权限,但我收到一条错误消息,说我没有添加清单权限。我需要修改这些权限中的包名吗?
这个活动是内置的吗?
<activity
android:name="com.worklight.androidnativepush.AndroidNativePush"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar"
android:launchMode="singleTask">
这是错误日志
07-25 23:24:48.285 17146-17146/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.companyname.hitch.mobilefirsttestapp, PID: 17146
java.lang.RuntimeException: Unable to start activity ComponentInfocom.companyname.hitch.mobilefirsttestapp/com.companyname.hitch.mobilefirsttestapp.push.PushActivity: java.lang.RuntimeException: Your manifest is not allowed to work with push. Android Manifest Error: Missing permission in manifest: com.companyname.hitch.mobilefirsttestapp.permission.C2D_MESSAGE
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: Your manifest is not allowed to work with push. Android Manifest Error: Missing permission in manifest: com.companyname.hitch.mobilefirsttestapp.permission.C2D_MESSAGE
at com.worklight.wlclient.api.WLPush.<init>(WLPush.java:180)
at com.worklight.wlclient.api.WLClient.getPush(WLClient.java:957)
at com.companyname.hitch.mobilefirsttestapp.push.PushActivity.onCreate(PushActivity.java:19)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
为什么不包括你得到的错误以及你的清单文件? 嘿伊丹,正在努力。它在一个单独的工作站上。一瞬间 【参考方案1】:在使用 Android 环境创建基于 MobileFirst 的混合应用程序时,MobileFirst 将基于具有一组预定义权限和活动的模板来创建它。
在本机应用程序中,您是创建它的人。 MobileFirst 仅向您提供 SDK 和一组集成说明。
您在问题中提到的活动(取自教程页面)是教程中包含的示例应用程序的活动。在您自己应用的 AndroidManifest.xml 中,您将看到您的应用名称而不是“androidnativepush”(或者说需要创建它)。
确保不要在任何地方使用“androidnativepush”,除非那是您的应用名称。
【讨论】:
看起来接收器中意图过滤器内的“类别”标签正在使用“com.worklight.androidnativepush”。我假设这也需要用我的包名进行更改? 是的。任何地方都说“androidnativepush”应该替换为您自己的应用程序名称。我编辑了教程以澄清这一点。以上是关于IBM MobileFirst - 添加推送清单权限的原生 Android 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
IBM MobileFirst 7.1 推送订阅用户标识为空
IBM Mobilefirst CLI 7.1.0 mfp 推送错误
IBM mobileFirst 8.0 中带有图像的促销推送通知
IBM MobileFirst 8 - 推送通知错误代码:invalid_client