admin
2021-12-03 f092e392700f68cdbfc545c9801f530d19fd39fa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import 'dart:convert';
import 'dart:io';
import 'dart:ui';
 
import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart';
import 'package:fluwx_no_pay/fluwx_no_pay.dart';
import 'package:flutter_baidu_mapapi_base/src/map/bmf_map_sdk.dart';
import 'package:flutter_baidu_mapapi_base/src/map/bmf_types.dart';
import 'package:flutter/services.dart';
import 'package:jpush_flutter/jpush_flutter.dart';
import 'package:locations/api/http.dart';
import 'package:locations/model/user/user_info.dart';
import 'package:locations/ui/main/location.dart';
import 'package:locations/ui/sos/sos.dart';
import 'package:locations/utils/pageutils.dart';
import 'package:locations/utils/user_util.dart';
 
import 'global.dart';
 
class PushUtil {
  static final JPush _jpush = JPush();
 
  static init(BuildContext context) async {
    try {
      _jpush.addEventHandler(
          onReceiveNotification: (Map<String, dynamic> message) async {
        print("flutter onReceiveNotification: $message");
      }, onOpenNotification: (Map<String, dynamic> message) async {
        var extra = message["extras"]["cn.jpush.android.EXTRA"];
        extra = jsonDecode(extra);
        //打开页面
        var type = extra["type"];
 
        if (type == "sos") {
          //SOS
          NavigatorUtil.navigateToNextPagePush(SOSPage(title: ""));
        } else if (type == "requestLocation") {
          //请求定位
          LocationPage.getLocationInvite(navigatorKey.currentState!.context);
        }
      }, onReceiveMessage: (Map<String, dynamic> message) async {
        print("flutter onReceiveMessage: ${message["message"]}");
      }, onReceiveNotificationAuthorization:
              (Map<String, dynamic> message) async {
        print("flutter onReceiveNotificationAuthorization: $message");
      });
    } on PlatformException {}
 
    _jpush.setup(
      appKey: "987d3d50f209994fa522d001", //你自己应用的 AppKey
      channel: "developer-default",
      production: false,
      debug: true,
    );
    _jpush.applyPushAuthority(
        NotificationSettingsIOS(sound: true, alert: true, badge: true));
 
    // Platform messages may fail, so we use a try/catch PlatformException.
    _jpush.getRegistrationID().then((rid) {
      print("flutter get registration id : $rid");
      UserApiUtil.uploadPushRegId(context, rid);
    });
 
    //如果登录了就设置用户的uid
    bool isLogin = await UserUtil.isLogin();
    if (isLogin) {
      UserInfo? user = await UserUtil.getUserInfo();
      await setAlias(user!.id!.toString());
    }
  }
 
  ///添加alias
  static Future setAlias(String alias) async {
    await _jpush.setAlias(alias);
  }
 
  //删除alias
  static Future removeAlias() async {
    await _jpush.deleteAlias();
  }
}