peng 2 gadi atpakaļ
vecāks
revīzija
a2ed05ad1d

+ 4 - 0
AnsjerPush/cn_config/cn_formal_config.py

@@ -169,3 +169,7 @@ APNS_CONFIG = {
         'pem_path': 'AnsjerPush/file/apns_pem/commissionf.pem',
     }
 }
+
+XMPUSH_CONFIG = {
+    'com.ansjer.zccloud_ab': 'fXAdAwGDum3FKgQtAiW9hg=='
+}

+ 5 - 0
AnsjerPush/dev_config/local_config.py

@@ -150,5 +150,10 @@ APNS_CONFIG = {
         'pem_path': 'AnsjerPush/file/apns_pem/accloud-dev.pem',
     }
 }
+
+XMPUSH_CONFIG = {
+    'com.ansjer.zccloud_ab': 'fXAdAwGDum3FKgQtAiW9hg=='
+}
+
 APNS_MODE = 'dev'
 REDIS_ADDRESS = '127.0.0.1'

+ 4 - 0
AnsjerPush/eur_config/eur_formal_config.py

@@ -169,3 +169,7 @@ APNS_CONFIG = {
         'pem_path': 'AnsjerPush/file/apns_pem/commissionf.pem',
     }
 }
+
+XMPUSH_CONFIG = {
+    'com.ansjer.zccloud_ab': 'fXAdAwGDum3FKgQtAiW9hg=='
+}

+ 4 - 0
AnsjerPush/test_config/test_config.py

@@ -146,3 +146,7 @@ APNS_CONFIG = {
         'pem_path': 'AnsjerPush/file/apns_pem/commissionf-dev.pem',
     }
 }
+
+XMPUSH_CONFIG = {
+    'com.ansjer.zccloud_ab': 'fXAdAwGDum3FKgQtAiW9hg=='
+}

+ 4 - 0
AnsjerPush/us_config/formal_config.py

@@ -169,3 +169,7 @@ APNS_CONFIG = {
         'pem_path': 'AnsjerPush/file/apns_pem/commissionf.pem',
     }
 }
+
+XMPUSH_CONFIG = {
+    'com.ansjer.zccloud_ab': 'fXAdAwGDum3FKgQtAiW9hg=='
+}

+ 2 - 2
Model/models.py

@@ -1172,7 +1172,7 @@ class UidPushModel(models.Model):
     uid_set = models.ForeignKey(UidSetModel, to_field='id', on_delete=models.CASCADE)
     appBundleId = models.CharField(blank=True, max_length=32, verbose_name=u'appID')
     app_type = models.IntegerField(default=0, verbose_name=u'app类型 1:ios,2:安卓')
-    push_type = models.IntegerField(default=0, verbose_name=u'推送类型')  # 0,apns 1,安卓gcm 2,极光
+    push_type = models.IntegerField(default=0, verbose_name=u'推送类型')  # 0: apns, 1: 安卓gcm, 2: 极光, 3:华为, 4:小米, 5:vivo, 6:oppo, 7:魅族
     token_val = models.CharField(default='', max_length=160, verbose_name=u'设备验证令牌')
     m_code = models.CharField(default='', max_length=64, verbose_name='手机唯一标识')
     addTime = models.IntegerField(verbose_name='添加时间', default=0)
@@ -1192,7 +1192,7 @@ class GatewayPush(models.Model):
     user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name=u'用户id')
     app_bundle_id = models.CharField(default='', max_length=32, verbose_name=u'app包id')
     app_type = models.IntegerField(default=0, verbose_name=u'app类型')  # 1: ios, 2: 安卓
-    push_type = models.IntegerField(default=0, verbose_name=u'推送类型')  # 0: apns, 1: 安卓gcm, 2: 极光
+    push_type = models.IntegerField(default=0, verbose_name=u'推送类型')  # 0: apns, 1: 安卓gcm, 2: 极光, 3:华为, 4:小米, 5:vivo, 6:oppo, 7:魅族
     token_val = models.CharField(default='', max_length=500, verbose_name=u'设备验证令牌')
     m_code = models.CharField(default='', max_length=64, db_index=True, verbose_name='手机唯一标识')
     lang = models.CharField(default='en', max_length=8, verbose_name='推送语言')

+ 41 - 1
Service/PushService.py

@@ -10,9 +10,10 @@ import os
 
 import apns2
 import jpush
+import requests
 from pyfcm import FCMNotification
 
-from AnsjerPush.config import APP_BUNDLE_DICT, APNS_MODE, BASE_DIR, APNS_CONFIG, FCM_CONFIG, JPUSH_CONFIG
+from AnsjerPush.config import APP_BUNDLE_DICT, APNS_MODE, BASE_DIR, APNS_CONFIG, FCM_CONFIG, JPUSH_CONFIG, XMPUSH_CONFIG
 from Service.CommonService import CommonService
 
 
@@ -200,3 +201,42 @@ class PushObject:
             assert res.status_code == 200
         except Exception as e:
             return repr(e)
+
+    @staticmethod
+    def android_xmpush(nickname, app_bundle_id, token_val, n_time, event_type, msg_title, msg_text,
+                       uid='', channel='1', image=''):
+        """
+        android 小米 推送
+        @param nickname: 设备昵称
+        @param app_bundle_id: app包id
+        @param token_val: 推送token
+        @param n_time: 当前时间
+        @param event_type: 事件类型
+        @param msg_title: 推送标题
+        @param msg_text: 推送内容
+        @return: None
+        """
+        try:
+            url = 'https://api.xmpush.xiaomi.com/v3/message/regid'
+            app_secret = XMPUSH_CONFIG[app_bundle_id]
+            payload = {'alert': 'Motion', 'msg': '', 'sound': 'sound.aif', 'zpush': '1',
+                       'received_at': n_time, 'event_time': n_time, 'event_type': event_type, 'nickname': nickname,
+                       'uid': uid, 'channel': channel
+                       }
+            data = {
+                'title': msg_title,
+                'description': msg_text,
+                'payload': payload,
+                'restricted_package_name': app_bundle_id,
+                'registration_id': token_val,
+            }
+            if image:
+                data['extra.notification_style_type'] = 2
+                data['extra.notification_bigPic_uri'] = image
+            headers = {
+                'Authorization': 'key={}'.format(app_secret)
+            }
+            response = requests.post(url, data=data, headers=headers)
+            assert response.status_code == 200
+        except Exception as e:
+            return repr(e)