簡體   English   中英

錯誤〜parse.com推送通知Android?

[英]Error ~ parse.com push notification android?

我只是在android編程中邁出了第一步,我想嘗試實現parse.com推送通知。 我使用1.8.0版本。 當我測試時,我有下一個錯誤:

1)錯誤:(20,68)錯誤:無法訪問螺栓的任務類文件。找不到任務。

2)不建議使用setDefaultPushCallback。

在下面,您可以看到我使用的代碼。 我錯過了什么,我需要改變什么? 也許有人有很好的榜樣?

ParseReceiver.java

public class ParseReceiver extends BroadcastReceiver {
    private final String TAG = "Parse Notification";
    private String msg = "";
    @Override
    public void onReceive(Context ctx, Intent intent) {
        Log.i(TAG, "PUSH RECEIVED!!!");

        try {
            String action = intent.getAction();
            String channel = intent.getExtras().getString("com.parse.Channel");
            JSONObject json = new JSONObject(intent.getExtras().getString("com.parse.Data"));

            Log.d(TAG, "got action " + action + " on channel " + channel + " with:");
            Iterator itr = json.keys();
            while (itr.hasNext()) {
                String key = (String) itr.next();
                Log.d(TAG, "..." + key + " => " + json.getString(key));
                if(key.equals("string")){
                    msg = json.getString(key);
                }
            }
        } catch (JSONException e) {
            Log.d(TAG, "JSONException: " + e.getMessage());
        }


        Bitmap icon = BitmapFactory.decodeResource(ctx.getResources(),
                R.drawable.happy);

        Intent launchActivity = new Intent(ctx, MainActivity.class);
        PendingIntent pi = PendingIntent.getActivity(ctx, 0, launchActivity, 0);

        Notification notification = new NotificationCompat.Builder(ctx)
                .setContentTitle("PUSH RECEIVED")
                .setContentText(msg)
                .setSmallIcon(R.drawable.happy)
                .setLargeIcon(icon)
                .setContentIntent(pi)
                .setAutoCancel(true)
                .build();

        NotificationManager notification_manager = (NotificationManager)ctx.getSystemService(Context.NOTIFICATION_SERVICE);
        notification_manager.notify(0, notification);
    }
}

ParseApplication.java

public class ParseApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Parse.initialize(this, Keys.applicationId, Keys.clientKey);
        PushService.setDefaultPushCallback(this, MainActivity.class);
        ParseInstallation.getCurrentInstallation().saveInBackground();
    }

}

Keys.java

public class Keys {
    protected static final String applicationId = "";
    protected static final String clientKey = "";
}

在Manifect文件中,我使用了下一個代碼

<!-- Permissions required for parse.com notifications -->
<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"/>
<!-- END Parse permissions -->

<!-- My custom receiver -->
<receiver android:name=".ParseReceiver" >
<intent-filter>
<action android:name="com.makemyandroidapp.parsenotificationexample.RECEIVE_PUSH" />
</intent-filter>
</receiver>
<!-- END my custom receiver -->

<!-- Required for Parse.com notifications -->
<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>
<!-- END Parse.com requirements -->

1)您應該檢查Eclipse項目的libs文件夾。 可能您缺少最新的螺栓罐文件。 這是包含解析lib文件的zip的一部分。

2)不幸的是,官方教程在某種程度上具有誤導性,因為它們沒有使用API​​的最新更改進行完全更新。 實際上,如果我沒有記錯的話,這在解析1.6版之前是必需的。
現在,您可以在自定義接收方的代碼中看到,您可以通過設置待處理的意圖來設置在單擊通知時要打開的活動。 檢查此棄用說明
使用新的ParsePushBroadcastReceiver的當前實現比以往任何時候都更加靈活! 因此,與其擴展BroadcastReceiver,不如擴展它。 請務必閱讀有關此文檔。 這是非常有幫助的。

也:
a)在清單中,用以下內容替換“我的自定義收件人”部分

<receiver android:name=".ParseReceiver" android:exported="false">
    <intent-filter>
        <action android:name="com.parse.push.intent.RECEIVE" />
         <action android:name="com.parse.push.intent.OPEN" />
         <action android:name="com.parse.push.intent.DELETE" />
    </intent-filter>
</receiver>


b)改變這個

<receiver android:name="com.parse.ParseBroadcastReceiver" >

到您自己的自定義接收器

<receiver android:name="com.makemyandroidapp.parsenotificationexample.ParseReceiver">



c)在清單中,確保使用您創建的ParseApplication類作為name屬性:

<application
    android:name=".ParseApplication"
    ....
    ....
 />



希望以上內容對您的項目有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM