MIPushModule.java 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. package com.ichong.zzy.mipush;
  2. import android.app.ActivityManager;
  3. import android.content.Context;
  4. import android.os.Process;
  5. import android.util.Log;
  6. import com.facebook.react.bridge.*;
  7. import com.xiaomi.channel.commonutils.logger.LoggerInterface;
  8. import com.xiaomi.mipush.sdk.Logger;
  9. import com.xiaomi.mipush.sdk.MiPushClient;
  10. import java.util.List;
  11. import static com.facebook.react.common.ReactConstants.TAG;
  12. /**
  13. * Created by zzy on 16/8/11.
  14. * Date : 16/8/11 13:22
  15. */
  16. public class MIPushModule extends ReactContextBaseJavaModule {
  17. private Context mContext;
  18. public MIPushModule(ReactApplicationContext reactContext) {
  19. super(reactContext);
  20. mContext = getReactApplicationContext();
  21. }
  22. @Override
  23. public String getName() {
  24. return "MIPushModule";
  25. }
  26. @ReactMethod
  27. public void init(String appid, String appkey) {
  28. try {
  29. if (shouldInit(mContext)) {
  30. MiPushClient.registerPush(mContext, appid, appkey);
  31. }
  32. //打开Log
  33. LoggerInterface newLogger = new LoggerInterface() {
  34. @Override
  35. public void setTag(String tag) {
  36. // ignore
  37. }
  38. @Override
  39. public void log(String content, Throwable t) {
  40. Log.d(TAG, content, t);
  41. }
  42. @Override
  43. public void log(String content) {
  44. Log.d(TAG, content);
  45. }
  46. };
  47. Logger.setLogger(mContext, newLogger);
  48. } catch (Exception e) {
  49. e.printStackTrace();
  50. }
  51. }
  52. @ReactMethod
  53. public String getRegId() {
  54. return MiPushClient.getRegId(mContext);
  55. }
  56. @ReactMethod
  57. public void setAlias(String text) {
  58. MiPushClient.setAlias(mContext, text, null);
  59. }
  60. @ReactMethod
  61. public void unsetAlias(String text) {
  62. MiPushClient.unsetAlias(mContext, text, null);
  63. }
  64. @ReactMethod
  65. public void subscribe(String text) {
  66. MiPushClient.subscribe(mContext, text, null);
  67. }
  68. @ReactMethod
  69. public void unsubscribe(String text) {
  70. MiPushClient.unsubscribe(mContext, text, null);
  71. }
  72. @ReactMethod
  73. public void setAccount(String text) {
  74. MiPushClient.setUserAccount(mContext, text, null);
  75. }
  76. @ReactMethod
  77. public void unsetAccount(String text) {
  78. MiPushClient.setAlias(mContext, text, null);
  79. }
  80. @ReactMethod
  81. public void presentLocalNotification(ReadableMap notification) {
  82. }
  83. @ReactMethod
  84. public void getInitialNotification(
  85. Promise promise) {
  86. promise.resolve(MIPushHelper.parsePushMessage(MIPushPackage.sMiPushMessage));
  87. MIPushPackage.sMiPushMessage = null;
  88. }
  89. @ReactMethod
  90. public void clearNotification(int id) {
  91. MiPushClient.clearNotification(mContext, id);
  92. }
  93. @ReactMethod
  94. public void clearAllNotification() {
  95. MiPushClient.clearNotification(mContext);
  96. }
  97. private boolean shouldInit(Context context) {
  98. ActivityManager am = ((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE));
  99. List<ActivityManager.RunningAppProcessInfo> processInfos = am.getRunningAppProcesses();
  100. String mainProcessName = context.getPackageName();
  101. int myPid = Process.myPid();
  102. for (ActivityManager.RunningAppProcessInfo info : processInfos) {
  103. if (info.pid == myPid && mainProcessName.equals(info.processName)) {
  104. return true;
  105. }
  106. }
  107. return false;
  108. }
  109. }