{"id":18868401,"url":"https://github.com/best-flutter/flutter_jpush","last_synced_at":"2025-04-14T14:31:52.428Z","repository":{"id":56829583,"uuid":"143105647","full_name":"best-flutter/flutter_jpush","owner":"best-flutter","description":"Flutter版本jpush","archived":false,"fork":false,"pushed_at":"2018-12-18T13:35:34.000Z","size":627,"stargazers_count":142,"open_issues_count":20,"forks_count":26,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-28T04:01:52.419Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/best-flutter.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-08-01T04:55:00.000Z","updated_at":"2023-08-09T09:51:04.000Z","dependencies_parsed_at":"2022-08-26T13:51:12.614Z","dependency_job_id":null,"html_url":"https://github.com/best-flutter/flutter_jpush","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/best-flutter%2Fflutter_jpush","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/best-flutter%2Fflutter_jpush/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/best-flutter%2Fflutter_jpush/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/best-flutter%2Fflutter_jpush/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/best-flutter","download_url":"https://codeload.github.com/best-flutter/flutter_jpush/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248897220,"owners_count":21179559,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T05:13:33.784Z","updated_at":"2025-04-14T14:31:51.322Z","avatar_url":"https://github.com/best-flutter.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://pub.flutter-io.cn/packages/flutter_jpush\"\u003e\n        \u003cimg src=\"https://img.shields.io/pub/v/flutter_jpush.svg\" alt=\"pub package\" /\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\n# flutter_jpush\n\nFlutter 版本 jpush（极光推送），经过热心网友帮助，终于开发完成，目前功能比较稳定，已经上到pub。\n\n\n\n## ROADMAP\n\n* [x] ios\n* [x] android\n* [x] 集成notification\n* [x] 集成message\n* [x] 集成alias\n* [x] 集成tags\n* [ ] 后台接口放出服务\n* [x] 可以运行的例子\n* [ ] 用户可相互自行推送\n\n\n\n\n# 准备工作\n\n## 申请key\n\n进入[这里](https://www.jiguang.cn/dev/#/app/create)申请key\n\n## ios 证书申请\n\n\u003e不熟悉怎么申请戳[这里](https://www.jianshu.com/p/ae11b893284b)\n\n\n# 集成\n\n\n## ios 集成\n\nios 修改 AppDelegate.m,新版本一行代码就可以集成了\n```\n增加\n#include \"FlutterJPushPlugin.h\"\n\n增加\n [self startupJPush:launchOptions appKey:@\"你的key\" channel:@\"你的渠道\" isProduction:是否生产版本];\n\n```\n\n全部的AppDelegate.m如下:\n\n```\n#include \"AppDelegate.h\"\n#include \"GeneratedPluginRegistrant.h\"\n#include \"FlutterJPushPlugin.h\"\n\n@implementation AppDelegate\n\n- (BOOL)application:(UIApplication *)application\n    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {\n\n   [self startupJPush:launchOptions appKey:@\"你的key\" channel:@\"你的渠道\" isProduction:是否生产版本];\n    [GeneratedPluginRegistrant registerWithRegistry:self];\n  // Override point for customization after application launch.\n  return [super application:application didFinishLaunchingWithOptions:launchOptions];\n}\n\n\n@end\n\n```\n\n## android 集成\n\n修改 `你的项目目录/android/app/build.gradle`\n\n在`android/defaultConfig`节点修改`manifestPlaceholders`,新增极光推送key配置\n\n```\nandroid {\n    .... 你的代码\n\n    defaultConfig {\n        .....\n        manifestPlaceholders = [\n               JPUSH_PKGNAME : applicationId,\n               JPUSH_APPKEY : \"你的极光推送key\", //JPush上注册的包名对应的appkey.\n               JPUSH_CHANNEL : \"你的推送渠道，如果不知道填写developer-default即可\",\n        ]\n\n    }\n\n```\n\n\n# API调用\n\n### 1、启动\n\n\ndart:\n\n在程序入口处做一下调用\n\n```\nvoid _startupJpush() async {\n    print(\"初始化jpush\");\n    await FlutterJPush.startup();\n    print(\"初始化jpush成功\");\n  }\n```\n\n### 2、获取设备唯一号\n\njpush在启动的时候会去连接自己的服务器，连接并注册成功之后会返回一个唯一的设备号(registrationId),\n\n有两种方法可以得到\n\n\n设置一个监听\n```\n\nFlutterJPush.addnetworkDidLoginListener((String registrationId) {\n      setState(() {\n        /// 用于推送\n        print(\"收到设备号:$registrationId\");\n        this.registrationId = registrationId;\n      });\n    });\n\n```\n\n或者主动去取\n\n```\nawait FlutterJPush.getRegistrationID()\n```\n\n主动去取有可能取出来是空的\n\n\n\n### 3、设置tag\n\n\n每一个设备可以对应多个tag\n\n```\n\n/// 设置tags\n FlutterJPush.setTags( [\"tag1\",\"tag2\" );\n \n/// 新增tag\n JPushResult result = await FlutterJPush.addTags([\"tag1\",\"tag2\"]);\n\n/// 获取所有tag\n  FlutterJPush.getAllTags();\n\n```\n\n### 4、设置和获取alias\n\n\nalias为别名，别名一般来说是惟一的。\n\n```\n\n/// 获取别名\nFlutterJPush.getAlias().then((JPushResult result) {\n      if (result.isOk) {\n        setState(() {\n          if (mounted) _text = r.result;\n        });\n      }\n    });\n\n/// 设置别名\n\n JPushResult result = await FlutterJPush.getAlias();\nif (result.isOk) {\n    //设置成功\n}\n            \n\n\n```\n\n\n### 5、收到通知提醒\n\n\n要处理两个监听，一个是收到了通知提醒，并出现在状态栏上面；一个是用户点击了状态栏上面的提醒，打开通知。\n\n```\n  FlutterJPush\n        .addReceiveNotificationListener((JPushNotification notification) {\n      setState(() {\n        /// 收到推送\n        print(\"收到推送提醒: $notification\");\n        notificationList.add(notification);\n      });\n    });\n\n    FlutterJPush\n        .addReceiveOpenNotificationListener((JPushNotification notification) {\n      setState(() {\n        print(\"打开了推送提醒: $notification\");\n\n        /// 打开了推送提醒\n        notificationList.add(notification);\n      });\n    });\n\n```\n\n\n### 6、收到自定义消息\n\n消息是服务端发送的一段代码,一般是json格式，app在收到消息之后，一般不直接做前台通知。\n\n设置收到自定义消息的监听\n\n\n```\n\n    FlutterJPush.addReceiveCustomMsgListener((JPushMessage msg) {\n      setState(() {\n        print(\"收到推送消息提醒: $msg\");\n\n        /// 打开了推送提醒\n        notificationList.add(msg);\n      });\n    });\n\n```\n\n\n#### 7、停止和继续接收消息\n```\n /// 停止推送，调用该方法后将不再受到推送\n  static Future\u003cvoid\u003e stopPush() async\n// 恢复推送功能，停止推送后，可调用该方法重新获得推送能力\n  static Future\u003cvoid\u003e resumePush() async\n```\n\n## 目前这个版本还存在编译问题，flutter官方也在积极解决\n真机运行报错couldn't find \"libflutter.so\"\n\n暂时的解决方法有：\n\nbuild.gradle设置\n\n```\nndk{\n     abiFilters 'armeabi', 'armeabi-v7a'//, 'arm64-v8a'\n}\n```\n\n或者可以增加编译选项：\n\n```\n--target-platform android-arm64 或者 --target-platform android-arm\n```\n\n\n## 还有疑问的话可以发issue或者加qq群854192563交流\n\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbest-flutter%2Fflutter_jpush","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbest-flutter%2Fflutter_jpush","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbest-flutter%2Fflutter_jpush/lists"}