對於 cocos 項目,按照友盟的官網文檔接入步驟. 是無法成功編譯的.
所以在這裏做個記錄.希望對和我一樣是android菜鳥的同學有用
我用的SDK版本是最新的 2.7.0
1.先按照官網的步驟接入.
- 把下載的SDK裏面的PushSDK當做library引用導入自己的項目。
這一步對於不用 eclipse的我來說.就是在project.properties
很簡單的添加一行代碼android.library.reference.1=../PushSDK
,然後把sdk copy到proj.android
的同級目錄 - 把AndroidManifest.xml裏面的${applicationId}替換成爲自己項目的包名。
- 把下載的eclipselibs目錄下的okio-0.6.1.jar、wire-runtime-1.7.0.jar這兩個文件拷貝到PushSDK的libs目錄下。
- 在自己項目的目錄下找到project.properties,在裏面加入manifestmerger.enabled=true。
如果是android6.0以上的api編譯,把SDK目錄下的libs/裏面的org.apache.http.legacy.jar拷貝到PushSDK的libs目錄,然後加入buildpath裏面(
這一步我暫時沒有做,後面接入gg的廣告可能要整一下
)然後是
android-support-v4.jar
.這個包應該是需要的. 直接baidu一個 放到proj.android
的libs目錄下即可
這是官網描述注意: 本SDK需要最新版本的 android-support-v4.jar 支持包。請在工程中添加 android-support-v4.jar 支持包。 關於v4 支持包說明, 請參考 http://developer.android.com/tools/support-library/features.html#v4。
2.添加AppKey & Umeng Message Secret
在項目工程的AndroidManifest.xml中的<Application>
標籤下添加:
<meta-data
android:name="UMENG_APPKEY"
android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxx" >
</meta-data>
<meta-data
android:name="UMENG_MESSAGE_SECRET"
android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxx" >
</meta-data>
把上述的umeng_appkey
和umengmessage_secret
修改爲和自己App對應的值
3.添加Channel ID
你可以用Channel ID來標識APP的推廣渠道,作爲推送消息時給用戶分組的一個維度。設置方法如下:
在<application>
標籤下:
<meta-data
android:name="UMENG_CHANNEL"
android:value="Channel ID" >
</meta-data>
將"android:value"中的"Channel ID"替換爲APP的推廣渠道。
4.添加代碼
import com.umeng.message.PushAgent;
import com.umeng.message.IUmengRegisterCallback;
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
MobClickCppHelper.init(this);
//這裏是要添加的部分
PushAgent mPushAgent = PushAgent.getInstance(this);
mPushAgent.enable();
mPushAgent.onAppStart();
//要添加部分結束
if(nativeIsLandScape()) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}
if(nativeIsDebug()){
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
hostIPAdress = getHostIpAddress();
}
mPushAgent.enable();
可以換成下面這個版本. 來獲取測試設備的 device_token 用於測試推送消息
mPushAgent.enable(new IUmengRegisterCallback() {
@Override
public void onRegistered(String registrationId) {
//onRegistered方法的參數registrationId即是device_token
Log.d("device_token", registrationId);
}
});
到此爲止,官網的步驟已經結束了. 可是我用cocos studio編譯是不通過的.而且完全看不到編譯錯誤
在哪. 你可以編譯試試
5.好了.下面纔是針對cocos項目的重頭戲
- 在下載的sdk包裏 找到這個文件
proguard-rules.txt
copy到PushSDK
目錄下 - 在
PushSDK
目錄下創建一個src
文件夾 - 在
src
目錄下創建一個com
文件夾 - 在
com
目錄下創建一個whatulike
文件夾 - 在
whatulike
目錄下創建一個whatulike2
文件夾 - 在
whatulike2
目錄下創建一個whatulike.java
文本文件
whatulike.java
內容 隨你,可以複製下面的…
package com.whatulike.whatulike2;
import android.app.Activity;
import android.os.Bundle;
public class WhatULike extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
}
目前爲止,你應該可以正確的編譯了.用eclipse或者 cocos studio 都可以編譯
然後就可以運行難是否成功接入以及查看測試設備的 device_token
對於用 nodejs 接入推送api的問題,
這裏有個現成的輪子 https://www.npmjs.com/package/umengpush-node
have fun day.