Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 解析通知在模拟器上工作,但在实际设备上不工作_Android_Parse Platform - Fatal编程技术网

Android 解析通知在模拟器上工作,但在实际设备上不工作

Android 解析通知在模拟器上工作,但在实际设备上不工作,android,parse-platform,Android,Parse Platform,我正在处理解析通知。要向所有用户发送通知…以下代码在emulator上运行良好,但实际设备无法获取通知。。。。 这是我的密码: MainActivity.java public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(s

我正在处理解析通知。要向所有用户发送通知…以下代码在emulator上运行良好,但实际设备无法获取通知。。。。 这是我的密码: MainActivity.java

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ParseAnalytics.trackAppOpenedInBackground(getIntent());
    PushService.setDefaultPushCallback(this, MainActivity.class);
    ParseInstallation.getCurrentInstallation().saveInBackground();
     }
     }
ParseApplication.java

public class ParseApplication extends Application{

@Override
public void onCreate() {
    // TODO Auto-generated method stub
    super.onCreate();
    Parse.initialize(this, "[APP ID]", "[CLIENT KEY]");
    ParseUser.enableAutomaticUser();
    ParseACL defaultACL = new ParseACL();
    defaultACL.setPublicReadAccess(true);
    ParseACL.setDefaultACL(defaultACL, true);



    ParseInstallation.getCurrentInstallation().saveInBackground();
   }
Receiver.java

public class Receiver extends ParsePushBroadcastReceiver{

@Override
protected void onPushOpen(Context arg0, Intent arg1) {
    // TODO Auto-generated method stub
    Intent i = new Intent(arg0,MainActivity.class);
    i.putExtras(arg1.getExtras());
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    arg0.startActivity(i);

}
AndroidManifest.xml

<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="11" />
 <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  <uses-permission android:name="android.permission.VIBRATE" />
  <uses-permission android:name="android.permission.WAKE_LOCK"/>
  <uses-permission android:name="android.permission.GET_ACCOUNTS" />
  <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
  <permission android:protectionLevel="signature"
  android:name="com.example.parse.permission.C2D_MESSAGE" />
  <uses-permission android:name="com.example.parse.permission.C2D_MESSAGE" />
  <application
    android:allowBackup="true"
    android:name="com.example.parse.ParseApplication" 
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    >
    <activity
        android:name="com.example.parse.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <service android:name="com.parse.PushService" />
    <receiver android:name="com.parse.ParseBroadcastReceiver" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.intent.action.USER_PRESENT" />
        </intent-filter>
    </receiver>
    <receiver 
        android:name="com.example.parse.Receiver"
        android:exported="false"  >
        <intent-filter>
            <action android:name="com.parse.push.intent.RECEIVE" />
            <action android:name="com.parse.push.intent.DELETE" />
            <action android:name="com.parse.push.intent.OPEN" />
        </intent-filter>
    </receiver>


  </application>

 </manifest>

您没有订阅集。如果你还没有看到它,请按照链接

在应用程序onCreate中:

ParsePush.subscribeInBackground("", new SaveCallback() {
  @Override
  public void done(ParseException e) {
    if (e == null) {
      Log.d("com.parse.push", "successfully subscribed to the broadcast channel.");
    } else {
      Log.e("com.parse.push", "failed to subscribe for push", e);
    }
  }
});
由于您可能正在创建自己的示例应用程序,请密切注意清单配置,确保您有正确的包名。
正如Parse文档中所指出的,当Play服务可用时,他们使用GCM,而实际的Android设备将使用GCM。当他们在没有播放服务的设备上使用持久连接时,例如模拟器。希望这有帮助

在实际的应用程序中,您是否有任何错误?没有错误……它正常工作……但没有收到通知……有一次我花了一整天的时间试图让解析通知正常工作,但没有成功。当我离开办公室时,手机从wi-fi重新连接到手机,并立即收到所有通知。也许你的人生故事是相似的。。