这里会显示出您选择的修订版和当前版本之间的差别。
en:razor:plugins:huaweipush [2015/03/19 13:58] cobub [3.3.配置AndroidManifest.xml文件。] |
en:razor:plugins:huaweipush [2017/07/14 11:18] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== HuaweiPush Plugin ====== | ||
- | |||
- | Huawei Push the plug is Cobub Razor official platform based Huawei alliance to push the development of a plug-in. | ||
- | It integrates features a push function Tag Huawei and Cobub Razor Alliance platform provides more convenient, fast and accurate a push. | ||
- | Huawei Union open platform for messaging applications to help companies push through low-cost Internet access, provide a sound, efficient and stable service system solves the Internet cloud to the phone side of the message interoperability problems. | ||
- | |||
- | ===== Integration steps: ===== | ||
- | |||
- | |||
- | Huawei push the plug before integration, ensure the establishment of a database related tables, can go to[[razor:plugins:start|here]]sql file Download related to import into your database, create a related table (note changes in the prefix table sql razor_, in order to maintain your own database table prefix and consistent). | ||
- | |||
- | ** 1.**Ensure Cobub Razor and Cobub authorized users Center has successfully bound.** If not binding, see [[razor:plugins:start|here]]. | ||
- | |||
- | **2.Activate Huawei Cobub Razor in push applications ** | ||
- | To use the plug-in Huawei push push, the system needs to be allocated for each of the corresponding authorization Key App (currently only supports Android platform). | ||
- | |||
- | **3. Huawei push SDK integration ** | ||
- | Huawei Huawei Push Coalition downloaded SDK for the. Rar file, after local decompression, go to “micro-kernel SDK \ Doc” directory, “Huawei PushSDK integration instructions. Pdf” Reference Doc directory integration Huawei push SDK documentation | ||
- | |||
- | Integration steps: | ||
- | |||
- | ==== 3.1 Integration jar package: ==== | ||
- | |||
- | Adding acquired cobub razor’s ums.jar Huawei to push the project libs directory. | ||
- | Right on the project and select Build Path-> Configure build path … -> left select Java Build Path->; choose Libraries Select Card ->; Add JARs .. ->; choose the items currently Libs directory, select the jar package, and then click OK. | ||
- | |||
- | ==== 3.2.Modify download Huawei push SDK project package name and package name to create an application consistent: ==== | ||
- | |||
- | |||
- | ==== 3.3 Configuration AndroidManifest.xml file. ==== | ||
- | |||
- | * Add authorization | ||
- | <code> | ||
- | uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" | ||
- | uses-permission android:name="com.android.mylauncher.permission.INSTALL_SHORTCUT"</code> | ||
- | * Add Service Statement | ||
- | <code> | ||
- | meta-data | ||
- | android:name="UMS_APPKEY" | ||
- | android:value="APPKEY" | ||
- | meta-data | ||
- | </code> | ||
- | Note: PACKAGENAME replace the package name for the project. | ||
- | APPKEY which is created by Cobub razor to get to the application of | ||
- | |||
- | ==== 3.4 添加SendMapping.java映射文件:将SendMapping.java文件放在’..\src\项目名’目录下 ==== | ||
- | |||
- | <code> | ||
- | package PACKAGENAME; | ||
- | import android.content.BroadcastReceiver; | ||
- | import android.content.Context; | ||
- | import android.content.Intent; | ||
- | import android.content.SharedPreferences; | ||
- | import android.util.Log; | ||
- | import org.apache.http.HttpResponse; | ||
- | import org.apache.http.client.HttpClient; | ||
- | import org.apache.http.client.methods.HttpPost; | ||
- | import org.apache.http.entity.StringEntity; | ||
- | import org.apache.http.impl.client.DefaultHttpClient; | ||
- | import org.apache.http.protocol.HTTP; | ||
- | import org.apache.http.util.EntityUtils; | ||
- | import org.json.JSONException; | ||
- | import org.json.JSONObject; | ||
- | import com.wbtech.ums.UmsAgent; | ||
- | import com.wbtech.ums.common.CommonUtil; | ||
- | import java.io.UnsupportedEncodingException; | ||
- | import java.net.URLDecoder; | ||
- | |||
- | public class SendMapping extends BroadcastReceiver { | ||
- | public static String NAME = "BroadcastReceiver2SendMapping"; | ||
- | boolean isGetCobubBroadcoast = false; | ||
- | boolean isGetHuaWeiBroadcoast = false; | ||
- | String serviceURL = "http://push.cobub.com/index.php?/api/huawei/postmapping"; | ||
- | |||
- | public SendMapping() { | ||
- | } | ||
- | @Override | ||
- | public void onReceive(Context context, Intent intent) { | ||
- | // TODO Auto-generated method stub | ||
- | Log.d(NAME,"SendMapping onReceive"); | ||
- | //注册 receiver | ||
- | // SendMapping receiver = new SendMapping(); | ||
- | // IntentFilter filter = new IntentFilter(); | ||
- | // filter.addAction("cobub.razor.message"); | ||
- | // filter.addAction("com.huawei.android.push.intent.REGISTRATION"); | ||
- | // registerReceiver(receiver, filter); | ||
- | String action = intent.getAction(); | ||
- | SharedPreferences sp= context.getSharedPreferences("cobub_huawei_sharepreference", 0); | ||
- | if(action.equals("cobub.razor.message")){ | ||
- | String deviceid = intent.getStringExtra("deviceid"); | ||
- | Log.d("postdata ", "get deviceid : "+deviceid); | ||
- | sp.edit().putString("deviceid", deviceid).commit(); | ||
- | isGetCobubBroadcoast = true; | ||
- | } | ||
- | if(action.equals("com.huawei.android.push.intent.REGISTRATION")){ | ||
- | String deviceToken; | ||
- | try { | ||
- | deviceToken = new String(intent.getByteArrayExtra("device_token"), "UTF-8"); | ||
- | sp.edit().putString("deviceToken", deviceToken).commit(); | ||
- | Log.d("postdata ", "get deviceToken : "+deviceToken); | ||
- | isGetHuaWeiBroadcoast = true; | ||
- | } catch (UnsupportedEncodingException e) { | ||
- | // TODO Auto-generated catch block | ||
- | e.printStackTrace(); | ||
- | } | ||
- | |||
- | } | ||
- | if(isGetCobubBroadcoast&& isGetHuaWeiBroadcoast){ | ||
- | final JSONObject obj = new JSONObject(); | ||
- | String deviceid = sp.getString("deviceid", ""); | ||
- | String deviceToken = sp.getString("deviceToken", ""); | ||
- | try { | ||
- | obj.put("deviceToken", deviceToken); | ||
- | obj.put("deviceid", deviceid); | ||
- | obj.put("app_key", CommonUtil.getAppKey(context)); | ||
- | } catch (JSONException e) { | ||
- | // TODO Auto-generated catch block | ||
- | e.printStackTrace(); | ||
- | } | ||
- | |||
- | Log.d("postdata ", "post deviceid and deviceToken"); | ||
- | new Thread(new Runnable() { | ||
- | |||
- | @Override | ||
- | public void run() { | ||
- | // TODO Auto-generated method stub | ||
- | post(serviceURL,obj.toString()); | ||
- | isGetCobubBroadcoast = false; | ||
- | isGetHuaWeiBroadcoast = false; | ||
- | } | ||
- | }).start(); | ||
- | } | ||
- | } | ||
- | public static int post(String url, String data) { | ||
- | String returnContent = ""; | ||
- | HttpClient httpclient = new DefaultHttpClient(); | ||
- | HttpPost httppost = new HttpPost(url); | ||
- | Log.d("postdata", "SMpost"+url+" "+data); | ||
- | try { | ||
- | StringEntity se = new StringEntity("content="+data, HTTP.UTF_8); | ||
- | se.setContentType("application/x-www-form-urlencoded"); | ||
- | httppost.setEntity(se); | ||
- | HttpResponse response = httpclient.execute(httppost); | ||
- | int status = response.getStatusLine().getStatusCode(); | ||
- | Log.d("postdata ", "status==="+status); | ||
- | String returnXML = EntityUtils.toString(response.getEntity()); | ||
- | returnContent = URLDecoder.decode(returnXML); | ||
- | switch (status) { | ||
- | case 200: | ||
- | { | ||
- | Log.d("postdata ", "status===200"); | ||
- | JSONObject obj = new JSONObject(returnContent); | ||
- | return obj.getInt("flag"); | ||
- | } | ||
- | default: | ||
- | Log.d("postdata ", "status="+status); | ||
- | break; | ||
- | } | ||
- | } catch (Exception e) { | ||
- | e.printStackTrace(); | ||
- | JSONObject jsonObject = new JSONObject(); | ||
- | try { | ||
- | jsonObject.put("err", e.toString()); | ||
- | returnContent = jsonObject.toString(); | ||
- | } catch (JSONException e1) { | ||
- | e1.printStackTrace(); | ||
- | } | ||
- | } | ||
- | Log.d("postdata ", "post deviceid error deviceToken"); | ||
- | return 0; | ||
- | } | ||
- | } | ||
- | </code> | ||
- | ==== 3.5. 初始化SDK ==== | ||
- | |||
- | 在您应用程序主Activity里导入 UmsAgent; | ||
- | <code> | ||
- | import com.wbtech.ums.UmsAgent;</code> | ||
- | 然后在您应用程序启动初始化阶段,初始化SDK: | ||
- | <code> | ||
- | UmsAgent.setBaseURL("http://192.168.1.104:80/dev07/razor/web/index.php?"); | ||
- | UmsAgent.update(this); | ||
- | UmsAgent.onError(this); | ||
- | UmsAgent.setDefaultReportPolicy(this, 1); | ||
- | UmsAgent.bindUserIdentifier(this, "xd.."); | ||
- | UmsAgent.postClientData(this); | ||
- | |||
- | //注册 receiver | ||
- | SendMapping receiver = new SendMapping(); | ||
- | IntentFilter filter = new IntentFilter(); | ||
- | filter.addAction("cobub.razor.message"); | ||
- | filter.addAction("com.huawei.android.push.intent.REGISTRATION"); | ||
- | registerReceiver(receiver, filter); | ||
- | </code> | ||
- | 该方法必须在Activity或Service类内调用。一般情况下,可以在Activity的onCreate()方法中调用 | ||
- | 为保证意外情况导致初始化失败,建议应用程序每次启动时都调用一次该初始化接口。 | ||
- | |||
- | ===== 4.使用华为推送服务 ===== | ||
- | |||
- | 进入Cobub Razor插件华为推送首页,插件会读取所有当前系统中的Android应用列表。 | ||
- | 在每个应用后都有推送操作,用户可以根据自身需要进行选择消息类型。 | ||
- | 进入推送详细界面,根据要求选择标签或者整个APP推送,填写相关内容并进行推送 | ||
- | |||
- | ===== 5.查看个推推送报告 ===== | ||
- | |||
- | 进入插件中的推送报告模块,用户可以查看用户推送的报告。注:系统只支持30日内推送报告查询服务。用户可通过右上角选择时间段。 | ||
- | 推送报告显示了所有激活的APP的推送报告,点击单个APP查看单个应用的推送报告。 | ||
- | |||
- | ===== 6.账户与结算 ===== | ||
- | |||
- | 华为推送插件按月结算,系统会每个月根据用户上个月的用户所有APP在线用户总数来进行结算。 | ||
- | 华为推送插件的收费是按照当月在线人数结算,与推送次数无关。 | ||
- | 为保证推送服务正常进行,请到个人中心账户充值模块预先充值。 | ||
- | |||
- | ===== 7.常见问题 ===== | ||
- | |||
- | 如何获取Package Name? | ||
- | 应用标识(Package Name),常以com开头 | ||
- | 方法: | ||
- | * 手机上打开你的应用 | ||
- | * 点击设置 ->; 应用程序 ->; 管理应用程序 ->; 正在运行,在列表中找到你的程序 | ||
- | * 在进程中可以看到应用的应用标识(Package Name) |